0%

分布式系统概念

分布式系统意义:

  • 升级单机处理能力的性价比越来越低
  • 单机处理能力存在瓶颈
  • 稳定性和可用性

基础理论

多进程

  • 多线程共享了进程的内存空间,多进程内存空间是独立的。
  • 多进程的单个进程出现问题,有可能不会造成整体不可用(取决于实现)

多线程

  • 基于共享容器协同的多线程模式
  • 使用线程安全的容器和对象
  • 使用锁

通过事件协同的多线程模式

  • A线程需要等待B线程传递消息或事件
  • A线程与B现成获取锁的顺序有问题产生了死锁

网络IO实现方式

BIO 阻塞

Socket套接字需要使用一个线程来处理,若要支持更多的并发,就需要更多的线程。

NIO 非阻塞

基于事件驱动思想,采用Reactor模式(反应堆)

通过 Reactor 对所有的客户端Socket做处理,分发到不同的线程中处理。

AIO 异步IO

采用Proactor模式,

NIO的通知是发生在动作之前,比如可读可写的时候,进行读写

AIO的通知发生在动作之后,比如读写已经完毕,发出通知

如何从单机扩展到分布式

业务拆分,业务分层,多业务多机

服务化

透明代理,比如负载均衡

非透明代理,服务提供者

名称服务模式,收集处理服务器的调用列表,提供给请求服务器,由请求服务器进行负载均衡工作

规则服务模式,不仅仅收集处理服务器的调用列表,还提供请求服务器应该请求哪个具体的处理服务器

master->worker 模式,这种方式刚多的关注任务的分发与管理

分布式系统的难点

  • 全局时钟
  • 单点
  • 分布式事务

最终一致性

ACID 事务具有的属性,原子性,一致性,隔离性,持久性

CAP 一致性,可用性,分区容错性。分布式系统无法实现 CAP

BASE 基本可用,柔性事务,最终一致性

服务框架

业务拆分,应用之间没有交互,或者很少交互

数据访问层

分布式事务:分布式事务规范->XA,事务参与者,支持事务的服务器,资源服务器,事务管理器

两阶段提交,传统是提交,或者回滚。两阶段提交在提交之前增加了准备阶段。问题比较多。必要的情况下建议使用。

比两阶段提交更轻量的是Paxos协议

其他

ID 发号器

消息中间件