《转》微服务

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.微服务团队维护
一个服务模块,最好两个人维护,采取主从模式,方便负责同事不在工作岗位,其他人能够支持。

posted @ 2019-06-25 22:56  yizuoming  阅读(120)  评论(0)    收藏  举报