2.1.3 分布式架构
随着业务压力增大,并发访问会成为单体架构的瓶颈,最简单的解决方案就是把单体服务横向扩展为多体架构,即将1台服务器分散扩容为N台,分而治之,也就是从单体架构变为分布式架构。但是,扩容为分布式架构也有一个问题,即如何保证用户的请求均匀分散到这N台服务器?倘若用户的流量仍然集中访问其中的某台服务器,这样的分布式架构在本质上与单体架构没有任何区别。要解决这个问题就必须增加一个新模块——负载均衡,此时的架构变成了如图2-1所示。
图2-1 负载均衡架构图
负载均衡一般分为硬负载和软负载,常见的负载均衡算法有轮询、加权、地址散列、最少链接等。有了负载均衡后,不会因为某一个服务的宕机而导致整体服务不可用,架构的可用性大大加强。除了应用的分布式,根据业务量的大小,数据库也会进行水平或垂直拆分,通过分布式架构赋予整体架构高负载的能力。
分布式架构2.0阶段不仅是在部署上实现分布式,应用的边界也更加清晰,从单一架构的大单一职责,拆分出一些大的应用,逐步形成多种服务之间的分布式调用。还是以电商为例,这里可能会拆分出用户服务、订单服务、商品服务、库存服务四大应用,应用之间通过接口进行交互,调用形式可能是REST或者RPC。
1.分布式架构的优点
·低耦合:有了功能模块的拆分,使用接口进行通信,降低了对数据库的依赖,模块耦合性降低。
·职责清晰:把应用拆成若干个子应用后,一般也是由不同团队进行维护的,这样一来,不同团队与应用的职责也就更加清晰了。
·部署方便:每个应用的发布互相独立、互不干扰,发布和部署更加灵活方便。
·稳定性更高:不会因为某一个应用或功能模块出现问题导致整体服务不可用,整个系统的稳定性更高。
2.分布式架构的缺点
系统间的依赖和链路增多,会增加接口开发的工作量,同时增大服务之间的维护成本,但整体上利大于弊。