SpringCloud与分布式服务
一、微服务发展历程
什么时候用微服务?
-
微服务应用在复杂度低的情况下,生产力反而比单体架构低
-
在复杂度高的地方,情况恰恰相反。
中台建设
二、微服务架构的最佳实践
1. 旧系统改造
- 功能剥离、数据解耦
- 自然演进、逐步拆分
- 小步快跑、快速迭代
- 灰度发布、谨慎试错
- 提质量线、还技术债
2. 系统拆分
- 高内聚低耦合
3. 扩展立体方
- x轴,水平复制:复制系统
- y轴,垂直拆分:拆分业务
- z轴,数据分区
4. 自动化管理
- 自动化测试
- 自动化部署
- 自动化运维
降低拆分带来的复杂性,提升测试、部署、运维效率
5. 分布式事务
使用幂等、去重、补偿的方法来保证数据的一致性。慎用分布式事务
6. 监控与运维
- 业务监控
- 系统监控
- 容量规划
- 报警
- 故障处理
三、SpringCloud技术体系
微服务架构:
服务选型:
相关工具
- 监控
- ELK
- Promethus+Grafana
- 链路追踪
- Pinpoint
- zipkin
- jaeger
- skywalking
- 权限控制
- CAS+SSO
- JWT,OAuth2.0
- SpringSecurity,Apache Shiro
- 数据处理
- 读写分离与高可用:HA
- 分库分表:Sharding
- 分布式事务:DTX
- 数据迁移:Migration
- 数据集群扩容:Scaling
- 数据操作审计:Audit
- 网关与通信
- 流量网关与WAF:Nginx、OR、Kong、Apisix
- 业务网关 Zuul、Zuul2、SpringCloudGateWay
- Rest与其他协议(websocket、actor、rsocket、mq...)
书山有路勤为径,学海无涯苦作舟