淘宝曹伟分析低成本、高性能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
相关推荐
POLARDB云数据库分布式存储引擎揭秘是阿里云资深技术专家曹伟(Wei Cao)所设计的分布式存储系统,旨在满足云数据库的高性能和低延迟需求。该系统的设计理念是计算和存储分离,通过智能存储控制平面与数据平面分离,...
PolarStore通过数据平面与控制平面分离的设计,实现高性能和超低延迟,特别针对云数据库工作负载优化。阿里云资深技术专家曹伟在本专场中介绍了PolarStore的架构优势及关键技术创新。 分布式系统架构中的控制平面和...
文章分析了技术平台的构成要素及其在高技术企业技术核心能力提升中的微观机制。技术平台的构建、升级和更新对高技术企业技术核心能力的形成和提升有着直接影响。文章从微观视角出发,详细分析了技术平台的构成要素及...
- 问题2.6分析了三点电荷系统中,中间点电荷的平衡条件,应用库仑定律确定平衡位置。 5. **磁场强度与安培环路定律**: - 问题2.22研究了圆柱形导体内的磁场分布,利用安培环路定律求解空腔内的磁场强度。 6. **...
云计算专业公司ShapeBlue的云计算架构师PaulAngus,在本文中阐明了一些可能导致人们对CloudStack的物理网络架构方面一头雾水的部分。导致大家一头雾水的根源之一是,人们提到CloudStack环境中的“主机”时,他们可能...
添加Al2O3对CuW合金阴极斑点运动特性的影响,曹伟产,马德强,采用熔渗法制备了添加Al2O3的CuW合金,研究了添加Al2O3的CuW合金的显微组织和真空击穿性能,同时利用高速摄影观察CuW合金的阴极斑点运�
不完全竞争、银行规模与货币政策传导--基于银行微观数据的面板门限分析,曹伟,周俊仰,信贷渠道是货币政策传导的重要途径。本文选取我国2009-2013年44家商业银行的微观数据,构建了表示银行业不完全竞争程度的HHI...
提出一种基于游程标号回传的二值图像连通体标记算法,该算法以游程为处理对象,将目标结构中的标号传播到游程结构中,进行游程连通性判断,将与当前游程连通的游程中最小值回传到对应的目标结构中,确保在同一连通域...
结论指出,在大量数据编码时,基于GPU的并行Base64算法能够显著优化性能。未来的研究可以考虑结合CPU和GPU协同运算,依据数据量自动选择合适的处理方式,进一步提升运算效率。这表明,GPU在大数据处理中的潜力巨大,...
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. 压缩包所含文件: 数据样例: 分
《电磁数值计算MOM(英文版)》是由曹伟老师编写的教材,专注于矩量法在电磁场计算中的应用。矩量法(Method of Moments,简称MOM)是一种基于微分方程数值解的计算方法,广泛应用于天线理论、雷达散射截面计算、...
人民币汇率变动对国内物价水平的传递效应研究,曹伟,钱诚辰,近年来,人民币对美元汇率进入双向波动
预防控制主要涉及预防故障的服务成本,如备用容量费用和燃料成本;而校正控制则涉及故障发生后的应对措施,如调整发电机组出力和切除负荷的成本;此外,故障造成的停电损失也是不可忽视的成本。仅依赖实时电价无法...