分布式理论|青训营笔记
这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天
分布式概述
什么是分布式
分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的资源来实现共同的目标。
可以分为分布式计算、分布式存储、分布式数据库等。
分布式的优点
去中心化
区别于将程序部署在一个大的服务器中,部署在由小的服务器组成的集群中会有更高的运行效率,同时也更有利于维护。
低成本
大型服务器的成本往往较高,而分布式允许多个小服务器共同作业,减少了服务器成本。
弹性
业务人员可以根据流量大小,动态的调整业务能力。比如在高峰期或节假日对服务扩容,或白天采用在线服务而夜晚使用离线计算。
资源共享
单服务器的存储能力是有限的,使用分布式可以构成一个大的存储池,进行资源共享。
可靠安全
集群中一个节点出现故障,可以用它的副本来替代,保证了服务的可靠性。
分布式的挑战
普遍的节点故障
单服务器故障的概率是很小的,随着服务器的增加,发生故障的可能性越大,对于一个有成千上万台服务器的集群来说,发生故障是必然的。
不可靠的网络
不同于程序中的true或false,网络多一种不确定的状态。在节点通信时,若网络无响应,则不确定是true还是false。体现在编程中处理的状态变多,情况更为复杂。
异构的机器与硬件环境
不同的环境对程序运行的影响很大,调度到不同服务器上性能难以预测。
安全性
大型服务器集群一旦被攻破,出现数据泄露,后果是灾难性的。
为什么要使用分布式
对于使用者
分布式有上述五种优势,能应对对计算与存储有高需求的场景,并且能降低成本。
对于学习者
分布式是后端开发的必备技能,有助于理解后端服务器之间的协作机理。
如何学习分布式
学习分布式理论,了解一致性协议。
深入展开难点,将理论运用于实践。
常见分布式系统
分布式存储
- Google File System:google分布式文件系统
- Ceph:统一的分布式存储系统
- Hadoop HDFS:基于GFS架构的开源分布式文件系统
- Zookeeper:高可用的分布式数据管理与系统协调框架
分布式数据库
- Google Spanner:google的可拓展、全球分布式的数据库
- TiDB:开源分布式关系型数据库
- HBase:开源Nosql数据库
- MongoDB:文档数据库
分布式计算
- Hadoop:基于Mapreduce分布式计算框架
- Spark:基于Hadoop至上,基于内存来存储数据
- YARN:分布式资源调度