当前播放: 微服务网关和BFF是如何演化出来的?
00:00 / 00:00
标清
  • 标清
1.0x
  • 2.0x
  • 1.5x
  • 1.25x
  • 1.0x
  • 0.5x
网页全屏
全屏
00:00
付费课程,可试看
合辑:新版短视频
Kafka某台broker IO阻塞,为何会导致发送方无法发送消息?
什么是C++中的The Rule of Three?
基于时序特性,如何构建一个时序存储引擎?
如何利用反射和泛型编程让你的Java代码更优雅?
C++中为什么move constructor需要加noexcept?
如何使用Postman做接口自动化测试?
给你点“颜色”瞧瞧
如何用Spark实现一个通用大数据计算引擎?
如何让你的Robot Framework飞起来?
如何透彻理解Selenium和WebDriver?
Spring Data JPA 如何进行复杂动态查询?
Spring Data JPA如何实现动态部分更新?
未来的编程语言长什么样?
高并发场景下锁的使用技巧(悲观锁/乐观锁/分布式锁)
为什么React组件要声明key?
为什么React不推荐使用Mixin?
如何设计一个高可用的配置中心?
如何通过代码技巧提升内存使用效率?
如何全面地改造Robust?
如何基于Netty构建一个简单的RPC服务?
Spring Boot中如何使用HTTP/2?
教你10分钟玩转Gradle plugin
如何深入理解Kube-Proxy?
如何深入理解Kubernetes架构?
如何使用和优化iOS中的WebView?
一个1000万资金重复支付的代码剖析
如何实现数据异构的多级缓存策略?
如何从 CRD 扩展开发切入Kubernetes源码学习?
如何更轻松简单地从源码编译部署Kubernetes?
如何设计并实现一个高可用的订单系统?
ZooKeeper的ZAB算法与Paxos的本质区别是什么?
微服务框架Apache ServiceComb的设计思想有哪些?
如何深入理解分布式事务TCC实现原理?
SSR 、CSR、预渲染、同构等首屏优化技术要如何选择?
如何利用ClassPath解决Java开发工程问题?
如何读懂Babel转换出的JavaScript代码?
大厂前端面试中经常提到的Promise要如何实现?
使用 Vue 开发小程序是怎么做到的?
为什么CSS要放在header底部,JavaScript要放在body底部?
前端Router是怎么实现的?
如何理解现代发布策略?以Kubernetes为例
JavaScript中如何封装一个具有自动失败重试功能的HTTP模块?
JavaScript中如何优雅地实现函数防抖?
服务发现技术是如何演进出来的?
HTTP/2能带来哪些性能提升?
如何快速对请求链路的关键点进行网络问题排查?
React 中如何实现模块的按需加载?
究竟要不要使用React Hooks?
TLS1.3原理以及在Nginx上的应用
如何利用有效的资源扛住618大促流量?

微服务网关和BFF是如何演化出来的?

杨波 资深架构师

网关和 BFF(Backend for Frontend)是微服务架构中的两个重要角色,多数开发人员对网关有所了解,但是大都理解不深,对于 BFF,有些开发人员可能听说过,但是大都感觉名字怪怪的,不理解这是个什么概念。不知道能否从微服务架构演进的视角,以假想的公司案例 + 图示方式,来介绍下它们是如何诞生出来的,以及它们分别解决了什么问题?

作者介绍

杨波,资深架构师,微服务技术专家。曾在拍拍贷担任基础架构研发总监,主导了拍拍贷的微服务升级改造,同时投入了很大资源进行容器云平台的研发,推动云原生技术在拍拍贷的试点和落地。

2012~2015 年,在携程担任框架资深架构师和研发总监,主导微服务核心中间件的研发和 SOA 体系建设,推动了携程微服务架构的升级改造。

更早之前,曾在 eBay 中国研发中心作为核心开发人员参与 eBay 开放 API 平台的研发工作。

展开
¥4.99 购买
开通VIP
88
登录 后留言

精选留言(10)

  • 例子和理论完美融合!!非常容易理解,老师讲的太好了

    作者回复: 谢谢支持!加油!

    2019-08-09
    4
  • 日耳曼战车
    网关也是微服务吗?

    作者回复: 网关是构建微服务基础设施的一个核心组件,网关部署以后也可以说对外提供服务(反向路由,安全认证,日志监控等),它属于技术基础服务,但不属于业务服务。

    2019-08-16
    3
  • Varphp
    请教问题 老师 如果网关 用openresty或者kong替代就行了嘛?那就可以不用Nginx了?

    作者回复: kong可以认为是专门针对API网关场景的升级版的Nginx,openresty是对Nginx的一种扩展,kong其实也是基于openrest扩展的。Nginx历史悠久,成熟稳定,应用场景丰富。这些产品总体是互补的,不能简单理解为替代关系。

    2019-08-14
    3
  • 加载中……
    这个留言有问题,还没写完就发布了,请教个问题,从协议角度看,是不是这样的。
    微服务层:通常提供rpc接口,比如dubbo
    Bff:通常提供http接口
    网关层:通常提供http接口

    作者回复: 你好,服务分层一般按照职能划分:
    微服务层:提供基础业务和技术服务;
    BFF:聚合裁剪适配服务,面向各种端用户体验(PC, mobile, 第三方接入等)
    网关层:负责反向路由,安全,监控等跨横切面功能

    实际每一层和具体协议没有严格对应关系,微服务可以用rpc,也可以http/rest,BFF和网关也可以支持rpc或者http/rest。

    当然,微服务用dubbo rpc框架,BFF转成http/rest,网关再暴露http,也是一种架构方式。

    2019-08-11
    2
  • 加载中……
    老师好,请教个问题,从协议角度看,是不是这样的
    微服务层:通常提供的rpc服务,比如dunno
    2019-08-11
    1
  • Panda
    Openresty 是可编程网关

    作者回复: Openresty/kong都属于可编程网关。

    2019-08-11
    1
    1
  • Panda
    Gateway 作为流量接入层
    2019-08-11
    1
  • codinglion
    杨老师威武,前端吵吵了好久的 BFF 在这里终于知道了如何演化出来的了。BFF 现在流行的说法是FaaS,网关可以由是 servless 方式实现,弱化 devOps。

    作者回复: BFF有很多玩法,之前看到过用动态脚本(可在运行时上传动态运行)做BFF,也有尝试用GraphQL做BFF,FaaS/serless做BFF还没有怎么听说,可能是一种新的尝试,anyway,BFF目标是帮助前端快速迭代。

    2019-11-29
  • lewis99
    老师,你好,在V4的架构中,我有两个小疑问:
    1、网关层为什么需要针对各个端分别提供独立的网关集群?我理解一般情况下可按产品线来划分网关集群,这样的话对网关的运维也有些优势;否则的话,网关集群的量就很多了。
    2、如果微服务本身是基于http rest实现的,这个场景下引入BFF层反而会增加运维、开发成本和性能开销;针对端的适配问题可以在微服务中针对有特殊要求的端开发单独的接口,您觉得呢?

    作者回复: 1. 网关集群可以针对各种端用户体验(PC/无线/SPA/第三方等)划分,也可以根据产品线划分,具体要看企业的业务场景和规模,之前在携程这种大规模互联网公司是按照端用户体验划分的,其它企业可能不同。
    2. 这个也是要看具体企业业务场景和规模的,比如Netflix这种规模公司,前端后端团队分别隶属于不同部门,为了提升研发交付效率,所以引入单独BFF层(前端团队负责)。如果企业规模不大,聚合适配工作由后端团队一起做掉,也是完全可以的。

    2019-11-21
  • 初见
    思路很清晰,非常符合实际,👍

    作者回复: 谢谢!加油!

    2019-09-05
收起评论
其他推荐
42:30
唯品会微服务架构演进之路
杨钦民 唯品会企业应用架构部架构师
试看
44:45
大数据创业公司 ToB 技术实践:挑战与破局之道
代其锋 百分点资深架构师
试看
37:33
从0到1,移动政务应用小程序系统架构演化
刘道平 数字广东产品研发部/粤省事产品中心/架构师
试看