引言
最近几年,大家一直在讨论各式各样的架构,如:高并发架构、异地多活架构、容器化架构、微服务架构、高可用架构、弹性化架构。还有这些架构相关的管理型技术方法,如:DevOps、应用监控、自动化运维、SOA服务治理、去IOE等等。面对这么多的纷乱复杂的技术,很多团队都是一个个地去做这些技术,非常辛苦,但结果并不好。
分布式系统架构的目的
首先,我们需要搞清楚的是为什么需要分布式系统,而不是传统的单体架构。其实,使用分布式系统主要有以下几个原因:
- 增加系统容量:随着业务量越来越大,而要能够应对越来越大的业务量时,一台机器的性能已经无法满足业务的需求了,我们需要多台机器才能应对大规模的应用场景。所以,我们需要垂直或水平拆分业务系统,让其变成一个分布式的架构。
- 加强系统可用性:由于业务变得越来越关键,需要提高整个系统架构的可用性,这就意味着架构中不能存在单点故障。这样整个系统不会因为一台机器出现故障导致整体不可用。所以需要通过分布式架构来冗余系统以消除单点故障,从而提高系统的可用性。
以上是整个分布式系统架构的主要目的,当然,它还具体一些其它方面的优势,比如:
- 模块化:分布式系统架构采用的是一个服务一个模块,所以系统模块重用性更高;
- 持续发布和提高效率:因为软件服务模块初拆分,开发的发布速度可以并行而变得更快;
- 扩展性高:可支持垂着的水平扩展;
- 团队协作:由于每一个服务模块都是服务接口的方式暴露的,团队协作流程也会得到改善;
- ... ...;
分布式架构的难点
不过,这个世界上并不存在完美的技术方案;采用任何一种技术方案都是“按下葫芦浮起瓢”,都是有得有失,都是一种取舍。也就是说,分布式系统在解决上述问题的同时,也