背景
目前公司业务高速发展,各种业务数据呈井喷的态势,单表数据量急剧膨胀,随之而来是单表读写性能和吞吐量呈下降趋势而且无法应对业务高速增长产生的数据。因此需要使用分库分表机制保证高性能同时支撑和驱动业务发展,选择一款功能强大支持分库分表的中间件就成为当务之急。开源的数据库中间件众多,需要从中挑选一个适合的,并能作为映客长期演进的中间件,因此需要从多个维度对中间件进行相关测试
目标
本次测试,不是对MySQL数据库进行极限或压力性能测试,而是在同等软硬件环境下对选取的数据库中间件在软件/物理架构、功能特性、扩展性、读写性能/吞吐量、响应时间、SQL支持程度、容灾/容错、可用性、可维护性、接入成本等进行综合衡量。
市面可选择的数据库中间件
测试对象
选择Mycat和Atlas
为什么选择Mycat和Atlas
Mycat:用java语言开发,是中国开发者以自组织形式(暂且称之中国开源社区吧),基于阿里开源的Cobar打造演变而来,该项目在众多公司使用(超过300 个项目采用Mycat,涵盖银行、电信、电子商务、物流、移动应用、O2O 的众多 领域和公司
),社区较活跃,有bug或踩坑能及时修复,性能高,功能强大较完善,而且还一同开源了运维管理平台
Atlas(Meituan-Atlas):用c/c++语言开发,同时有2大互联网公司360和美团支持的项目并开源,而且作为该公司重点投入和长期演进的方向,360 atlas 2015.04停止更新,美团fork 360 atlas,在此基础上打造持续迭代。
商业中间件(OneProxy,阿里云DRDS为代表等):从官网上看,功能强大且完善,有高效自动化运维平台,上线方便,扩展性较好,缺点是对用户黑盒,在线问题不能及时反馈处理(在线服务对服务提供方及时响应较高),随着数据量和业务规模扩大,使用费用会呈现指数级增长,效费比低。
测试工具选择
针对MySQL性能和联机事务处理测试,有2个功能强大开源的工具sysbench和tpcc-mysql。
sysbench是一个模块化的、跨平台、多线程基准测试工具,主要用于评估测试各种不同系统参数下的数据库负载情况
TPC(Tracsaction Processing Performance Council) 事务处理性能协会是一个评价大型数据库系统软硬件性能的非盈利的组织,TPC-C是TPC协会制定的,用来测试典型的复杂OLTP系统的性能。Tpcc测试结果主要关注两个指标:流量指标和性价比。
通过对上述2个工具使用验证,结论如下:本次只会使用sysbench工具对mycat和atlas测试,因为mycat对tpcc支持兼容性不好,程序有bug,tpcc无法正常连接到mycat,mycat和atlas都能很支持sysbench工具.