10+ 张图解|高并发分布式架构演进

0. 目录和说明

文章在介绍一些基本概念后,按照以下过程阐述了整个架构的演进过程:

  • 单机架构

  • 第一次演进:Tomcat 与数据库分开部署

  • 第二次演进:引入本地缓存和分布式缓存

  • 第三次演进:引入反向代理实现负载均衡

  • 第四次演进:数据库读写分离

  • 第五次演进:数据库按业务分库

  • 第六次演进:把大表拆分为小表

  • 第七次演进:使用 LVS 或 F5 来使多个 Nginx 负载均衡

  • 第八次演进:通过 DNS 轮询实现机房间的负载均衡

  • 第九次演进:引入 NoSQL 数据库和搜索引擎等技术

  • 第十次演进:大应用拆分为小应用

  • 第十一次演进: 复用的功能抽离成微服务

  • 第十二次演进:引入企业服务总线 ESB 屏蔽服务接口的访问差异

  • 第十三次演进:引入容器化技术实现运行环境隔离与动态服务管理

  • 第十四次演进:以云平台承载系统

1. 概述

本文以淘宝作为例子,介绍从一百个到千万级并发情况下服务端的架构的演进过程,同时列举出每个演进阶段会遇到的相关技术,让大家对架构的演进有一个整体的认知,文章最后汇总了一些架构设计的原则。

特别说明:本文以淘宝为例仅仅是为了便于说明演进过程可能遇到的问题,并非是淘宝真正的技术演进路径

2. 基本概念

在介绍架构之前,为了避免部分读者对架构设计中的一些概念不了解,下面对几个最基础的概念进行介绍。

  • 分布式:系统中的多个模块在不同服务器上部署,即可称为分布式系统,如 Tomcat 和数据库分别部署在不同的服务器上,或两个相同功能的 Tomcat 分别部署在不同服务器上

  • 高可用:系统中部分节点失效时,其他节点能够接替它继续提供服务,则可认为系统具有高可用性

  • 集群:一个特定领域的软件部署在多台服务器上并作为一个整体提供一类服务,这个整体称为集群。如 Zookeeper 中的 Master 和 Slave 分别部署在多台服务器上,共同组成一个整体提供集中配置服务。在常见的集群中,客户端往往能够连接任意一个节点获得服务,并且当集群中一个节点掉线时,其他节点往往能够自动的接替它继续提供服务,这时候说明集群具有高可用性

  • 负载均衡:请求发送到系统时,通过某些方式把请求均匀分发到多个节点上,使系统中每个节点能够均匀的处理请求负载,则可认为系统是负载均衡的

  • 正向代理和反向代理:系统内部要访问外部网络时,统一通过一个代理服务器把请求转发出去,在外部网络看来就是代理服务器发起的访问,此时代理服务器实现的是正向代理;当外部请求进入系统时,代理服务器把该请求转发到系统中的某台服务器上,对外部请求来说,与之交互的只有代理服务器,此时代理服务器实现的是反向代理。简单来说,正向代理是代理服务器代替系统内部来访问外部网络的过程,反向代理是外部请求访问系统时通过代理服务器转发到内部服务器的过程。

3. 架构演进

3.1 单机架构

以淘宝作为例子。在网站最初时,应用数量与用户数都较少,可以把 Tomcat 和数据库部署在同一台服务器上。浏览器往 www.taobao.com 发起请求时,首先经过 DNS 服务器(域名系统)把域名转换为实际 IP 地址 10.102.4.1,浏览器转而访问该 IP 对应的 Tomcat。

随着用户数的增长,Tomcat 和数据库之间竞争资源,单机性能不足以支撑业务

3.2 第一次演进:Tomcat 与数据库分开部署

Tomcat 和数据库分别独占服务器资源,显著提高两者各自性能。

随着用户数的增长,并发读写数据库成为瓶颈

3.

  • 4
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值