服务端高并发分布式架构演进之路(建议收藏)

2bdaf10178cf63a7d37dfaaf563a2e67.png

若有收获,请记得分享和转发哦

说起高并发、高可用和高可扩展性,在一线互联大厂中的使用的是非常多的,也是很多小伙伴想进入一线互联网公司需要掌握的核心技术体系。今天就以淘宝为例向大家简单介绍下服务端的高并发分布式架构是如何一步步演进的。好了,我们开始今天的主题吧。

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

1. 概述

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

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

2. 基本概念

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

e2e454990bb317744711a4f8fde2d1c6.png

36a567b54f6d016dd0ff0645119a6032.png

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

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

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

56d10e0c7d8d34d1d6b48c79a694bc23.png

71d4b80b4cf3f9e15451da8bc64e776f.png

6bfef9be005f217e6056ed0086f17791.png

2af81780cd3d25cec1ebb290819ed527.png

04c819d0b6415a5b70556e5d17fb95ce.png

6649e4b53af24ac6d23efc2fe520e30c.png

a2e6260dc9b4f760a3608889c9e37f56.png

040d869a0a7f3ee9a8792871014295d0.png

91323d7f9489105e2f475ad7ba3976d7.png

440faff28faa85c565b1eeecf53bd949.png

数据库和Tomcat都能够水平扩展,可支撑的并发大幅提高,随着用户数的增长,最终单机的Nginx会成为瓶颈

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

be7fdd6b4adf94aa3a974e4c7947633a.png

由于瓶颈在Nginx,因此无法通过两层的Nginx来实现多个Nginx的负载均衡。图中的

aec3d080f7e8cc6f998f7b3a20f0c211.png

77e36e3d79e0df8392511dbd9b74d89a.png

ada5a4cb12ef4721e9dfb5188c1fd86d.png

ab912298c4e09f07ca739c0a727b53c6.png

6184cfb67ad8fec36aee307dbba942d9.png

f44382f0d5876ccc278f15a2116ee567.png

ad1ffce9a1eace1d5ce1b13a3a6968c5.png

f861220b0c2c392d797a3ee1835f682f.png

0abe149057057417364b9cf5c6174d7b.png

69d0d120a313026a92150d9b861d3bcb.png

64e328687eadeb4831c6eb833e027dee.png

41bad8922df98074f3a86d369e61278c.png

77f2a8128c254a0814c133b7c0cb07ee.png

67a4ddc357a12a27fd368f0f7a2be3b6.png

c8571891f5f71602bf6a9ae89fa3d59d.png

12bdc356f526cd110cf203ae98d50016.png

  • 监控设计。在设计阶段就要考虑监控的手段;

  • 多活数据中心设计。若系统需要极高的高可用,应考虑在多地实施数据中心进行多活,至少在一个机房断电的情况下系统依然可用;

  • 采用成熟的技术。刚开发的或开源的技术往往存在很多隐藏的bug,出了问题没有商业支持可能会是一个灾难;

  • 资源隔离设计。应避免单一业务占用全部资源;

  • 架构应能水平扩展。系统只有做到能水平扩展,才能有效避免瓶颈问题;

  • 非核心则购买。非核心功能若需要占用大量的研发资源才能解决,则考虑购买成熟的产品;

  • 使用商用硬件。商用硬件能有效降低硬件故障的机率;

  • 快速迭代。系统应该快速开发小功能模块,尽快上线进行验证,早日发现问题大大降低系统交付的风险;

  • 无状态设计。服务接口应该做成无状态的,当前接口的访问不依赖于接口上次访问的状态。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值