首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

分布式架构的30年演化史

现在的分布式架构非常复杂,但是这也是从一些简单的应用开始,随着业务复杂和高技术要求,逐步形成的。下面就简单回顾一下分布式架构的演化过程。

(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业务服务分布式模式架构图

特征:系统上按照业务进行拆分改造,应用服务器按照业务区分进行分别部署,形成业务微服务。同时公共的应用模块被提取出来,形成共享微服务,部署在分布式服务器上业务用服务器调用。

为了应对日益复杂的业务场景,通常使用分而治之的手段将整个系统业务分成不同的服务线,服务之间通过注册中心接建立关系,也可以通过消息队列进行数据分发。同时在微服务架构中,增加了很多容错和自治功能,如服务容错、熔断、限流、隔离、监控、自我感知、健康检测等。

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20190107G066XM00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券