文章来自,感谢大佬分享!https://zhuanlan.zhihu.com/p/35108457
一、Graphql引发
BFF(Backend for Frontends)
①对于客户端来说,过多的Http请求是昂贵的,为了尽量减少请求的次数,前端会倾向通过一个api把所有关联数据获取。
②每种客户端都会有一个BFF,从微服务的角度来看,微服务之间的相互调用更少了。
③Gateway与BFF: BFF是API Gateway的一种实现方式。
API Gateway的三种实现方式:
- 一个API Gateway 对所有 客户端提供同一种api
- 一个API Gateway 对每种客户端提供分别的api
- 多个API Gateway 对每种客户端提供分别的api
API Gateway api网关 的意义,在微服务架构中,一个页面需要获取多种数据,每个微服务基于普适性的要求,提供了大量细粒度的接口,大量的前后端交互,导致页面响应缓慢;随着业务发展,后端服务发生变更或拆分,所有类型的客户端都要适配更改。此时API Gateway的作用就显露出来了。
关于系统中的鉴权问题
用户登录后,App 直接访问 KeyCloak 服务获取到 id_token
,然后通过 id_token
透传访问 auth-api
服务获取到 access_token
, access_token 以 JWT (Json Web Token) 的形式放置到后续 http 请求的头信息中。
在我们这个系统中 BFF 层并不做鉴权服务,所有的鉴权过程全部由各自的微服务模块负责。BFF 只提供中转的功能。BFF 是否需要集成鉴权认证,主要看各系统自己的设计,并不是一个标准的实践。
二、微服务的特点
感谢分享,获益匪浅 https://zhuanlan.zhihu.com/p/31613331
1、单一职责
内聚的,常根据业务逻辑划分,根据亚马逊的 Two Pizza Team 负责设计、开发、运维和测试
2、自治
独立部署、升级,
优点:①逻辑清晰 ②简化部署 ③可扩展 ④灵活组合 ⑤技术异构 ⑥高可靠
缺点:①复杂度高 ②运维复杂 ③