淘宝曹伟分析低成本、高性能MySQL云数据架构
曹伟是淘宝数据库研发组的成员,前不久他在内部分享了低成本、高性能MySQL云数据的架构分析和探索,包括架构的演变过程、系统中的角色和组件等。该文章被褚霸转发在“Erlang非业余研究”上。
在一开始,曹伟指出:
虽然近两年来NoSQL的发展很快,新产品层出不穷,但在业务中应用NoSQL对开发者来说要求比较高,而MySQL拥有成熟的中间件、运维工具,已经形成一个良性的生态圈等,因此从现阶段来看,MySQL占主导性,NoSQL为辅。
接下来,曹伟介绍了他们的工作成果:
我们(阿里集团核心系统数据库团队)……设计和实现了一套UMP(Unified MySQL Platform)系统,提供低成本和高性能的MySQL云数据服务。开发者从平台上申请MySQL实例资源,通过平台提供的单一入口来访问数据,UMP 系统内部维护和管理资源池,以对用户透明的形式提供主从热备、数据备份、迁移、容灾、读写分离、分库分表等一系列服务。平台通过在一台物理机上运行多个 MySQL实例的方式来降低成本,并且实现了资源隔离,按需分配和限制CPU、内存和IO资源,同时支持不影响提供数据服务的前提下根据用户业务的发展动 态的扩容和缩容。
曹伟分析了该系统的架构演变过程:
第一版基于mysql-proxy 0.8版修复若干bug,并对proxy插件中管理用户连接和数据库连接的状态机流程进行一些修改,同时编写Lua脚本实现去中心数据库获取用户认证信息和后台数据库地址,对用户进行验证,建立到后台数据库的连接和转发数据包等逻辑。
图:UMP系统第一版架构
他提到第一版的几个问题:
- mysql-proxy 0.8版对多线程的支持比较简单粗暴,导致几个恶劣后果:
- 造成“惊群”现象,多个线程被唤醒但只有一个线程需要去任务;
- 任务的CPU亲缘性比较差,在同一个状态机上触发的事件会在多个处理器上来回切换执行;
- mysql-proxy中还使用了全局Lua锁,同时仅允许一个工作线程执行Lua脚本,因此mysql-proxy多线程模式下的性能远不能同CPU核数保持线性增长,甚至在16核上的性能还不如4核。
- 以上原因导致单进程模式时,一台物理机上需要部署多个进程才能有效利用机器的处理能力,但给部署、监控和服务的升级带来麻烦。
- 其次,限于mysql-proxy的框架,功能上不容易扩展,实现用户的连接数限制、QPS限制、以及主从切换、读写分离、分库分表等一系列功能比较困难。
- 最后,mysql-proxy的社区近些年来并不活跃,而且C语言对开发者功底的要求比较高,很难要求团队所有成员协同开发出兼顾优雅和正确性的代码。
因此,他们决定用Erlang重写,原因在于:
- 和操作系统的进程/线程相比,Erlang进程同样是并发执行的单位,但特别的轻量级,它是在Erlang虚拟机内管理和调度的“绿进程”,即用户态进程。
- Erlang/OTP很好的抽象了开发一个分布式的、高容错性的应用程序所需的要素,包括:网络编程框架、序列化和反序列化、容错、热部署。
在设计当前的UMP系统架构时,团队遵循了以下原则:
- 系统对外保持单一入口,对内维护单一的资源池。
- 保证服务的高可用性,消除单点故障。
- 保证系统是弹性可伸缩的,可以动态的增加、删减计算与存储节点。
- 保证分配给用户的资源也是弹性可伸缩的,资源之间相互隔离。
图:UMP系统现有架构
UMP系统中有如下角色:
- controller服务器:向UMP集群提供各种管理服务,实现元数据存储、集群成员管理、MySQL实例管理、故障恢复、备份、迁移、扩容等功能。
- proxy服务器:向用户提供访问MySQL数据库的服务,它完全实现了MySQL协议;除数据路由的基本功能外,Proxy服务器中还实现了资源限制、屏蔽MySQL实例故障、读写分离、分库分表、记录用户访问日志的功能。
- agent服务器:部署在运行MySQL进程的机器上,用来管理每台物理机上MySQL实例,执行创建、删除、备份、迁移、主从切换等操作,收集和分析MySQL进程的统计信息、bin log、slow query log。
- API/Web服务器:向用户提供了系统管理界面。它们是基于开源项目Mochiweb与Chicago Boss开发的Mochiweb提供http/https服务。
- 日志分析服务器:存储和分析Proxy服务器传入的用户访问日志,并实现了实时索引供用户查询一段时间内的慢日志和统计报表。
- 信息统计服务器:定期将采集到的用户的连接数、QPS数值,以及MySQL实例的进程状态用RRDtool进行统计,可以画图展示到Web界面上,也可以为今后实现弹性的资源分配和自动化的MySQL实例迁移提供依据。
依赖的开源组件有:
- Mnesia:Mnesia是OTP提供的分布式数据库,支持事务,支持透明的数据分片,利用两阶段锁实现分布式事务,可以线性扩展到至少50个节点。Mnesia更倾向于牺牲可用性来换取强一致性,但它也提供了脏读、脏写操作,可以绕过事务管理去操作数据。
- LVS:实现负载均衡,用户应用重连后会被LVS定向到其他的proxy上。
- RabbitMQ:提供UMP系统中各节点间的通信(不包括SQL查询、日志等大数据流的传输,这些还是直接走TCP的)
- ZooKeeper:主要发挥配置服务器、分布式锁,以及监控所有MySQL实例的作用
对于该系统的作用,曹伟总结到:
在多个组件的协同作业下,整个系统实现了对用户透明的容灾、读写分离、分库分表功能。系统内部还通过多个小规模用户共享同一个MySQL实例,中等 规模用户独占一个MySQL实例,多个MySQL实例共享同一个物理机的方式实现资源的虚拟化,降低整体成本。在资源隔离方面,通过Cgroup限制 MySQL进程资源,以及在proxy服务器端限制QPS相结合的方法,UMP系统实现了资源虚拟化的同时保障用户的服务质量。此外,UMP系统综合运用 SSL数据库连接、数据访问IP白名单、记录用户操作日志、SQL拦截等技术保护用户的数据安全。
对于该系统的应用,曹伟指出:
UMP系统的一些组件,例如proxy服务器和日志分析服务器,目前已经运用在天猫的聚石塔平台中,为电商和ISV提供安全的数据云服务。此 外,UMP系统还运用在淘宝的店铺装修平台中,为开发者提供数据服务。下一阶段,我们希望UMP系统可以为进一步降低集团内部数据存储的成本做出贡献。
http://www.infoq.com/cn/news/2012/10/taobao-ump
相关推荐
技术平台与高技术企业技术核心能力提升的微观机制分析,曹兴,曹伟针,技术平台的构建、升级和更新直接影响高技术企业技术核心能力的形成和提升。本文对技术平台的构成要素及结构进行了分析,认为各要
电磁场与电磁波理论(第2版)_徐立勤_曹伟_课后习题答案.
云计算专业公司ShapeBlue的云计算架构师PaulAngus,在本文中阐明了一些可能导致人们对CloudStack的物理网络架构方面一头雾水的部分。导致大家一头雾水的根源之一是,人们提到CloudStack环境中的“主机”时,他们可能...
添加Al2O3对CuW合金阴极斑点运动特性的影响,曹伟产,马德强,采用熔渗法制备了添加Al2O3的CuW合金,研究了添加Al2O3的CuW合金的显微组织和真空击穿性能,同时利用高速摄影观察CuW合金的阴极斑点运�
不完全竞争、银行规模与货币政策传导--基于银行微观数据的面板门限分析,曹伟,周俊仰,信贷渠道是货币政策传导的重要途径。本文选取我国2009-2013年44家商业银行的微观数据,构建了表示银行业不完全竞争程度的HHI...
提出一种基于游程标号回传的二值图像连通体标记算法,该算法以游程为处理对象,将目标结构中的标号传播到游程结构中,进行游程连通性判断,将与当前游程连通的游程中最小值回传到对应的目标结构中,确保在同一连通域...
CloudStack技术沙龙北京站第四期在中关村云基地举行,CloudStack committer李学辉、中航信高级架构工程师曹伟、天云趋势测试工程师沈楠进行了分享,现场近50名开发者参与了活动讨论。
由于资源有限个人不能拥有计算服务器以及交换机等硬件设备,所以在VMWare上搭建cloudstack的测试开发环境,支持高级网络部署模式,体验更多功能。
电力行业发展循环经济促进可持续发展实践分析,曹伟娜,李文霞,本文论述了电力行业发展循环经济的必要性以及发展循环经济的主要措施,并以大连某热电厂“上大压小”工程为例,探讨了该企业实施
考虑流固强耦合的水中结构三维地震反应分析,曹伟,王志华,基于引入了任意拉格朗日-欧拉(Aribitrary Lagrange-Euler,简称ALE)描述的Navier-Stokes方程,建立了考虑流固强耦合效应的水中圆柱结构三维有�
股价波动性VAR和VAR_ADJ VAR_ADJ是t年公司i的股价回报的方差,等 ...[2]王国臣,傅斌,曹伟,张佐敏.投资者情绪、新股申购资金冻结与股 价波动[J].中央财经大学学报,2017(11):38-49. 压缩包所含文件: 数据样例: 分
股价波动性VAR和VAR_ADJ VAR_ADJ是t年公司i的股价回报的方差,等 ...[2]王国臣,傅斌,曹伟,张佐敏.投资者情绪、新股申购资金冻结与股 价波动[J].中央财经大学学报,2017(11):38-49. 压缩包所含文件: 数据样例: 分
人民币汇率变动对国内物价水平的传递效应研究,曹伟,钱诚辰,近年来,人民币对美元汇率进入双向波动
电磁数值计算即矩量法研究电磁场的教材,是曹伟老师编写,里面的内容为全英文版。
利用43飞秒的强激光脉冲实现单个阿秒脉冲输出的新机制,陆培祥,曹伟,本文研究了多个光周期的长脉冲(43fs)激光与氖原子相互作用产生的高次谐波的辐射特性。通过计算机数值模拟,我们发现当激光场的�
VIVI的TFTP功能的实现,曹伟,杨万麟,VIVI是MIZI公司开发的S3C2410的Bootloader程序。该Bootloader程序只支持通过串口下载文件的方式。本文通过为S3C2410处理器添加CS8900网络芯片的驱
脱硫灰改良软土特性的研究及工程应用,曹伟,,本文采用金坛市薛埠镇附近,属于扬州至溧阳高速公路镇江至溧阳段的软土和南京下关电厂的脱硫灰,在探讨了“脱硫灰—石灰”体系改
下一代分组传送网的生存性技术研究,曹伟,陈莹,本文针对目前分组传送网的发展现状,对分组传送网生存性的几种关键技术(面向连接的T-MPLS网络保护机制,基于路径优化的等价多路径
乙型肝炎病毒携带父亲致婴儿感染的研究,卢银平,曹伟,目的:探讨父亲乙型肝炎病毒(HBV)感染携带对婴儿HBV感染的影响。 方法:收集88例本院妇产科出生婴儿脐血及其父亲血标本,经筛查已确�
此代码由曹文汉于2020年编写它是出版物的一部分: 曹伟; 阿尔沙里夫,N.; 黄中; 怀特,AE; 王,Y。 Brown, KA,大规模平行无悬臂的原子力显微镜。 纳特。 公社2021, 12 (1), 393。 ...