YZR 2019-05-25
分布式有几十年的历史了,但从来没有想今天这么火过。从分布式存储到微服务架构,从区块链到边缘计算,无所不在,无人不知。下面我们就分布式所涉及的基本内容列一个大纲,以供大家学习,了解。
本大纲旨在向软件工程师介绍现实中分布式系统的基础知识,以便让大家获得对分布式系统中关键术语的直观理解,并探讨生产中问题。
什么是分布式系统?Lamport在1987给出了分布式的定义
A distributed system is one in which the failure of a computer you didn't even know existed can render your own computer unusable.
一个分布式系统是那种发生问题后,你都不知道发生在哪里,最终导致你的计算机变得无法访问和使用。
上面其实是对分布式的一个简单描述,可以说不是严格的定义。分布式是将业务分散在多个处理单元(节点)上,通过单元(单元)间的协作完成一个共同的任务。
节点是分布式的基本单元,英文名为Node。在分布式系统中节点也是要认真考虑的问题,包含性能和容错等内容。
网络是分布式的基石,分布式系统只有通过网络才能将多个节点连接成为一个整体。一般分布式系统都是基于TCP协议进行的,另外,在TCP的基础上回封装自己的私有协议。
由于分布式系统的复杂性和网络的不可靠性,因此科学家发明了很多算法来解决这些问题。分布式领域核心的算法有3类,分布式解决分布式一致性的算法,进行负载均衡选路的算法和信息高效分发的协议。
分布式系统在实际生产中涉及的内容很多,但从应用方面就包括分布式计算和分布式存储。而分布式存储又分为IaaS的存储、KV存储、表格存储和缓存等等,内容之多,数不胜数。
分布式任务处理服务:负责具体的业务逻辑处理
分布式节点注册和查询:负责管理所有分布式节点的命名和物理信息的注册与查询,是节点之间联系的桥梁
分布式DB:分布式结构化数据存取
分布式Cache:分布式缓存数据(非持久化)存取
分布式文件:分布式文件存取
网络通信:节点之间的网络数据通信
监控管理:搜集、监控和诊断所有节点运行状态
分布式编程语言:用于分布式环境下的专有编程语言,比如Elang、Scala
分布式算法:为解决分布式环境下一些特有问题的算法,比如解决一致性问题的Paxos算法
开源项目:Redis,ZooKeeper,Dubbo,Etcd,Ceph,K8S
上述内容都是进行分布式开发和设计必须的内容,希望对大家有所帮助。