bff层解决了什么痛点

bff层 -- 服务于前端的后端

什么是bff?

Backend For Frontend(服务于前端的后端),也就是服务器设计API的时候会考虑前端的使用,并在服务端直接进行业务逻辑的处理,又称为用户体验适配器。BFF只是一种逻辑分层,不是一种技术。

BFF解决了什么问题

如下图,在我们的前端页面时常存在,某个页面需要向backendA,backend B以及backend C发送请求,不同服务的返回值用于渲染页面中不同的component,即一个页面会存在很多请求的场景。

此时,每次访问该页面都需要发送 3 个请求。同时为了保障 Android,iOS,以及 Web 端的不同需求,需要为不同的平台写不同的 API 接口,而每当值发生一些变化时,需要 Android,iOS,Web 做出修改。与此同时,当我们需要对一个字符串进行处理,如限定 140 个字符的时候,我们需要在每一个客户端(Android,iOS,Web)分别实现一遍,这样的代价显然相当大。

于是,我们就需要 BFF 作为中间件。在这个中间件上我们将做一些业务逻辑处理:

而当我们有了 BFF 这一层时,我们就不需要考虑系统后端的迁移。后端发生的变化都可以在 BFF 层做一些响应的修改。

例如,我们加入 BFF 层,原本每次访问发送 3 请求页面,变成一个请求。

使用 BFF 的正确姿势

多端应用

我们在设计 API 时会考虑到不同设备的需求,也就是为不同的设备提供不同的 API,虽然它们可能是实现相同的功能,但因为不同设备的特殊性,它们对服务端的 API 访问也各有其特点,需要区别处理。

服务聚合

随着微服务的兴起,原本在同一个进程内运行的业务流程被拆分到了不同的服务中。这在增加业务灵活性的同时,也让前端的调用变得更复杂。BFF 的出现为前端应用提供了一个对业务服务调用的聚合点,它屏蔽了复杂的服务调用链,让前端可以聚焦在所需要的数据上,而不用关注底层提供这些数据的服务。

实战中的玩法

访问控制

例如,服务中的权限控制,将所有服务中的权限控制集中在BFF层,使下层服务更加纯粹和独立。

应用缓存

项目中时常存在一些需要缓存的临时数据,此时BFF作为业务的汇聚点,距离用户请求最近,将该缓存操作放在BFF层。

第三方入口

在业务中需要与第三交互的时候,将该交互放在BFF层,这样可以只暴露必要信息给第三方,从而便于控制第三方的访问。

可以参考:

Sam Newman - Backends For Frontends

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/133875.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea连接redis

连接Redis通常需要使用编程语言提供的Redis客户端库。以下是连接Redis的一般步骤,以Python为例: 安装Redis客户端库:首先,您需要安装适用于您选择的编程语言的Redis客户端库。对于Python,您可以使用redis-py库&#xf…

【hcie-cloud】【2】华为云Stack解决方案介绍、缩略语整理 【下】

文章目录 华为文档获取方式、云计算发展背景、坚实基座华为云Stack,政企只能升级首选智能数据湖仓一体,让业务洞见更准,价值兑现更快MRS:一个架构可构建三种数据湖,业务场景更丰富离线数据湖:提供云原生、湖…

目标检测网络系列——YOLO V4

文章目录 目标检测技术总结两种优化方向Bag of freebiesBag of specialsYOLO4网络结构网络架构(architecture)的选择基础网络结构的选择网络"插件"的选择。BoF和BoS的选择(Selection of BoF and BoS)YOLO4的其他改进点对比实验不同的特征(数据增强方法)之间的对比det…

服务器感染了.locked勒索病毒,如何确保数据文件完整恢复?

引言: 网络安全威胁的不断演变使得恶意软件如.locked勒索病毒成为当今数字时代的一大挑战。.locked勒索病毒能够加密您的文件,然后要求支付赎金以解锁它们。本文将深入探讨.locked勒索病毒的特点,以及如何应对感染,以及预防这种类…

游戏中UI的性能优化手段

UI方面有许多性能优化的技术或手段,以下是其中一些常见的例子: 惰性加载:对于长列表、大图等需要加载大量数据和资源的组件,可以采用惰性加载的方式,即在用户需要时再进行加载。这样可以减少初始加载时间和内存占用&am…

3款免费又好用的 Docker 可视化管理工具

前言 Docker提供了命令行工具(Docker CLI)来管理Docker容器、镜像、网络和数据卷等Docker组件。我们也可以使用可视化管理工具来更方便地查看和管理Docker容器、镜像、网络和数据卷等Docker组件。今天我们来介绍3款免费且好用的 Docker 可视化管理工具。…

网络安全深入学习第八课——反向代理(工具:frp)

文章目录 一、实验环境二、实验要求三、开始模拟1、攻击机配置frp文件2、攻击拿下跳板机,并且上传frpc.ini、frpc.exe、frpc_full.ini文件3、把frps.ini、、frps.exe、frps_full.ini文件放到VPS主机上4、VPS机开启frp5、跳板机开启frp6、验证 一、实验环境 攻击机&…

云尘 命令执行系列

第一题 system <?php include "flag.php";if (isset($_POST[cmd])) {system($_POST[cmd]); }show_source(__FILE__);代码如上 system($_POST[cmd]); POST请求发送一个名为 cmd 的参数&#xff0c;然后将该参数的值传递给系统命令执行函数 system()&#xff0c…

【异常错误】torch.cuda.is_available()一直是false

两个项目用的一个conda环境&#xff0c;但是torch.cuda.is_available()在一个项目中一直是false&#xff0c;而在另外一个项目中是true 我服了&#xff0c;不知道咋回事 解决&#xff1a; 只需要在代码前面加上&#xff1a; torch.cuda.current_device() torch.cuda._initial…

NVIDIA大模型平台软件全家桶开启云智能第二曲线

第二曲线由英国管理思想大师查尔斯汉迪提出&#xff0c;讲的是在企业第一曲线达到巅峰的时候&#xff0c;找到驱动企业二次腾飞的第二曲线。而如果企业想实现基业长青&#xff0c;就需要通过主动式破局式创新&#xff0c;跨越到第二曲线中。对于当下的云智能产业以及基于云智能…

【电源专题】PSE如何与PD握手协商功率等级?

在文章:【电源专题】POE连接方式与功率等级划分 中我们讲到POE协议对不同的PD设备进行划分,比如根据不同的供电标准又可以细分成好几种不同的类型(Type1~Type4)和功率等级。 那么有这么多功率等级,PSE怎么知道PD是哪种类型呢?怎么能进行握手协商呢? 下图为PSE与PD设备在…

python 之生成器表达式,以及与列表推导式的区别

文章目录 生成器表达式基本结构示例生成一个简单的生成器遍历生成器并获取值使用条件过滤 优点 生成器表达式与列表推导式的区别1. 返回类型2. 生成方式3. 内存占用4. 访问方式示例总结 生成器表达式是一种在 Python 中用来创建生成器的高效方法。生成器表达式和列表推导式类似…

jstat虚拟机统计信息监控工具

jstat虚拟机统计信息监控工具 1、jstat&#xff08;JVM Statistics Monitorning Tool&#xff09; 用于监控虚拟机各种运行状态信息的命令行工具。 它可以显示本地或远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据&#xff0c;它是运行期定位虚拟机 性能问题…

合肥工业大学操作系统实验6

✅作者简介:CSDN内容合伙人、信息安全专业在校大学生🏆 🔥系列专栏 :hfut实验课设 📃新人博主 :欢迎点赞收藏关注,会回访! 💬舞台再大,你不上台,永远是个观众。平台再好,你不参与,永远是局外人。能力再大,你不行动,只能看别人成功!没有人会关心你付出过多少…

数据结构——基于顺序表实现通讯录

一、. 基于动态顺序表实现通讯录 1.1 功能要求 1&#xff09;⾄少能够存储100个⼈的通讯信息 2&#xff09;能够保存⽤⼾信息&#xff1a;名字、性别、年龄、电话、地址等 3&#xff09;增加联系⼈信息 4&#xff09;删除指定联系⼈ 5&#xff09;查找制定联系⼈ 6&…

ES 未分片 导致集群状态飘红

GET /_cluster/allocation/explain ALLOCATION_FAILED&#xff1a;由于分片分配失败而未分配。 CLUSTER_RECOVERED&#xff1a;由于集群恢复而未分配。 DANGLING_INDEX_IMPORTED&#xff1a;由于导入了悬空索引导致未分配。 EXISTING_INDEX_RESTORED&#xff1a;由于恢复为已关…

vuepress 打包后左侧菜单链接 404 问题解决办法

背景 上周看到一本开源书 《深入架构原理与实践》&#xff0c;是基于 vuepress 搭建的&#xff0c;下载了源码&#xff0c;本地部署了一下&#xff0c;本文记录如何打包该源码遇到的路径问题及思考。 结论&#xff1a; vuepress 插件的 sideBar 的菜单路径默认是相对 / 的&am…

FPGA高端项目:图像缩放+GTP+UDP架构,高速接口以太网视频传输,提供2套工程源码加QT上位机源码和技术支持

目录 1、前言免责声明本项目特点 2、相关方案推荐我这里已有的 GT 高速接口解决方案我这里已有的以太网方案我这里已有的图像处理方案 3、设计思路框架设计框图视频源选择ADV7611 解码芯片配置及采集动态彩条跨时钟FIFO图像缩放模块详解设计框图代码框图2种插值算法的整合与选择…

【Java 进阶篇】MVC 模式

欢迎来到本篇详细解释 MVC&#xff08;Model-View-Controller&#xff09;设计模式的教程。MVC 是一种用于组织应用程序的设计模式&#xff0c;有助于将应用程序分成不同的部分&#xff0c;以提高代码的可维护性和可扩展性。在本文中&#xff0c;我们将深入研究 MVC 模式&#…

Vue的详细知识点梳理

Vue.js是一个渐进式的JavaScript框架,被设计用来构建用户界面。 Vue.js的详细知识点梳理: Vue.js的基本特性:包括响应式数据绑定、组件化、模板语法等。 Vue的生命周期:包括创建前、创建、挂载、更新、销毁等阶段,每个阶段都有相应的钩子函数可以使用。 Vue的指令:包括…