首页 > 编程知识 正文

微服务和传统架构区别,微服务技术框架

时间:2023-05-03 16:35:10 阅读:59872 作者:4537

一、从一个MyShop上,为了说明BFF是什么,这里我引用了波波老师在《Spring Boot与K8s云原生应用开发》课学到的一个例子,给大家分享,尽力弄清楚BFF是什么,是怎么进化的。

假设我们是一个开发团队,开发了一个名为MyShop的电子商务项目,该项目采用了微服务体系结构风格。 由于经历了几次体系结构调整,让我们来看看BFF是如何发展的。

假设v1、8年前,MyShop已经采用了服务化的体系结构,客户端也主要围绕传统的web APP应用程序。 当时,SOA的框架已经赶上了流行。

转眼间,四五年前,我的手机升级到了v2版本。 其体系结构如下图所示。

可见,如今已经进入移动互联网时代,MyShop也在顺应时代推出自己的无线APP。 为了尽快上线,MyShop团队的架构师设计了v2体系结构。 这将向App端添加Nginx反向代理,以便App门户可以直接访问API微服务。

但是,该v2体系结构存在以下问题:

)1) APP端和内部API微服务存在较强的耦合关系(包括接口耦合和域名耦合),任何一方的变化都会对另一方产生一定的影响。

)2)每项暴露于外界的服务都需要新的域名,域名需要购买,需要承担成本。

)3)内部API微服务一下子暴露于公共网络,存在较大的安全风险。

)4) APP客户端需要开发大量的聚合裁剪逻辑,客户端是繁重的、重复的劳动。 (解释聚合裁剪是指聚合需要一次从多个微服务检索数据并集成使用,而裁剪是指需要过滤微服务返回的数据,可能只使用其中的部分字段数据。)

二、由于引入BFF的MyShop v2.5在v2版本中存在的问题太多,架构团队决定在Nginx和内部API微服务之间引入无线bff(3358www.Sina.com/)来解决这个问题

可以将BFF视为后端微服务的代理服务,它主要提供聚合和裁剪逻辑,便于客户端访问和访问。 可以看到,BFF部署后,App端和后端微服务器之间的绑定减少了,避免了v2版本中提到的强绑定问题。 另外,APP方只要知道BFF的域名即可,内部微服务器也无需隐藏在BFF之后再暴露于公众网。

v2.5版本解决了许多问题,因此成功上线,也为MyShop无线业务的发展提供了巨大的支持。

但是,随着业务的迅速发展,一张无线BFF上积累了大量不同业务线的逻辑越来越庞大,升级和维护也越来越困难。 另外,根据康威定律,单个无线BFF和多个团队也发生了失配。 这意味着团队间的交流成本更低,交付成本也更高。 最后,无线BFF中除了多业务聚合裁剪逻辑外,还引入了安全认证、日志监控、限流熔断等Cross-Cutting (横截面)逻辑。 随着时间的推移,代码越来越复杂,技术堆栈越多,开发效率也越低。 (当然,也有单点问题等,但这里不怎么说明)

三、为了解决网关BFF模式MyShop v3在v2.5版本中存在的问题,架构团队进一步考虑后决定,一方面对单个无线BFF进行解耦分割,为不同业务线引入独立的微服务集群另一方面,决定在无线BFF和Nginx之间引入API网关这一新的作用,将结算的作用转移到API网关。 从那以后,v3体系结构出现了,如下图所示。

在v3体系结构中,BFF按团队或业务线边界划分,每个业务线团队可以并行开发和交付各自的BFF。 网关由单独的中间件或框架团队开发和维护,专注于路由和结算级别的功能构建,而业务线团队则专注于业务逻辑的开发。 我们. NET程序员熟悉的Ocelot网关项目(是的,由自然计算机参与并做出贡献的网关项目)是限流熔断、集中认证) IdentityServer集成、负载平衡和呼叫跟踪

四.乘风破浪的MyShop v4是最近一两年吧。 MyShop团队希望迎接新的业务和技术发展需求,开放内部企业级能力建设开放API开放平台,并借助第三方力量在MyShop平台进行创新创造生态,丰富MyShop的应用形态。 它还需要访问多种类型的APP应用程序客户端,包括SPA单页APP应用程序和H5前后端隔离APP应用程序。 体系结构团队设计了下图所示的v4体系结构,以满足快速增长的现有和未来可能的需求。

在v4架构中,我们删除了传统的离线维级别的Nginx反向代理,而是统一使用可变成型的强网关作为客户端APP应用程序门户。 当然,这里引入了一些其他LB服务进行了网关层的负载均衡。 这里的网关也进行解耦,针对不同的客户端APP应用场景,分为开放平台网关、H5网关、无线网关、web APP应用网关四种类型。 在BFF级别,根据业务线分为无线BFF、H5 BFF、开放平台BFF。 体系结构整体级别清晰、责任明确、灵活,易于支持MyShop业务快速发展。 我相信,通过查看这里,您将看到BFF是什么,它在微服务体系结构中的位置和作用,以及它是如何演变的。

英文全称:Backend For Frontend,指为前端应用开发的后端服务如果你还不明白,再看一遍!

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。