分布式系统架构演进

亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述分布式系统架构演进相关的知识,希望能为你提供帮助。
技术为业务而生,随着业务不断的壮大,系统会遇到各种各样的瓶颈,为了解决这些瓶颈问题,催生了不同的架构。下面,我讲解一下一般大型分布式系统的架构演进。

上图是阿里技术演进图,绝大多数系统基本上会按照这个流程发展。
1、单体应用(all in one):
以java来说,可能只是一两个war包就解决了;这时的用户量、数据量规模都比较小,这样的架构既简单实用、便于维护,成本又低,成为了这个时代的主流架构方式。
2、垂直应用架构
当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,于是将应用拆成互不相干的几个应用,这样每个应用的压力大约有原来的1/n(粗略估计值),以提升效率。
3、分布式服务架构
当垂直应用越来越多,业务上跨应用的交互不可避免,这给垂直应用架构带来了很大的挑战,如何才能进行跨应用的交互呢?RPC的出现解决了这个问 题,RPC作为分布式架构的核心内容,在提高业务复用、业务整合、架构扩展等方面发挥着不可替代的作用。因为RPC的实现方式有很多种,单一语言、跨语言 都存在相应的开源产品(当然也可以自建),这为RPC的使用及推广奠定了良好的基础。
4、SOA
分布式架构中的服务越来越多,导致交互越发复杂,如何才能更好的管理复杂的调用关系、对整个服务集群进行动态控制。服务治理被引入来解决上述问题。

  1. 服务注册、服务发现;
  2. 服务降级;
  3. 流量控制;
个人理解,SOA就是分布式服务的一个升级版本,本质上还是分布式服务,只不过SOA为这种分布式的服务带来的复杂性提出了解决方案。
5、容器化:
随着分布式服务的数量不断增多,不可避免的遇到资源浪费现象(有的服务需要很少的资源,有的服务占用了绝大多数资源),同时会出现编译、打包耗时等问题;以及系统回滚费事、而且存在风险等;这是,容器化解决上述所有问题。


【分布式系统架构演进】


    推荐阅读