云架构(五)BBF模式

BFF模式(Backends for Frontends pattern)-  

https://learn.microsoft.com/en-us/azure/architecture/patterns/backends-for-frontends。

创建单独的后台服务用以提供给特定的前端或者接口。当你希望避免为多个接口定制单独的后台时,此模式非常有用。这个模式最开始由Sam Newman提出。

背景和问题

  1. 应用程序最初可能针对web、UI。一般来说后端服务是和前端并行开发的,它提供该前端所需的功能。随着应用程序用户群的增长,开发了必须与相同后端交互的移动应用程序。后端服务成为通用后端,同时满足桌面和移动接口的需求。
  2. 但是在屏幕大小、性能和显示限制方面,移动设备的功能与桌面浏览器有很大的不同。因此,对移动应用程序后端的需求不同于web、UI。
  3. 这些差异导致了后端需求的竞争。后端需要定期进行重大更改,以同时服务于web、UI和移动应用程序。通常,独立的接口团队负责每个前端,导致后端成为开发过程中的瓶颈。冲突的更新需求,以及保持服务在两个前端工作的需要,可能会导致在单个部署资源上花费大量精力。
  4. 当开发活动集中于后端服务时,可能会创建一个单独的团队来管理和维护后端。最终这会导致接口和后端开发团队之间的脱节,给后端团队带来负担,以平衡不同前端团队的需求。当一个接口团队需要对后端进行更改时,必须先与其他接口团队验证这些更改,然后才能将其集成到后端。

解决办法 

  1. 为每个用户接口创建一个后端。微调每个后端的行为和性能,以最好地匹配前端环境的需求,而不必担心影响其他前端体验。
  2. 由于每个后端都特定于一个接口,因此可以针对该接口进行优化。因此,它将比试图满足所有接口需求的通用后端更小、更不复杂,并且可能更快。每个接口团队都有自主权来控制他们自己的后端,而不依赖于集中的后端开发团队。这使接口团队在语言选择、发布节奏、工作负载优先级和后端特性集成方面具有灵活性。
  3. 关于它更多的信息,可以访问:https://samnewman.io/patterns/architectural/bff/

问题和考虑

  1. 考虑由多少个后端要部署。
  2. 如果不同的接口(例如移动客户端)将发出相同的请求,请考虑是否有必要为每个接口实现一个后端,还是单个后端就足够了。
  3. 在实现此模式时,不同服务的代码复制极有可能发生。
  4. 以前端为中心的后端服务应该只包含特定于客户端的逻辑和行为。一般业务逻辑和其他全局特性应该在应用程序的其他地方进行管理。
  5. 考虑一下这种模式如何反映在开发团队的职责中。
  6. 考虑一下实现这个模式需要多长时间。当您继续支持现有的通用后端时,构建新后端的工作是否会带来技术债务?

什么时候使用 

  1. 共享的或通用的后端服务必须用大量的开发开销来维护。
  2. 你需要针对特定客户端接口的需求优化后端。
  3. 对通用后端进行定制以适应多个接口。
  4. 某个编程语言更适合特定用户接口的后端,不是所有用户接口。

不适用 

  1. 当接口发送相同或相似的请求给后台。
  2. 当时只有一个接口与后台交互时。

相关 

  1. Gateway Aggregation pattern
  2. Gateway Offloading pattern
  3. Gateway Routing pattern 

 欢迎大家留言沟通 

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

隋总分享:Temu选品师算不算是蓝海项目?

在当今日新月异的互联网经济浪潮中,跨境电商正成为一股不可忽视的力量。最近,网红隋总对Temu选品师这一职业进行了深入介绍,引发了广泛关注。那么,Temu选品师是否真的可以视为一个蓝海项目呢?本文将对此进行一番细致的探讨。 首先…

RBA认证是什么?RBA认证的流程是怎么样的

RBA认证,即“责任商业联盟”认证,英文全称是Responsible Business Alliance。这是一个为电子行业或以电子为主要组成部分的行业及其供应链制定的社会责任审核标准。该标准旨在确保工作环境的安全、工人受到尊重并富有尊严、商业营运合乎环保性质并遵守道…

DenseDiffusion:Dense Text-to-Image Generation with Attention Modulation

1 研究目的 该文献的研究目的主要是: 探讨一种更为广泛的调制方法,通过设计多个正则化项来优化图像合成过程中的空间控制。论文的大致思想是,在现有的基于数据驱动的图像合成系统基础上,通过引入更复杂的调制策略,实现…

2024.4.23

1.const 修饰 *p。 p所指向地址内的值不可变,p指向的地址可以改变 2.const 修饰 p。 p指向的地址不可变,p所指向的地址的值可变 3.const 修饰 p。 p指向的地址不可变,p所指向地址的值可变 4.const 修饰 *p 和p。p指向的地址和p所指向地址的…

[激光原理与应用-90]:光功率计基本原理

目录 一、光功率计原理 二、光功率计硬件电路 三、光功率计探头 四、接口信号 一、光功率计原理 光功率计是用来测量光功率的仪器,其原理基于光电效应和电信号的检测与处理。 下面是光功率计的基本原理: 光电效应: 光功率计使用光敏元件…

链表的分割

题目 现给定一链表的头指针 phead 以及值 x,需编写一段代码将所有小于 x 节点的排在其余节点之前,且不能改变原来的数据顺序,最后返回重新排列后的链表的头指针。 算法思想 将小于x的尾插在第一个链表 将大于等于x的尾插在第二个链表 最后…

1142 - SELECT command denied to user ···

MySql子账户操作数据库权限不够,提示错误 1142 - SELECT command denied to user database 1142 - ALTER command denied to user database 以下命令可以解决 GRANT SELEC your_database_name TO mysql_account%;

centos7上搭建mongodb数据库

1.添加MongoDB的YUM仓库: 打开终端,执行以下命令来添加MongoDB的YUM仓库: sudo vi /etc/yum.repos.d/mongodb-org-4.4.repo 在打开的文件中,输入以下内容: [mongodb-org-4.4] nameMongoDB Repository baseurlh…

【Mysql】用frm和ibd文件恢复mysql表数据

问题 总是遇到mysql服务意外断开之后导致mysql服务无法正常运行的情况,使用Navicat工具查看能够看到里面的库和表,但是无法获取数据记录,提示数据表不存在。 这里记录一下用frm文件和ibd文件手动恢复数据表的过程。 思路 1、frm文件&…

第一个Spring Boot程序

目录 一、Spring Boot介绍 二、创建Spring Boot项目 1、插件安装(专业版不需要) 2、创建SpringBoot项目 (1)这里如果插件下载失败,解决方案: (2)项目启动失败,解决…

Docker镜像与容器操作

一、Docker 镜像操作 1.1 搜索镜像 格式:docker search 关键字 docker search nginx 1.2 获取镜像nginx 格式:docker pull 仓库名称[:标签] 如果下载镜像时不指定标签,则默认会下载仓库中最新版本的镜像,即选择标签为 latest…

SwiftUI 5.0(iOS 17.0)触摸反馈“震荡波”与触发器模式趣谈

概览 要想创作出一款精彩绝伦的 App,绚丽的界面和灵动的动画并不是唯一吸引用户的要素。有时我们还希望让用户真切的感受到操作引发的触觉反馈,直击使用者的灵魂。 所幸的是新版 SwiftUI 原生提供了实现触觉震动反馈的机制。在介绍它之后我们还将进一步…

HBase的简单学习三

一 过滤器 1.1相关概念 1.过滤器可以根据列族、列、版本等更多的条件来对数据进行过滤, 基于 HBase 本身提供的三维有序(行键,列,版本有序),这些过滤器可以高效地完成查询过滤的任务,带有过滤…

Redis中的缓存击穿、缓存穿透、缓存雪崩问题

1.什么是缓存击穿? 客户端恶意访问一个不存在的数据,从而造成穿透缓存,请求直接到达数据库,频繁的发送这一类的请求,直接查询数据库,数据库的压力变大。 1.1如何解决缓存击穿呢? 1&#xff0…

基于harris角点和RANSAC算法的图像拼接matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 MATLAB2022a 3.部分核心程序 ....................................................................... I1_harris fu…

【MySQL]】数据库操作指南之数据库的基础操作

🌱博客主页:青竹雾色间 🌱系列专栏:MySQL探险日记 😘博客制作不易欢迎各位👍点赞⭐收藏➕关注 ✨人生如寄,多忧何为 ✨ 文章目录 1. 创建数据库2.数据库的编码集与校验集2.1 编码集 (Character…

嵌入式Python基础1-2

嵌入式Python基础1-2 条件语句 if elif else 随机数random eval while循环 for循环 水仙花数 循环else list 列表常用方法 增删改查 加排序 append remove pop index() 升序sort()降序 sort(reverseTrue) 反转 reverse()…

ESP32开发

1、简介 1.1 种类 WIFI模块在PC上做为客户端、服务器,在STM32上做服务器的通讯。在物联网应用开发有重要作用,种类居多,如下图 红色方框的esp8266-01s型号的无限wifi模块就是本章学习的主要对象。 1.2 特点 小巧的尺寸:ESP-01…

SpanBert学习

SpanBERT: Improving Pre-training by Representing and Predicting Spans 核心点 提出了更好的 Span Mask 方案,也再次展示了随机遮盖连续一段字要比随机遮盖掉分散字好;通过加入 Span Boundary Objective (SBO) 训练目标,增强了 BERT 的性…

python自动生成SQL语句自动化

👽发现宝藏 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。【点击进入巨牛的人工智能学习网站】。 Python自动生成SQL语句自动化 在数据处理和管理中,SQL(Structured …