分布式基础理论
分布式系统特点:
并发性
共享资源,采取ACID或Base原则,见:CAP定理。分布式系统设计遵循CAP定理, CAP是:Consistency(一致性), Availability(可用性), 和 Partition tolerance(分区容错性) 可靠性 简称,CAP定理认为,CAP三种之中,只能同时满足其中两种。
可扩展性Scalable是重要特点,
通过扩展能够获得高性能 高吞吐量 低延迟Latency。
可靠性/可用性
故障发现和处理以及恢复 容错处理。在一个正常运作系统中存在一个时间比例的条件。 如果一个用户不能访问系统比例增大,它被认为是不可用。可用性公式: Availability = uptime / (uptime + downtime) 容错failover是指一个系统在错误发生的情况下,仍然一切运行正常。表示这个系统是宽容错误的。
消息处理
具体产品有:RabbitMQ ZeroMQ Netty等等。
异构性
不同操作系统 硬件 程序语言 开发者,中间件是一种解决方案。
安全性
授权认证 SSO单点登录 Oauth等等。
定位命令:
- 标识资源 URLs
- 命名服务Naming services
- 定位寻找Lookup
- 主要见SOA中的服务查找。如Zookeeper实现服务查找。
透明性
- 访问透明度: 使用相同的操作本地和远程资源
- 位置透明:访问资源无需知道其物理或网络位置
- 并发透明度:多个进程可以同时运行访问使用共享资源,当不能干扰堵塞 它们的处理进程
- 复制透明性: 资源的多个实例可以被用来复制以提高可靠性和性能,但无需由用户编制专门的应用程序来实现。
- 故障透明度:出现软件硬件故障时,使用户和应用方案能继续完成他们的任务不受影响。
- 移动透明度:允许在 系统存在移动的资源和客户。
- 性能透明度:允许系统重新配置以 提高性能负荷变化
- 缩放透明度:在应用程序结构没有变化的情况下能够在规模上扩展或伸缩系统,以提高吞吐量处理能力。
cap理论
定理:任何分布式架构都只能同时满足两点,无法三者兼顾。
- Consistency(一致性),数据一致更新,所有的数据变动都是同步的。
- 对某个指定的客户端来说,读操作能返回最新的写操作。对于数据分布在不同节点上的数据上来说,如果在某个节点更新了数据,那么在其他节点如果都能读取到这个最新的数据,那么就称为强一致,如果有某个节点没有读取到,那就是分布式不一致。
- Availability(可用性),好的响应性能。
- 非故障的节点在合理的时间内返回合理的响应(不是错误和超时的响应)。可用性的两个关键一个是合理的时间,一个是合理的响应。合理的时间指的是请求不能无限被阻塞,应该在合理的时间给出返回。合理的响应指的是系统应该明确返回结果并且结果是正确的,这里的正确指的是比如应该返回50,而不是返回40。
- Partition tolerance(分区容忍性)可靠性,机器宕机是否影响使用。
- 当出现网络分区后,系统能够继续工作。打个比方,这里个集群有多台机器,有台机器网络出现了问题,但是这个集群仍然可以正常工作。
选择 | 说明 |
---|---|
CA | 放弃分区容错性,保证一致性和可用性,其实就是传统的单机数据库的选择。 |
AP | 放弃一致性(这里说的一致性是强一致性),追求分区容错性和可用性,这是很多分布式系统设计时的选择,例如很多 NoSQL 系统就是如此。 |
CP | 放弃可用性,追求一致性和分区容错性,基本不会选择,网络问题会直接让整个系统不可用。 |
base理论
BASE理论是 Basically Available(基本可用)、Soft state(软状态)和 Eventually consistent (最终一致性)三个短语的缩写。BASE理论是对CAP理论中的一致性和可用性权衡的结果,通过对互联网系统分布式实践的总结,其核心思想是在分布式系统中,即使无法做到强一致,但每个服务可以结合自身的业务特点,采用适合自己的方式使系统达到最终一致性。BASE理论中的三要素描述如下:
1、基本可用(Basically Available)
基本可用是指分布式系统在出现故障后,允许部分可用性损失,即是保证核心服务或链路是可用的。 比如:电商大促,当出现访问量陡增,为了保证系统的可用性,部分商户可能被引导到降级页面,保证大部分商家的一个可用性。
2、软状态 (Soft state)
软状态指允许系统中的数据存在中间状态,并认为该中间状态的存在不会影响系统的整体。比如电商网站上看到的商品剩余数量,评论数据,点赞数等;
3、最终一致性(Eventually consistent)
最终一致性强调的是所有的数据副本,在经过一段时间的同步之后,最终都能够达到一个一致的状态。因此,最终一致性的本质是需要系统保证最终数据能够达到一致,而不需要实时保证系统数据的强一致性。
总的来说,BASE理论面向的是大型高可用可扩展的分布式系统,和传统的事物 ACID 特性是相反的,它完全不同于 ACID 的强一致性模型,而是通过牺牲强一致性来获得可用性,并允许数据在一段时间内是不一致的,但最终达到一致状态。但是在分布式系统的场景中,不同的业务单元对数据的一致性要求是不同的,因此在架构设计中,ACID与BASE理论往往是结合一起考虑的。
soa(Service-Oriented Architecture)
面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互
优点
- 松耦合:由于服务自治,有一定封装边界,服务调用交互是通过发布接口。应用程序不关心服务如何被实现。
- 位置透明:服务的消费者不必关系服务位于什么地方。
- 可在异构平台间复用。可以将遗留系统包装成服务。
- 便于测试,能并行开发,较高可靠性和良好可伸缩性。
rpc
微服务
《大型网站系统与Java中间件实践》《分布式服务框架原理与实践》,