BpFile(id=236, bpId=150, name=云上高并发系统改造, author=null, keyword=高并发改造,分库分表,水平扩展,数据拆分, description=在水平扩展阶段通过SLB挂nginx增加负载均衡扩展性,在数据库拆分阶段通过DRDS进行分库分表。, position=null, ossUrl=bp-KEIEI5YWN8NLANW4.pdf, tags=null, level=null, tagList=null, products=null, productList=null, hotspot=null, oneClick=1, createTime=null, modifiedTime=null, timeConsuming=null, status=1, pdfDescription=
场景描述
随着业务的发展,系统并发压力越来越大,如何
进行系统改造以满足高并发场景的业务需求成
为了一个技术难题。本实践抽象于客户的实际场
景,提供高并发下系统改造的理论指导和部分实
操演示。主要适用于以下场景:
1.系统并发压力大,需要进行系统应用改造。
2.数据层并发压力大,需进行分库分表改造。
3.数据库数据量巨大,亟待分库分表解决查询
和写入瓶颈的场景。
方案优势/解决问题
1.在水平扩展阶段,我们除了通过SLB做负载
均衡外,我们可以通过SLB下挂nginx的方
式,增加负载均衡侧的可扩展性
2.在数据库拆分阶段,在做好数据规划后,我
们借助DTS进行数据迁移,通过DRDS将
RDS MySQL的数据拆分到多个分库和分
表中。
产品列表
⚫专用网络VPC
⚫负载均衡SLB
⚫云服务器ECS
⚫数据库RDSMySQL
⚫数据传输服务DTS
⚫PrivateZone
⚫分布式关系型数据库DRDS
, templateId=KX3B2Z49NM016SPK, freetry=null, visitTime=null, visitCount=null, video_url=null, buttonName=null, buttonUrl=null, targetId=KX3B2Z49NM016SPK, partner=null, partnerUrl=null, partnerLogo=null, cooperation=, cooperationList=null)
1
云上高并发系统改造 最佳实践
部署架构图 场景描述
随着业务的发展,系统并发压力越来越大,如何
进行系统改造以满足高并发场景的业务需求成
为了一个技术难题。本实践抽象于客户的实际场
景,提供高并发下系统改造的理论指导和部分实
操演示。主要适用于以下场景:
1. 系统并发压力大,需要进行系统应用改造。
2. 数据层并发压力大,需进行分库分表改造。
3. 数据库数据量巨大,亟待分库分表解决查询
和写入瓶颈的场景。
方案优势/解决问题
1. 在水平扩展阶段,我们除了通过 SLB做负载
均衡外,我们可以通过 SLB下挂 nginx的方
式,增加负载均衡侧的可扩展性
2. 在数据库拆分阶段,在做好数据规划后,我
们借助 DTS进行数据迁移,通过 DRDS将
RDS MySQL 的数据拆分到多个分库和分
产品列表
表中。
⚫ 专用网络 VPC
⚫ 负载均衡 SLB
⚫ 云服务器 ECS
⚫ 数据库 RDS MySQL
⚫ 数据传输服务 DTS
⚫ PrivateZone
⚫ 分布式关系型数据库 DRDS
2云服务器 ECS(产品名称) 文档模板(手册名称)/文档版本信息
阿里云
云上高并发系统改造
最佳实践
文档版本:20200311(发布日期)
文档版本:20150122(发布日期) II
3云上高并发系统改造 文档版本信息
文档版本信息
文本信息
属性 内容
文档名称 云上高并发系统改造最佳实践
文档编号 150
文档版本 V1.1
版本日期 2020-03-11
文档状态 外部发布
制作人 明中
审阅人
文档变更记录
版本编号 日期 作者 审核人 说明
V1.0 2020-03-06 明中,言楼,清洵,期会,阿瑟 创建
左郢,遥方,石镇
V1.1 2020-03-11 筱晖,明中 - 文档优化完善
文档版本:20200311(发布日期) I
4云上高并发系统改造 前言
前言
概述
随着业务的发展,系统并发压力越来越大,如何进行系统改造以满足高并发场景的业
务需求成为了一个技术难题。本实践抽象于客户的实际场景,提供高并发下系统改造
的理论指导和部分实操演示。
应用范围
1. 系统并发压力大,需要进行系统应用改造的场景。
2. 数据层并发压力大,需要进行分库分表改造的场景。
3. 数据库数据量巨大,亟待分库分表解决查询和写入瓶颈的场景。
名词解释
⚫ VPC:Virtual Private Cloud,简称 VPC。基于阿里云创建的自定义私有网络, 不
同的专有网络之间二层逻辑隔离,可以在自己创建的专有网络内创建和管理云产
品实例,比如 ECS、负载均衡、RDS等。在创建前,您需要结合具体业务,规划
VPC 和交换机的数量及网段等。更多信息,请参见:
https://www.aliyun.com/product/vpc
⚫ ECS:Elastic Compute Service,简称 ECS。是阿里云提供的一种基础云计算服
务。无需提前采购硬件设备,根据业务需要,随时创建所需数量的云服务器 ECS
实例。在使用过程中,随着业务的扩展,可以随时扩容磁盘、增加带宽。也能随时
释放资源,节省费用。更多信息,请参见:https://www.aliyun.com/product/ecs
⚫ RDS:Relational Database Service,简称 RDS,是一种稳定可靠、可弹性伸缩
的在线数据库服务。基于阿里云分布式文件系统和 SSD盘高性能存储,RDS支
持 MySQL、SQL Server、PostgreSQL、PPAS和 MariaDB引擎,提供了容灾、
备份、恢复、监控、迁移等方面的全套解决方案,彻底解决数据库运维的烦恼。更
多信息,请参见:https://help.aliyun.com/product/26090.html
⚫ DTS:Data Transmission Service,简称 DTS, 是一种集数据迁移、数据订阅及
数据实时同步于一体的数据传输服务。解决远距离、毫秒级异步数据传输难题。更
多信息,请参见:https://help.aliyun.com/product/26590.html
⚫ 云解析:云解析(PrivateZone),是基于阿里云专有网络 VPC(Virtual Private
Cloud)环境的私有域名解析和管理服务。您能够在自定义的一个或多个专有网络
文档版本:20200311(发布日期) III
5云上高并发系统改造 前言
中将私有域名映射到 IP资源地址,同时在其他网络环境无法访问您的私有域名。
更多信息,请参见:https://help.aliyun.com/product/64583.html
⚫ 安全组:安全组是一种虚拟防火墙,具备状态检测和数据包过滤功能,用于在云端
划分安全域。您可以通过配置安全组规则,允许或禁止安全组内的 ECS实例对公
网 或 私 网 的 访 问 。 更 多 信 息 , 请 参 见 :
https://help.aliyun.com/document_detail/25387.html
⚫ 负载均衡(Server Load Balancer):SLB是将访问流量根据转发策略分发到后端
多台云服务器(ECS实例)的流量分发控制服务。负载均衡扩展了应用的服务能
力 , 增 强 了 应 用 的 可 用 性 。 更 多 信 息 , 请 参 见 :
https://help.aliyun.com/document_detail/27539.html
⚫ DRDS:DRDS 是一款基于 MySQL 存储、采用分库分表技术进行水平扩展的分
布式 OLTP 数据库服务产品,支持 RDS for MySQL 以及 POLARDB for MySQL,
产品目标旨在提升数据存储容量、并发吞吐、复杂计算效率三个方面的扩展性需
求。更多信息,请参见:https://help.aliyun.com/document_detail/117729.html
文档版本:20200311(发布日期) IV
6云上高并发系统改造 目录
目录
文档版本信息 .............................................................................................................................................................. I
法律声明 ..................................................................................................................................................................... II
前言 ............................................................................................................................................................................ III
目录 ............................................................................................................................................................................. V
最佳实践概述 ............................................................................................................................................................. 1
前置条件 ..................................................................................................................................................................... 1
1. 基础环境配置 ..................................................................................................................................................... 2
1.1. 背景介绍 ............................................................................................................................................. 2
1.2. 登录 cloudshell .................................................................................................................................... 2
1.3. 创建华东 2(上海)地域 VPC和 VSWITCH ...................................................................................... 2
1.4. 创建应用环境 ECS实例并启动 .......................................................................................................... 3
1.5. 创建外网访问 SLB使用的弹性公网 IP .............................................................................................. 4
1.6. 创建临时服务器并绑定 EIP ............................................................................................................... 4
2. 部署高并发应用环境 ......................................................................................................................................... 5
2.1. 部署 nginx ............................................................................................................................................ 5
2.2. 部署应用 ........................................................................................................................................... 10
2.3. 创建和配置负载均衡 SLB ................................................................................................................. 12
2.4. 应用可访问性验证 ........................................................................................................................... 21
3. 数据库基础环境配置 ....................................................................................................................................... 22
3.1. 创建 RDS实例 ................................................................................................................................... 22
3.2. 配置 RDS实例 ................................................................................................................................... 27
3.3. 数据库初始化 ................................................................................................................................... 33
4. 部署高并发数据库环境 ................................................................................................................................... 39
4.1. 创建 DRDS实例 ................................................................................................................................ 39
4.2. 创建 DRDS数据库 ............................................................................................................................ 42
5. 数据迁移和压测演练 ....................................................................................................................................... 49
5.1. TPC-H简介 ........................................................................................................................................ 49
5.2. TPC-H构建的数据库模型 ................................................................................................................. 49
5.3. 如何选择拆分键 ............................................................................................................................... 50
5.3.1. 什么是拆分键 ........................................................................................................................... 50
5.3.2. 主要数据表拆分原则和技巧.................................................................................................... 50
5.3.3. 典型拆分场景 ........................................................................................................................... 51
5.3.4. 本例拆分 demo ......................................................................................................................... 51
5.4. 如何选择分片数 ............................................................................................................................... 52
5.5. DRDS建表 ......................................................................................................................................... 53
5.6. 数据迁移 ........................................................................................................................................... 55
5.7. 压测演练 ........................................................................................................................................... 59
附录 ........................................................................................................................................................................... 62
文档版本:20200311(发布日期) V
7云上高并发系统改造 最佳实践概述
最佳实践概述
应用场景
随着越来越多的在线业务需要提供更大并发的 scale-up 和 scale out能力,整体的业
务系统需要调整。
没有最优的架构,只有最合适的架构,一切系统设计原则都要以解决业务问题为最终
目标,脱离实际业务的技术情怀架构往往会将系统带入大坑。所以,解决问题的前提
是要搞清楚我们今天面临的业务量有多大,增长走势是什么样的,而且解决高并发的
过程,一定是一个循序渐进逐步的过程。
本着以上原则整个系统的进化可以参考下图(图片来自云栖社区):
整个系统进化分为三个阶段:
⚫ x轴,水平扩展阶段,通过负载均衡服务器不断地横向扩充应用服务器,水平扩展
最重要的问题是不同服务器之间如何保持 session和会话同步。尽量减少不同服
务器切换时对用户侧的影响,水平扩展后自然会遇到一些问题,如 DB的瓶颈(连
接数,iops)等,需要同步去做优化调整。
⚫ z轴,就是对数据库的拆分,难度上了一个台阶。Sharding的基本思想就是如何
将一个数据库进行切分,可以分为水平切分和垂直切分。水平切分相对简单,一主
多从、多主都可以,根据业务的需要,多主切分设计时需要注意主键的关系,解决
多写在进行数据同步时的冲突问题;垂直拆分更加复杂,一般都会涉及到架构逻
文档版本:20200310(发布日期) 1
8云上高并发系统改造 最佳实践概述
辑的改造,需要引入中间件,来进行数据源的管理,垂直拆分时把关系紧密(比如
同一模块)的表切分出来放在一个库上,或者通过 hash进行拆分,从而将原有数
据库切分成类似矩阵一样可以无限扩充的队列。
⚫ y轴扩展,最后就是功能分解了,也就是我们讲的微服务切分。微服务拆分将巨型
应用按照功能模块分解为一组组不同的服务,淘宝的系统当年也经历了这样的过
程,通过五彩石项目从单一的 war包拆分成了今天的大家看到买家,卖家中心,
交易等系统。
本文主要基于水平扩展阶段和数据库拆分阶段探讨高并发系统的改造。
技术架构
本实践基于如下图所示的技术架构和主要流程进行演示。
文档版本:20200310(发布日期) 2