一、分布式系统的技术栈分析
分布式系统的出现是业务发展导致的最终结果,而由于业务的拆分,我们又被迫会衍生出更多的分布式需求来,以及应对这些需求的技术:
1、因为业务拆分的多,业务对应的模块之间就需要通信,为了保证通信的快速可靠,我们需要掌握分布式通信技术。
2、业务拆分的过多,每个模块可能还需要搞集群,那么多服务器资源,为了能够保证资源的精准分配,我们还需要考虑分布式资源管理和负载调度技术。
3、业务拆分之后,模块与模块之间又需要对很多共享数据做访问,为了保证安全完整的数据状态,我们也要用到分布式协调与同步技术。
4、到了业务拆分的阶段,数据必然庞大,为了数据存储的可靠,为了保证优秀的数据读写性能,我们需要分布式存储技术。
5、业务如此复杂,为了公司的发展,业务能继续扩大,就需要能更加精准的营销和运营,我们还需要对数据进行实时、离线处理分析,此时,我们又得考虑分布式计算技术。
6、在业务拆分后,整体架构出现了巨变,不可能再用以前集群方式的思维去考虑高可用,那么分布式的可靠性技术又要纳入我们的掌握范畴。
二、分布式管理系统常用技术和应用场景
1、consistent hashing:一致性哈希,解决数据均衡分布问题。
2、vector clock:时钟向量,多版本数据修改。
3、Quorum W R>N[with vector clock]:抽屉原理,数据一致性的另一种解决方案。时钟向量,多版本数据修改。
4、Merkle tree [with anti-entropy]:数据复制。
5、MVCC:copy-on-write与snapshot。
6、2PC/3PC:分布式事务。
7、Paxos:强一致性协议。
8、Symmetry and Decentralization:对称性和去中心化。对称性(symmetry)简化了系统的配置和维护,去中心化是对对称性的延伸,可以避免master单点,同时方便集群scale out。
9、Map-Reduce:分而治之;移动数据不如移动计算。将计算尽量调度到与存储节点在同一台物理机器上的计算节点上进行,这称之为本地化计算,本地化计算是计算调度的一种重要优化。
10、Gossip协议:节点管理。