了解分布式架构,让你的软件架构之路越走越顺( 二 )


 

了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
  • 微服务的团队管理
团队其实也是自治的 。微服务团队里面可能是有产品,运营,测试,开发 。如果系统分配到某个团队内,在团队内的开发可以非常敏捷的沟通,很快的开发上线,并不需要跨团队的沟通,跨团队的协调,回顾下当初的SSH,公司分为UI组,开发组,测试组,DB人团队沟通,都不是微服务的团队导致沟通效率很低 。所以这就是微服务倡导的敏捷,专业的人干专业的事 。
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
  • 分布式服务架构的精髓
敏捷上线,微服务下的自治,有效的减少不可用的因素 。服务化和微服务都使用了分而治之的思想,分布式服务和分布式系统架构里面,无论是提高性能,提高吞吐量,提高敏捷性 。
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
  • 微服务架构的痛点
  1. 一致性
强一致性和弱一致性
  1. 高性能
容量评估和性能测试
  1. 高可用
4个9和5个9
  1. 可扩展
可修改,迭代新功能,可插拔
  1. 可伸缩
应用层和资源层,随着硬件投入的增加性能和能力相应的增长
  1. 安全性
防偷窥,防泄漏,防抵赖,防篡改,防中间人攻击
保证分布式一致性的最佳方案
周朝的时候,分而治之,后来都不听周王的话,导致不一致 。不一致导致的痛点是很大的 。如何去解决不一致的问题 。线上趟过的坑和总结的经验分享 。
  • 一致性原理
本质上需要理解下面的3种,本身是什么,应用的场景 。
 
了解分布式架构,让你的软件架构之路越走越顺

文章插图
 
 
image.png
ACID,数据库理论的时候,我们都学过ACID就是强一致性 。四个名词代表的是一个事务是不可以在进行拆分的,要么都成功,要么都失败 。在传统的数据库里面都是单体的应用,单体的应用必须保持强一致性的,尤其是我们的关系型数据库 。犹豫在互联网高并发的线上 。用户量非常大,上千,上万,上亿的,单体的服务架构和单体数据库很难撑起来这么大的量,所以就需要它们之前进行分而治之,在网上进行分开,进行分开,分片 。带来的问题,当网络出现问题的时候,这些应用是否可以正常的工作 。这就引入了CAP原则 。
CAP,之间肯定是网络通信,一定要有分区容错性,也就是某个节点网络不能正常的通信时 。网络断了,或者闪断的话,各自之间还要继续的工作 。P肯定是要有的 。这个原则是如果三者只能选择其中的二个,P已经必须要了,那就需要在C和A之间选择一个 。例如:网络上有一份数据,数据是通过复制来完成的 。一份是主数据,一份是从数据,当你存一份数据的时候到主数据的时候,同时也需要往从数据中存一份,如果从出现问题,是继续还是返回给主,这就是一致性和可用性的解读 。如果主从必须保持一致,主从都存起来后才可以返回的话,那就保证一致性,可用性就不好,如果网络出问题,就一致等待都一致才返回 。不会在有限的时间内返回给客户端的请求,可用性就很差,所以一致性和可用性就是互斥的 。如果是很快的返回客户端,那就可能牺牲了一致性保持了可用性 。总结就是在容错性的基础之上,可用性和一致性是互斥的 。不可兼得 。
BASE,基本可用,中间有软状态,最终保持了一致 。基本可用是条件,最终保持一致是目标 。软状态就是事先的BASE的方法,就是我们要做一个事,达到目的中间的过程需要2,3个阶段,做完一个阶段记录状态信息,然后做第二个阶段,我们可以从出问题的那个位置恢复到出问题的地方 。互联网上很多的高并发项目,都使用了分布式事务都进行打折了,完成了最终一致性 。使用了BASE原理,CAP限制了它不可能三者同时存在 。
  • 一致性协议
两个阶段的协调者
 


推荐阅读