这是我参与「第五届青训营 」伴学笔记创作活动的第 8 天
什么是分布式
分布式系统是计算机程序的集合,这些程序利用跨多个独立计算节点的计算资源来实现共同的目标。可以分为分布式计算、分布式存储、分布式数据库等。
优势:
- 可用性(容错性)
一台服务器的系统崩溃并不影响到其余的服务器,仍可以正常对外提供服务。 - 可扩展性
可以通过线性的增加机器资源,来应对不断增长的外部需求。 - 资源共享
如银行,预订系统。 - 灵活性
容易安装,实施和调试新的服务。 - 更快的速度
拥有多台计算机的计算能力,使得它比其他系统有更快的处理速度。 - 开放系统
由于它是开放的系统,本地或者远程都可以访问到该服务。 - 更高的性能
相较于集中式计算机网络集群可以提供更高的性能。
挑战:
- 普遍的节点故障
- 不可靠的网络
- 异构的机器与硬件环境
- 安全
Why-How-What
使用者视角:
Why:
- 数据爆炸,对存储和计算有大规模运用的述求
- 成本低,构建在廉价服务器上
How:
- 分布式框架
- 成熟的分布式系统
What:
- 理清规模,负载,一致性要求等
- 明确稳定性要求,制定技术方案
学习者实践:
Why:
- 后端开发必备技能
- 帮助理解后台服务器之间协作的机理
How:
- 掌握分布式理论
- 了解一致性协议
What:
- 把要点深入展开,针对难点搜索互联网资料进行学习
- 将所学知识运用于实践
常见的分布式系统
分布式存储
- Google File System(GFS):google分布式文件系统
- Ceph:统一的分布式存储系统
- Hadoop HDFS:基于GFS架构的开源分布式文件系统
- Zookeeper:高可用的分布式数据管理与系统协调框架
分布式数据库
- Google Spanner:google可扩展的、全球分布式的数据库
- TiDB:开源分布式关系型数据库
- HBase:开源Nosql数据库
- MongoDb:文档数据库
分布式计算
- Hadoop:基于MapReduce分布式计算框架
- Spark:在Hadoop基础之上,使用内存来存储数据
- YARN:分布式资源调度