企业级架构发展过程概述

这篇文章主要是给大家介绍下企业级架构的发展过程,这十多年我处在中国一线互联网公司,基本见证了整个中国互联网企业架构变迁的历史。
一.简单的单体应用
在这个阶段企业主要的需求是线下的内容线上化,对于技术部门来说,就是如何快速构建一个系统,满足业务线上化的需求。图1-1是这个阶段企业的基本架构。

图1-1

构建出这样一个系统后,后面基本就是在WEB应用里面去堆业务,这时候大家开发效率挺高的,也不断地把业务从线下往线上搬迁。慢慢得大家发现一个问题,刚开始WEB应用是单台的,随着业务增多,访问人数在增加。单台机器有点抗不住压力了,有时候会发生down机了。

二.引入集群

这时候我们开始引入负载均衡,进行集群部署。如图1-2

图1-2

这时候WEB集群内每台机器部署的代码是一样的,但是通过集群的方式提升了整个应用的支撑能力。一般来说负载均衡有软件的和硬件的。一般硬件的有F5,软件的有apache,LVS, Nginx等,这里不详细展开。大家有兴趣可以自己去查看相关的资料。

三.数据库分库分表

随着业务的发展,WEB集群因为能水平扩展能支撑越来越多的客户。这时候数据库开始出现瓶颈了。这时候有几种策略,最简单的方式,提升数据库服务器硬件。比如从普通集群变成小型机等。早年间我给银行开发过系统,那时候银行很多Oracle数据库都是部署到小型机上面的。但是通过硬件提升,到一定程度后容易到达瓶颈。这时候数据库要考虑分库分表,同时可以进行。如图1-3

图1-3

四.引入缓存
数据库分库分表的同时往往会引入缓存相关的内容,数据库撑不住一些内容可以往缓存上去放。到底是先数据库进行分库分布,还是先上缓存,还是两者一起上这个取决于具体的业务需要。本质上都是通过将存储的一些内容分离,提升存储的性能。
引入缓存后的架构,如图1-4

图1-4

五.服务进行拆分
随着WEB集群的扩大,越来越多的业务沉淀到里面。WEB集群里面的应用,虽然是集群的方式在部署,但是
本质上还是单体的应用,无法满足业务的发展。需要对业务进行一些拆分,拆分后的架构。如图1-5

图1-5

应用拆分后,必然会涉及到应用间的交互。系统间交互一般都是RPC调用和消息队列。一般比较简单的都是可以直接使用hession等调用,但是复杂到一定程度后涉及到服务治理相关了。一般有dubbo等分布式服务框架可以使用。消息队列一般可以使用activemq, kafka等。到这里一般一个互联网应用架构的雏形出来了。当然现在很多应用还是涉及到前后端分离等等这里不再详细展开。

这篇是概述,是这个系列的第一篇,后面会对里面的一些具体内容进行展开。