《微服务平台下基于GraphQL构建BFF的实践与思考.pdf》由会员分享,可在线阅读,更多相关《微服务平台下基于GraphQL构建BFF的实践与思考.pdf(32页珍藏版)》请在三个皮匠报告上搜索。
1、微服务平台下基于 GraphQL 构建 BFF 的实践注:PPT 中部分图片素材来源网络Node.js 兴起GraphQL 的优势BFF+GraphQL 的实践BFF 的应用场景Javascript 语言JS 引擎、运行环境,V8V8+I/O+其他,独立于浏览器运行Node.js 起源Node.js 的特质社区活跃度高:不断迭代的版本NPM 包管理生态圈:内容丰富,开发者活跃学习成本较低:Javascript ES6 语法特性的支持Node.js 应用场景Web 开发框架:Express前端构建工具:Webpack/Grunt/Gulp跨平台打包工具:CordovaIM 通讯:socket.i
2、oAPI 中间层:API Proxy前后端分离架构Mobile 框架Android NativeiOS NativeReact NativeFlutterPWACordovaWeb 框架AngularReactVUEEmberBackbone前后端分离的优缺点前后端分离,前端负责 JS 等资源的加载,而后端负责给前端提供数据返回优点代码分工清晰:前后端各司其职,UI 和数据互不干扰前端 MVC:提升网页加载速度,前端更好的数据组织与管理灵活性强:前后端解耦,前端和后端可以分工开发多客户端适用:Web,Mobile 可以共用同一个后端服务缺点API 契约管理:后端的 API 字段或数据结构改动,
3、需要所有前端同步修改前后端沟通成本:前端团队和后端团队需要额外的沟通复杂的后端:复杂的业务系统向微服务拆分,前端的一个页面的数据通常需要几个微服务的配合种类繁杂的客户端:即使对于后端的同一种资源,每种客户端关心的业务数据都不一样小而专一、耦合度低、高度自治的一组服务相互独立、可独立部署通过 API 相互调用对复杂系统的拆分、简化对子服务的重用子服务的横向扩展特点目的微服务架构多客户端需求:App 以及 Web 应用多客户端对数据的不同关注点服务端需要处理 UI 数据的组装等特点客户端需要进行大量的 API 聚合服务之间越来越多非业务性的调用通用的 API 返回了大量的冗余字段牵一发动全身,不敢
4、轻易改动(特别针对 Mobile 端)痛点微服务下的传统前后端架构Backend For Frontend 为每种不同类型的前端应用定义不同的后端服务每一种客户端与各自对应的 BFF 通信BFF 是前端开发的一部分BFF 负责直接调用后端微服务特点将 UI 逻辑从微服务中剥离,降低微服务耦合为不同客户端提供更加高效定制化的 API 调用解决的问题引入 BFF 后的前后端架构API GatewayBFF 是 API Gateway 的一种特殊实现BFF-特殊的 GatewayAPI Proxy-Monitor,Log,SecurityAPI Proxy in BFF频繁变化的 API 需要向前兼
5、容BFF 中返回的字段不全是客户端需要的2015 年 GraphQL 被 Facebook 正式开源GraphQL 服务端有多种实现方式,最开始在 Node 平台上被实现关于 GRAPHQL服务端描述数据客户端按需请求服务端返回结果type Project name:String tagline:String contributors:User project(name:“GraphQL”)tagline “project”:tagline:“A query language for APIs”A query language for your API并不是一门编程语言,而是一种 API 查询
6、风格GRAPHQL 的特点1.定义数据模型:按需获取2.数据分层3.强类型,类型校验4.协议而非存储5.无须版本化GRAPHQL 的特点1.定义数据模型:按需获取2.数据分层3.强类型,类型校验4.协议而非存储5.无须版本化1.客户端决定返回结构,服务器按需返回2.数据分层3.强类型,类型校验4.协议而非存储5.无须版本化GRAPHQL 的特点1.客户端决定返回结构,服务器按需返回2.数据分层3.强类型,类型校验4.协议而非存储5.无须版本化GRAPHQL 的特点1.客户端决定返回结构,服务器按需返回2.数据分层3