HOW - BFF 服务实践系列(一)

目录

  • 一、BFF 介绍
    • 1.1 BFF 的概念
    • 1.2 为什么需要 BFF
    • 1.3 举例说明
  • 二、适用于Web前端的BFF应该提供哪些能力
    • 2.1 接口聚合(重要)
    • 2.2 简化和优化的API
    • 2.3 安全和身份验证(重要)
    • 2.4 缓存机制
    • 2.5 错误处理和重试机制
    • 2.6 数据格式转换
    • 2.7 日志记录和监控(重要)
    • 2.8 安全策略实施
    • 2.9 API 版本管理
    • 2.10 性能优化
    • 2.11 配置管理
    • 实例举例

一、BFF 介绍

BFF 是“Backend for Frontend”的缩写,即服务于前端的后端,是一种软件架构模式,专门为前端应用(如Web应用或移动应用)提供后端服务,或者说是为了让后端 API 满足不同的前端使用场景而演进出来的一种模式。

这种模式由Sam Newman在他的书《Building Microservices》中首次提出,旨在解决前端应用和后端服务之间的特定需求和问题。

1.1 BFF 的概念

BFF 是一个专门为单个前端应用或一组前端应用定制的后端服务。这意味着每个前端应用(或一组类似的前端应用)可以有自己独特的后端服务,这个服务可以专注于满足该应用的具体需求。

BFF 的主要职责包括:

  1. 聚合数据:从多个后端服务获取数据并整合,以便前端能够一次性获取所有需要的信息。
  2. 简化接口:为前端应用提供简化和优化的API,减少前端处理复杂业务逻辑的需求。
  3. 适配前端需求:根据不同前端应用的需求,提供特定的接口和功能。例如,移动应用和Web应用可能需要不同的数据格式或响应时间。
  4. 安全性和验证:在前端和后端服务之间添加一层额外的安全和身份验证机制。

1.2 为什么需要 BFF

在我们日常的业务开发中,后端同学在定义微服务接口时,为了保证接口的通用性,往往不希望把接口设计为专门供某个页面或系统使用。

例如,Web、APP、小程序都需要展示用户的订单x信息,但移动端希望显示订单基本信息,Web端希望显示订单信息和用户信息,APP希望显示订单信息和推荐数据。这时候如果后端提供一个接口同时服务于三端,有可能会造成用户个人信息泄漏,多余的信息也会造成数据冗余或拖慢响应。同时,这个后端接口在后端微服务侧,其实可能需要对接其他微服务才能得到完整的数据,有一定的强耦合。

因此,更好的方案应该是在微服务之上,构建一个或多个新的服务,由这些服务组装数据,提供最终的接口给前端同学使用。

另外,各个系统也都需要接入SSO,需要处理接口鉴权,这些都可以通过一个BFF来统一提供支持。

请添加图片描述
具体来说:

  1. 前端需求多样化:不同类型的前端应用(如Web、iOS、Android)通常有不同的数据和功能需求。BFF 可以为每个前端定制服务,提供最合适的接口和数据格式。
  2. 降低前端复杂度:通过在BFF层处理业务逻辑和数据聚合,可以简化前端代码,使其更加专注于UI和用户体验。
  3. 优化性能:BFF 可以通过减少网络请求、批量处理数据和缓存机制来提升前端应用的性能。
  4. 解耦前后端开发:前端和后端可以独立开发和部署。BFF 作为中间层,可以更容易地适应后端服务的变化,而无需频繁修改前端代码。
  5. 安全性增强:BFF 可以集中管理和实施安全策略,如身份验证、授权和日志记录,提升整体系统的安全性。

1.3 举例说明

假设一个电子商务平台有Web应用和移动应用两种前端,每个前端都有不同的需求。通过引入BFF,可以为Web应用和移动应用分别创建两个BFF:

  • Web BFF:为Web应用提供优化的API接口,可能需要较为详细的产品信息、用户评论等。
  • Mobile BFF:为移动应用提供轻量级的API接口,可能需要简化的数据格式、更快的响应时间,以及更少的网络流量消耗。

通过这种方式,前端应用和后端服务之间的通信更加高效,并且每个前端应用的开发团队可以更加专注于自己的领域。

总结来说,BFF 是一种通过定制化后端服务来满足不同前端应用需求的架构模式,能够提升开发效率、优化性能、增强安全性,并简化系统维护。

二、适用于Web前端的BFF应该提供哪些能力

适用于Web前端的BFF(Backend for Frontend)应该提供以下关键能力,以有效满足Web应用的需求:

2.1 接口聚合(重要)

BFF 应该能够从多个后端服务获取数据,并将这些数据整合成单个响应,以减少前端的请求次数和复杂度。

2.2 简化和优化的API

BFF 应该为Web前端提供简化和优化的API接口,屏蔽复杂的后端逻辑,提供易于使用且高效的数据接口。

2.3 安全和身份验证(重要)

BFF 应该具备身份验证和授权功能,确保只有经过授权的用户才能访问特定资源。此外,还应提供保护敏感数据的措施,如数据加密和防护机制。

2.4 缓存机制

为了提升性能,BFF 应该实现有效的缓存机制,缓存常用数据以减少后端请求次数和响应时间。

2.5 错误处理和重试机制

BFF 应该具备健壮的错误处理机制,能够处理后端服务故障或网络问题,并根据需要进行重试或提供降级服务。

2.6 数据格式转换

BFF 应该能够根据Web前端的需求,对数据格式进行转换。例如,将后端返回的XML数据转换为前端需要的JSON格式。

2.7 日志记录和监控(重要)

BFF 应该提供详细的日志记录和监控功能,以便开发和运维团队可以追踪请求、检测问题并进行性能分析。

2.8 安全策略实施

BFF 应该能够实施各种安全策略,包括防止跨站请求伪造(CSRF)、跨站脚本攻击(XSS)等安全威胁。

2.9 API 版本管理

BFF 应该支持API版本管理,以便在后端服务升级或更改时,能够同时支持多个版本的API,确保前端应用的兼容性。

2.10 性能优化

BFF 应该致力于性能优化,包括数据压缩、减少冗余数据传输、批量请求处理等,提高Web前端的响应速度。

2.11 配置管理

BFF 应该支持灵活的配置管理,能够根据不同的环境(如开发、测试、生产)进行配置调整,确保各环境下的服务一致性和稳定性。

实例举例

假设一个电商网站的Web前端需要展示用户订单历史和推荐产品信息,BFF可以提供以下能力:

  • 数据聚合:从订单服务和推荐服务获取数据,整合成单个响应。
  • 简化API:提供一个简单的API端点,例如 /user/dashboard,返回所需的所有数据。
  • 安全性:在访问数据前进行用户身份验证,确保只有登录用户才能查看订单信息。
  • 缓存:缓存用户订单历史以减少频繁访问后端服务。
  • 错误处理:如果推荐服务不可用,提供降级服务,返回默认推荐产品列表。
  • 数据转换:将订单服务返回的内部数据格式转换为Web前端易于处理的JSON格式。
  • 日志和监控:记录每个请求的详细信息,并监控BFF的性能和可用性。

通过这些能力,BFF不仅能提高Web前端的开发效率,还能确保系统的性能和安全性,使用户体验更加流畅和可靠。

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

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

相关文章

【算法】贪心算法简介

贪心算法概述 目录 1.贪心算法概念2.贪心算法特点3.贪心算法学习 1.贪心算法概念 贪心算法是一种 “思想” ,即解决问题时从 “局部最优” 从而达到 “全局最优” 的效果。 ①把解决问题的过程分为若干步②解决每一步时候,都选择当前最优解(不关注全局…

RDD实战:排序算子 - sortBy()

在本实战案例中,我们将使用Apache Spark的sortBy()算子来对一个包含学生信息的RDD进行排序操作。 排序规则如下: 首先按照性别升序排列。在性别相同的情况下,按照年龄降序排列。 步骤1:创建学生信息列表 首先,我们创…

基于51单片机和NRF24L01的无线温度监控设计

一、设计功能 由单片机、温度传感器、无线模块NRF24L01以及液晶显示器等构成高精度远 程无线温度监测系统。 温度显示精确到小数点后一位。 按键设定过温值,过温在液晶屏提示。 系统设计 三、器件选择3.1温度信号采集模块 传统的温度检测大多以热敏电阻为传感器&a…

【C++】list的使用(上)

🔥个人主页: Forcible Bug Maker 🔥专栏: STL || C 目录 前言🌈关于list🔥默认成员函数构造函数(constructor)析构函数(destructor)赋值运算符重载 &#x1…

五分钟“手撕”栈

实现代码放开头,供大家学习与查阅 目录 一、实现代码 二、什么是栈 三、栈的常见操作 底层实现是链表。 入栈 出栈 四、Stack的使用 五、栈的习题 第一题 第二题 第三题 第四题 第五题 第六题 第七题 六、栈、虚拟机栈、栈帧的区别 目录 一、…

Request

一、Request介绍 在计算机网络中,"Request"(请求)通常指的是客户端向服务器发送的请求消息,用于获取特定资源或执行特定操作。在Web开发中,"Request"通常指的是HTTP请求,用于客户端与服…

信号稳定,性能卓越!德思特礁鲨系列MiMo天线正式发布!

作者介绍 礁鲨系列天线,以其独特的外观设计和强大的性能,成为德思特Panorama智能天线家族的最新成员。这款天线不仅稳定提供5G、WIFI和GNSS信号,更能在各类复杂环境中展现出卓越的性能。它的设计灵感来源于海洋中的礁鲨,象征着力量…

内存管理【C++】

内存分布 C中的内存区域主要有以下5种 栈(堆栈):存放非静态局部变量/函数参数/函数返回值等等,栈是向下增长的【地址越高越先被使用】。栈区内存的开辟和销毁由系统自动执行 堆:用于程序运行时动态内存分配&#xff…

电脑丢失api-ms-win-crt-runtime-l1-1-0.dll的多种修复方法

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“api-ms-win-crt-runtime-l1-1-0.dll丢失”。这个错误通常发生在Windows操作系统中,它表示一个动态链接库文件丢失或损坏。这个问题可能会导致某些应用程序无法正常运行&#xf…

大型企业用什么文件加密软件,五款适合企业的文件加密软件

大型企业在选择文件加密软件时,通常会倾向于那些能够提供全面数据保护、具有高度可定制性、易于管理且能适应复杂组织结构的解决方案。以下是一些适合大型企业使用的文件加密软件: 1.域智盾软件: 作为一款企业级文件加密软件,支持…

曲面细分技术在AI去衣中的创新应用

引言: 随着人工智能技术的飞速发展,其在图像处理领域的应用日益广泛。其中,AI去衣技术因其独特的应用场景而备受瞩目。在这一技术的发展过程中,曲面细分技术发挥了至关重要的作用。本文将深入探讨曲面细分技术在AI去衣中的作用及其…

C语言-单精度和双精度浮点型

文章目录 一、遇到的问题二、解决方案三、问题根因float和double的区别: 总结-浮点数 一、遇到的问题 将NXP项目的代码移植到RH850F1K的项目上时,程序运行异常: u16Volt (uint16)((double)u16ADVal * (double)6.3) 执行到这一行程序就跑飞了…

vue3可以快速简单的操作dom元素了

再也不需要用document.getElementById("myElement")的这种方式来对dom元素进行操作了 我们需要使用模板引用——也就是指向模板中一个 DOM 元素的 ref。我们需要通过这个特殊的 ref attribute 来实现模板引用&#xff1a; <script setup> import { ref, onMo…

wafw00f一键检测目标防火墙信息(KALI工具系列十五)

目录 1、KALI LINUX简介 2、wafw00f工具简介 3、在KALI中使用lbd 3.1 查看可检测的防火墙对象 3.2 目标防火墙种类检测 3.3 目标防火墙详细信息检测 3.4 将检查结果输出 4、总结 1、KALI LINUX简介 Kali Linux 是一个功能强大、多才多艺的 Linux 发行版&#xff0c;广…

最好的电脑数据恢复软件是什么

由于硬件故障、恶意软件攻击或意外删除而丢失文件可能会造成巨大压力。数据丢失会扰乱日常运营&#xff0c;造成宝贵的业务时间和资源损失。在这些情况下&#xff0c;数据恢复软件是检索丢失或损坏数据的最简单方法。 数据恢复软件何时起作用&#xff1f; 对于 Windows 数据恢…

vue3组件传值---vue组件通过属性,事件和provide,inject进行传值

通过属性传值&#xff08;父传子&#xff09; vue的组件具有props自建属性&#xff08;自定义名称&#xff0c;类似于class&#xff0c;id的属性&#xff09;&#xff0c;通过这个属性&#xff0c;父组件可以向子组件传递参数&#xff0c;从而实现组件之间的信息传递&#xff0…

CSDN UI 2024.06.01

当我们的栏目很多的时候&#xff0c;通过【置顶】来排列顺序是很麻烦的&#xff0c;应该加一列&#xff0c;设置优先级别。太难用了 或者加两个按钮【上移】 【下移】

极验4点选逆向 JS逆向分析 最新版验证码

目录 声明&#xff01; 一、请求流程分析 二、加密参数w与payload 三、参数w生成位置 四、结果展示&#xff1a; 原创文章&#xff0c;请勿转载&#xff01; 本文内容仅限于安全研究&#xff0c;不公开具体源码。维护网络安全&#xff0c;人人有责。 声明&#xff01; 本文章…

升级笔记本

笔记本型号参数&#xff1a;Acer V5-573G CPU:I5 4200U 1.6GHz 最高2.6GHz 双核四线程 内存&#xff1a;4G 1600M DDR3L SO-DIMM 显卡&#xff1a;独立显卡NVIDIA GeForce GT 750M 硬盘&#xff1a;1T 5400转 屏幕&#xff1a;15.6英寸 1920*1080 【Acer V5-573G-54204G1…

WIFI 万[néng]钥匙 v5.0.10/v4.9.80 SVIP版!

WiFi Master Key v5.0.10/v4.9.80 WIFI万[Nng]钥匙APP是一款专业的网络连接工具&#xff0c;设计宗旨在于为用户提供方便快捷的WiFi接入方案。本应用集成了覆盖全国的大量免费WiFi热点信息&#xff0c;确保用户能够在不同地区快速而稳定地连接到互联网。此外&#xff0c;该应用…