分布式架构设计相当于集中式架构。集中式机构是由一台或多台主机组成的中心节点。
简介集中式架构的优劣势:
优势:开发部署运维方便,事务处理方便,没有分布式协作。
劣势:可用性低,一旦服务器宕机,系统立即不可用;扩展性极弱,只能升级单一服务器(比如大型机),成本高,迁移困难。
分布式的架构设计:分布在不同网络的计算机上,彼此仅通过消息传递进行通信和协调的系统。
特点:
1. 分布性;
机器PC等随地域分布,就有云计算上的region(区域)和az(可用区)的概念,应用随机器分布。
2. 对等性;
默认的分布式机器和应用是对等的,没有主从之分,每个节点都是副本(拷贝)。但可以通过人为制定或者算法决定主从,提高性能容错,但会有一致性问题。
3. 并发性;
最大的挑战,比如对共享资源发起并发请求,就会在性能和一致性做一定的妥协。最大的难题之一。
4. 缺乏全局时钟;
没有先后顺序,分布式环境仅通过网络通信,时间是不对等的,顺序不可确定。表现为时间换算(时区的概念,北京时间是GMT-8,东8区)
5. 故障一定会发生。
由于网络是不可靠的,故障一定会发生,需要将故障规避之最低风险。
分布式最常出现的问题:
1. 网络延时,由于路由器、交换机或者光纤等造成网络延时,在分布式环境下,在分布式调用的时候可能被放大。
2. 网络分区域,比如云计算是跨AZ,会造成部分节点通信正常,部分通信失败。严重的时候会形成多个大脑,独立完成以前集群才能完成的功能,形成脑裂
,一致性很难得到保障。
3. 请求状态,有成功、失败、超时
4. 节点故障,分布式环境每个节点都可能出现故障,机器宕机,服务僵死。参考亚马逊S3故障。此时需要对所有节点实现监控,实时告警等
分布式架构解决了,应用的扩展性,容错性,可用性,但随着分布式系统的壮大,会出现新的问题
比如:数据一致性
每个节点对其他节点默认是不可见的,多个节点可能同时操作一个资源,比如分布式事务一致性。
节点管控
每个节点相互独立,节点的状态和日志需要统一监控收集。
架构复杂,运维困难
架构需要解决分布式本身带来的网络通信问题,多个节点的协作问题。灰度发布,自动构建发布。
分布式的本质:分布通信;分布协作。
通信问题我们不能解决,只能在硬件环境下功夫,比如多机房,跨AZ或者跨Region。
应用架构开发主要解决分布式协作问题。
本文以
从Paxos到Zookeeper 分布式一致性原理与实践 [倪超著]
做理论基础,结合自己的实践经验,不当之处请指出。
下章介绍分布式协作的理论基础
热门工具 换一换