网络
网络是分布式系统的基础,网络之于分布式系统,就好像双翼之于飞鸟。
互联网
国际互联网是一个分层汇聚网络,位于顶端的是国际骨干网,负责连接各个国家的国家骨干网; 国家骨干网负责将分布在各城市的城域网连接起来; 城域网则负责将本区域众多的园区网连接起来。
IDC
互联网数据中心(internet data center),它是数据存和流通的中心,为企业,政府提供服务托管,租用及相关增值等方面的全方面服务。
AIO
与NIO不同复杂和难用,AIO体现了大道至简的软件美学理念,包括AIO Files和AIO Socket,前者解决了文件的异步处理,后者解决了socket的异步处理问题。核心概念是应用发起非阻塞方式的IO操作,当IO操作完成时通知应用,同时应用程序的职责也很明确。
分布式经典理论
设计理念
首要目标是提升系统的整体性能和吞吐量,但是存在让人无法回避的风险和严重的问题,发生故障的概率大大增加。
中心化和去中心化
- 中心化:人以类聚,物以群分,中心化的设计思想简单,分布式集群的节点按照角色分工,包括master和slave,前者负责分发任务并监督slave,一旦出现故障将其移出列表。比如kubernetes架构。一旦出现master故障,整个系统将会崩溃。
- 去中心化:充分相信每个slave,master负责任务的生成,不再指派任务,有各个slave自行领取任务。由于不存在master,节点需要跟其他所有的节点对话才能获取到必要的集群信息,分布式通信的不可靠性大大增加了其实现难度。
最终一致性问题
分布式系统的不可靠性,它通过独立的服务器网络松耦合组成的,网络本质上就是一个复杂的IO系统。分布式理论建立在分布式系统的不可靠这一前提上的,因此需要一些额外的复杂设计和功能,来确保将这种系统不可用性降到最低。最终一致性降低了标准的一致性,数据一致性存在延迟时间来换取数据读写的高性能,逐步成为了分布式系统所遵循的一个设计目标。
BASE准则
在分布式环境下,CAP理论并不适合数据库事务,放宽数据库事务的ACID要求,得到BASE原则:basically availabled,soft-state和Eventually consistent,主要可用,软状态和数据最终一致性。
分布式事务
事务的ACID,原子性,一致性,隔离性和持久性。
经典的X/OpennDTP事务模型
- 二阶段提交协议:
先发起投票表决,通知所有资源管理器先完成事务提交过程所涉及的各种复杂的准备工作,比如redo,undo日志等; 真正的提交阶段,基于第一阶段的投票结果进行决策,确定取消还是提交事务。所有资源管理器同意提交时才完成提交。 - 互联网中的分布式事务解决方案
- 业务整合,避免分布式事务
- 最终一致性之eBay模式
先启动一个事务,更新事务表之后,将其他相关操作扔到消息队列,后台单独起线程负责事务的其他操作,需要单独跟踪这些操作的进展,进行重新,去重等操作。 - X/OpenDTP模型的DTS框架
RPC
每个分布式系统都离不开多进程的通信问题,包括本机上的IPC和基于网络的RPC。
- IPC:管道和命名管道,socket,共享内存
- RPC:建立在socket上的一种远程多进程间的通信机制,可以跨机器交互。
- 服务治理:在RPC框架中,远程对象需要通过注册到注册中心,客户端根据注册中心的接口查询远程对象的访问地址,从而实现远程调用,逐步演化出SOA等更丰富的架构和概念。