勿忘初心 厚德载物

go训练营--微服务

Posted on By JettyLee

微服务实施

组件服务化

kit: 一个微服务的基础库(框架)
service: 业务代码 + kit 依赖 + 第三方依赖组成的业务微服务
rpc+message queue: 轻量级通讯

按业务组织服务

模式:大前端(移动/web)=> 网关接入 => 业务服务 => 平台服务 => 基础设施(PaaS/Saas)
开发团队对软件在生产环境的运行负全部责任!

去中心化

数据去中心化
治理去中心化
技术去中心化

基础设施自动化

CICD: Gitlab+Gitlab Hooks +k8s
Testing :测试环境,单元测试,API自动化测试
在线运行时,必要监控: k8s,以及一系列Promethenus,ELK,Conrtol Panle

可用性 & 兼容性设计

隔离
超时控制
负载保护
限流
降级
重试
负载均衡

微服务设计

业务实际流量

移动端 =>API Gateway =>BFF =>Mircoservice
在FE Web业务中,BFF 可以时node js来做服务端渲染(SSR,Server-Side Rendering)
注: 这里忽略了上游的CDN,4/7 层负载均衡(ELB)

API Gateway

提供跨横切面(Cross-Cutting Concerns)的功能,需要协调更新框架升级发版(路由、认证、限流、安全等)

Mircoservice
Mircoservice划分

通常采用两种方式:
1.业务职能(Business Capability)
2.DDD的限界上下文(Bounded Context)

CQRS

将应用程序分为: 命令端和查询端
命令端:创建,更新和删除请求,并在数据更改时发出事件。
查询端通过针对一个或者多个物化视图执行查询来处理查询。物化视图通过订阅数据更新更改时发出的事件流而保持最新。
B站解决方案:binlog以及订阅binlog 的中间件canal,通过kafka 传递到job池处理

Mircoservice 安全

API Gateway -> BFF -> Service
Biz Auth -> JWT- Request Args

对于服务内部,一般要区分身份认证和授权

Full Trust
Half Trust
Zero Trust