分布式系统目标
提升系统的整体性能和吞吐量以及尽量保证分布式系统的容错性。
分布式系统设计思路
- 中心化:分布式集群中的节点机器按照角色分工,“领导”“和员工”。领导负责分发并监督员工,发现员工空闲及时分派新任务,发现员工坏掉直接踢出局,然后把任务分派给其他员工。
存在问题:
- 领导出现问题,整个集群就崩溃了。
- 能力问题,能领导10个人高效工作不一定能领导100个人高效工作。
- 去中心化:所有节点地位平等,由节点自有选择中心(ZooKeeper的选举)。
存在问题:
一个集群由于网络的故障,被分为至少两个彼此无法通信的单独集群,此时如果两个集群都各自工作,可能会产生严重的数据冲突和错误。所谓的“脑裂”问题。
一般的解决思路是,当集群判断发生了脑裂问题时,规模较小的集群就“自杀”或者拒绝服务。
cap定理:
又被称为布鲁尔定理(Brewer's thworem),指出对于一个分布式系统不能同时满足一致性(C),可用性(A),分区容错性(P)。
- Consistence 一致性:所有节点访问同一份最新的数据副本。
- Availability 可用性:每次请求都能获取非错的相应。但不保证为最新的数据。
- Patition tolerance 分区容错性:分布式系统遇到某节点或网络故障仍能对外提供满足一致性和可用性的服务。
base理论:
核心思想:无法做到强一致性,每个业务根据自身的特点,采用适当的方式最终达到一致性。在数据库领域,主要实现为对业务数据拆分,不同的数据分布在不同的机器上,以此来提升系统的可用性。比如:按功能划分数据库(不同功能不同的数据库实例);分片(MyCat)。
三要素:
- basically Available 基本可用:
分布式系统出现不可预知的故障时,允许损失部分可用性。 比如:系统时间增加;抢购时部分被引导到降级页面。
- soft-state 软状态:允许系统在不同节点同步数据副本时存在延时。
- Eventually Consistent 最终一致性:所有的数据副本经过一定时间的同步后最终达到一致。
分布式和集群的区别:
- 分布式:一个业务拆分位多个子业务,部署在不同的服务器上。
- 集群:同一个业务部署在多个服务器上。提高系统性能,解决高并发。
本文完。
勤助手-教育机构好助手。一款专注中小机构教学管理的软件。
注册可免费使用。