这是我参与「 第五届青训营 」伴学笔记创作活动的第 9 天 分布式应用技术是一门新兴的基于网络应用的开发技术,它提供了一种与以往截然不同的网络应用开发模式,实现了高效率,大规模,组件化的分布式程序开发过程。
分布式概念
分布式系统是建立在网络上的软件系统, 分布式系统是由多台计算机组成通过网络进行通信,为了完成共同的任务而协调工作的计算机节点组成的系统, 就好比分布式系统是一个集合,元素则是独立计算机, 给用户的感觉就像一个整体
分布式系统服务一般都是根据项目的模块来划分服务,分散部署不同的独立机器上,一个服务可能负责几个功能,是一种面向SOA架构的,服务之间的通讯交互大多使用HTTP或者RPC协议,
分布式系统相比于传统单系统服务,提高了,可靠性,可用性,扩展性
分布式的特征
分布式系统应具有以下4个特征
- 分布性:分布式系统由多台计算机组成,每台计算机可以在任意地方,
- 自治性:分布式系统中各个节点,都是独立的,能自己处理数据,业务,没有主从之分
- 并行性:一个大的任务划分为多个小任务,在不同节点执行
- 全局性:分布式系统拥有单一的,全局的进程通信机制,使不同的进程之间可以相互通信,不同计算机之间可以相互访问资源。
常见分布式系统
分布式存储:
- Google File System (GFS) : google分布式文件系统
- Ceph:统的分布式存储系统
- Hadoop HDFS:基于GFS架构的开源分布式文件系统
- Zookeeper:高可用的分布式数据管理与系统协调框架
分布式缓数据库:
- Google Spanner: google可打 展的、全球分布式的数据库。
- TiDB:开源分布式关系型数据库
- HBase:开源Nosq|数据库
- MongoDB:文档数据库
分布式计算:
- Hadoop: 基于MapReduce分布式计算框架
- Spark: 在Hadoop基础之上, 使用内存来存储数据
- YARN:分布式资源调度
系统模型
故障模型
- Byzantine failure:节点可以任意篡改发送给其他节点的数据
- Authentication detectable byzantine failure(ADB): Byzantine failure的特例;节点可以篡改数据,但不能伪造其他节点的数据
- Performance failure:节点未在特定时间段内收到数据,即时间太早或太晚
- Omission failure:节点收到数据的时间无限晚,即收不到数据
- Crash failure:在omission failure的基础上,增加了节点停止响应的假设,也即持续性地omission failure
- Fail-stop failure:在Crash failure的基础上增加了错误可检测的假设