亦余心之所善兮,虽九死其犹未悔。这篇文章主要讲述分布式系统架构演进相关的知识,希望能为你提供帮助。
技术为业务而生,随着业务不断的壮大,系统会遇到各种各样的瓶颈,为了解决这些瓶颈问题,催生了不同的架构。下面,我讲解一下一般大型分布式系统的架构演进。
上图是阿里技术演进图,绝大多数系统基本上会按照这个流程发展。
1、单体应用(all in one):
以java来说,可能只是一两个war包就解决了;这时的用户量、数据量规模都比较小,这样的架构既简单实用、便于维护,成本又低,成为了这个时代的主流架构方式。
2、垂直应用架构
当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,于是将应用拆成互不相干的几个应用,这样每个应用的压力大约有原来的1/n(粗略估计值),以提升效率。
3、分布式服务架构
当垂直应用越来越多,业务上跨应用的交互不可避免,这给垂直应用架构带来了很大的挑战,如何才能进行跨应用的交互呢?RPC的出现解决了这个问 题,RPC作为分布式架构的核心内容,在提高业务复用、业务整合、架构扩展等方面发挥着不可替代的作用。因为RPC的实现方式有很多种,单一语言、跨语言 都存在相应的开源产品(当然也可以自建),这为RPC的使用及推广奠定了良好的基础。
4、SOA
分布式架构中的服务越来越多,导致交互越发复杂,如何才能更好的管理复杂的调用关系、对整个服务集群进行动态控制。服务治理被引入来解决上述问题。
个人理解,SOA就是分布式服务的一个升级版本,本质上还是分布式服务,只不过SOA为这种分布式的服务带来的复杂性提出了解决方案。
5、容器化:
随着分布式服务的数量不断增多,不可避免的遇到资源浪费现象(有的服务需要很少的资源,有的服务占用了绝大多数资源),同时会出现编译、打包耗时等问题;以及系统回滚费事、而且存在风险等;这是,容器化解决上述所有问题。
【分布式系统架构演进】
推荐阅读
- hadoop各种发行版本
- spring依赖注入引发的一点思考
- 客户端HttpClient4处理 Servlet Gzip后的内容
- httpClient4发送gzip的post数据,servlet接收并解压
- elasticsearch基础知识以及创建索引
- 使用maven构建springmvc-mybatis项目
- windows下面的copy命令,可以实现音乐 视频的拼接
- sublime text3如何使用(添加插件)
- 我电脑的配置