现在的分布式架构非常复杂,但是这也是从一些简单的应用开始,随着业务复杂和高技术要求,逐步形成的。下面就简单回顾一下分布式架构的演化过程。
(1)C/S架构模式
C/S模式分为客户端应用程序和服务器端应用程序。客户端负责业务处理,而服务器端负责数据存储。通讯完全依赖ODBC或者专用的数据库驱动内置通讯组件。如图1所示。
图1 C/S模式架构图
特征:应用程序步骤在一台PC机上,而数据库或文件等所有的资源在一台服务器上。
通常服务器操作系统使用Linux或Windows Server,数据库采用关系数据库,如Sybase、MS SQL Server或Oracle DB。常用于企业内部的管理系统。
(2)B/S架构模式
B/S模式分为浏览器程序和Web服务器端应用程序。浏览器程序负责信息展现,而服务器端负责数据存储。通讯一般是采用http通信模式。如图2所示。
图2 B/S模式架构图
特征:前端PC有浏览器,而所有的资源在一台Web服务器上,通过CGI(通用网关接口)来访问外部程序,再通过ODBC访问数据库。
通常Web服务器使用IIS、Tomat、Apache等,数据库采用关系数据库。常用于企业内门户系统、综合查询等。
(3)B/A/S架构模式
采用应用服务器来充当中间件。包含了缓存模式,如图3所示。
图3 B/A/S模式架构图
特征:前端PC有浏览器,而所有的资源在一台应用服务器上。应用服务器包括了Web服务器、缓存、事务、数据库驱动等。当年非常著名的是BEA的WebLogic服务器。
前端PC有浏览器,应用服务器使用WebLogic等,数据库采用关系数据库。比较典型就是EJB架构,如曾经非常辉煌的J2EE应用架构。
(4)服务器集群模式
为了解决单点故障和高并发,采用集群机制来保证系统的稳定性。集群包括应用服务器集群和数据库服务器集群模式。如图4所示。
图4服务器集群模式架构图
特征:多台服务器通过负载均衡同时向外部提供服务,解决单台服务器处理能力和存储空间上限的问题。使用集群是系统解决高并发、海量数据问题的常用手段。通过向集群中追加资源,提升系统的并发处理能力,使得服务器的负载压力不再成为整个系统的瓶颈。
很多应用服务器都支持集群部署,同样,很多数据库系统也支持集群模式。结合这两者的集群也有非常成熟的方案。
(5)B/A分离和数据读写分离模式
Web服务器和应用服务器先分离,数据库读写分离,然后全部集群,如图5所示。
图5 B/A分离和数据读写分离模式架构图
特征:Web服务器和应用服务器分离,解决并发问题。数据库读写分离,解决数据库性能问题。数据库采用分布式数据库,文件系统采用分布式文件系统。
Web服务器和应用服务器分离,专业软件做专业软件的事,各司其职,通过反向代理模式融合。这是解决高并发量问题的常用手段。数据库读写分离,把耗费资源的写操作与轻开销的读操作分离,这是解决数据库多并发连接瓶颈的有效手段。
(6)异步处理和总线模式
这次升级的是增加了消息中间件服务(消息总线),实际上是启到异步处理方式。也可以增加服务总线,实现总线模式。如图6所示。
图6异步处理模式架构图
特征:消息总线可以增加并发,服务总线可以让系统快速扩展。
通过增加异步的消息队列机制,把前后端的同步访问变为异步访问,同时消息队列可以互联并集群,可以横向地扩展资源,缓减后端服务器的负载压力,尤其是数据库节点的事务压力。
(7)技术服务分布式模式
采用分布式数据库,把应用服务中关于技术相关的服务都独立出来,形成单独的分布式技术服务。如图7所示。
图7技术服务分布式模式架构图
特征:数据库采用分布式数据库,文件系统采用分布式文件系统。系统引入NoSQL数据库及搜索引擎。应用服务器把各个独立的技术服务都隔离开来,便于共享和管理。
分布式数据库是系统数据库拆分的重要手段,更常用的处理模式是分库分表解决方案,将不同的业务数据库部署在不同的物理服务器上。把前端服务和后端服务中有高性能要求的服务都独立出去,形成一个专业化的单独服务器,一方面是可靠性稳定性的需要,另一方面也是共享管理的要求。
(8)业务服务分布式模式(微服务)
采用纵向拆分和横向拆分,把应用服务器中业务模块拆分为独立的、颗粒度适中的小微服务。对这些小微服务进行区别对待。纵向拆分是通过梳理业务,剥离那些较少相关的业务。横向拆分模式需要识别可复用的业务,将这些复用业务拆分出来,设计出服务接口,独立部署为业务微服务,并规范服务依赖关系。如图8所示。
图8业务服务分布式模式架构图
特征:系统上按照业务进行拆分改造,应用服务器按照业务区分进行分别部署,形成业务微服务。同时公共的应用模块被提取出来,形成共享微服务,部署在分布式服务器上业务用服务器调用。
为了应对日益复杂的业务场景,通常使用分而治之的手段将整个系统业务分成不同的服务线,服务之间通过注册中心接建立关系,也可以通过消息队列进行数据分发。同时在微服务架构中,增加了很多容错和自治功能,如服务容错、熔断、限流、隔离、监控、自我感知、健康检测等。
领取专属 10元无门槛券
私享最新 技术干货