分布式系统架构
分布式系统是一个硬件或者软件组件分布在不同的网络计算机上,彼此之间仅仅通过消息传递来进行通信和协调的系统。
1. 系统特点
分布性:系统中的节点可以在空间上任意分布。
并发性:系统中的多个节点,可能会并发地操作一些共享的资源,如数据库或分布式存储等。
缺乏全局时钟:系统缺乏一个全局的时钟控制。
故障性:系统随时有可能发生故障。通信异常(网络不可达,网络延时高,路由器丢包等)、网络分区(又称脑裂,一些子节点之间能够相互通信,但是不能与另外一些节点进行通信)、三种状态(成功、失败、超时)、节点异常(运行过程中出现宕机等)。
2. 节点通信
分布式系统下节点间服务通信有两种途径,一种是通过 RPC 实现两点间通信,可以是同步的,也可以是异步的;一种是通过消息中间件实现通信,一般是异步方式。
同步模式下,客户端发起调用并阻塞当前线程,直到服务端处理完毕返回响应才完成整个调用过程;异步模式下,客户端发起调用后立即返回,并记录当前请求,直到接收到服务端响应后才找到对应的请求进行结果的处理,并完成整个调用过程。
消息中间件一般是独立部署的一组应用程序,负责消息的接收和投递。整个通信过程是异步的,有消息发布者、消息中间件和消息订阅者三个角色。消息从发布端发出后,会被消息中间件接收并做持久化,消息的消费有两种常见的模式,一种是消息中心主动投递的模式(推模式),一种是订阅者主动拉取的模式(拉模式)。