《转》微服务
https://www.cnblogs.com/imyalost/p/6792724.html
https://blog.51cto.com/13732225/2155324
一.原则与特征:
1.单一服务职责
2.康威定律
3.自动扩展
4.DDD
5.独立的服务组成系统
6.每个服务单独部署,独立运行在自己的进程中:比如一个服务一个dock容器
7.每个服务都是独立的业务:业务的边界确认,需要参考DDD 领域驱动建模
8.分布式管理
总之,遵循的原则是低耦合,高内聚(相关事务本地化,强一致性)
二.微服务设计注意事项
1.防止雪崩
某个服务宕机是否会拖垮其他依赖服务,导致整个生态系统不可用。可用考虑限流等措施(单机接口,分布式限流lua+redis,nginx层ip限流)
2.功能降级
当某个服务出现故障,进行功能降级,确保提供有损服务,而不是完全不可用使用。
3.接口幂等
重复相同写操作,结果不变
4.缓存
减少数据回源数据库
5.超时
超时时长设置合理,设置过长影响链接释放,拖慢系统
6.熔断
请求三方接口发生一定失败后,熔断打开,后续请求快速返回失败
7.伸缩性
并发量大,可动态扩容;反之,进行缩容 (jd的 jimdb)
8.分库
每个服务独立成库,数据隔离
9.扩展
需求分析可变性+不可变性=》Y=F(X) =》架构设计 =》抽象 +设计模式
10.链路跟踪
微服务架构下,一个业务流程可能设计几十个子系统,子服务,请求调用链十分长,中途出现问题的可能性很大;排查问题较为困难,需要一个链路跟踪系统
11.微服务团队维护
一个服务模块,最好两个人维护,采取主从模式,方便负责同事不在工作岗位,其他人能够支持。
浙公网安备 33010602011771号