MySQL中间件的负载均衡策略优化方案_第1页
MySQL中间件的负载均衡策略优化方案_第2页
MySQL中间件的负载均衡策略优化方案_第3页
MySQL中间件的负载均衡策略优化方案_第4页
MySQL中间件的负载均衡策略优化方案_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 MySQL中间件的负载均衡策略优化方案目录 TOC o 1-3 h z u HYPERLINK l _Toc520817662 一、背景 PAGEREF _Toc520817662 h 3 HYPERLINK l _Toc520817663 二、负载均衡策略及性能优化 PAGEREF _Toc520817663 h 4 HYPERLINK l _Toc520817664 三、总结 PAGEREF _Toc520817664 h 9一、背景随着业务的爆发式增长,电商系统中的读写压力越来越高,单节点MySQL实例压力越来越大,单纯升级服务器硬件已经无法满足生产环境的需要。解决读请求压力,需要支持

2、从库扩展;解决写请求压力,对数据分片增加多个节点,降低单节点MySQL实例的压力成了更优的选择。传统的分片是通过DAO层进行的,但是DAO层对数据分片存在诸多问题。从业务角度看,配置修改需要重启服务,代价巨大;需要对分片结果集进行处理,业务逻辑愈加复杂;功能相对简单。从数据库运维角度看,配置管理的统一化难度较大;DB的升级、迁移等操作复杂。网易电商同样面临着这些问题,为了彻底解决数据库瓶颈,网易乐得团队在实际生产中研发了自己的中间件Cetus。其具有正统基因,基于官方MySQL-Proxy的版本进行全面修复和再创新,已于不久前开源,在各个产品线上得到广泛应用,性能和稳定性均表现良好。Cetus

3、兼容MySQL协议,前端应用不用修改即可通过Cetus访问数据库,方便DBA运维同学和开发同学使用,实现了数据库层面的横向扩展。目前Cetus有读写分离和Sharding两个版本,可通过编译参数选择适合的版本。它支持对用户透明的多项功能,例如分布式事务、连接池、结果集压缩、安全管理、状态监控、Tcp Stream传输等等。二、负载均衡策略及性能优化本文所讨论的负载均衡,指的是读流量的负载均衡,即读流量如何分配到后端同一MySQL集群内的各个DB。Cetus的负载均衡策略,主要分为两部分:主从库之间读流量的负载策略;从库之间读流量的负载策略。具体实现时候,流量的分配单位与Atlas等中间件也略有

4、不同,进行了性能优化。下面章节将依次详细介绍。1、主从库之间读流量的负载策略默认情况下,非事务中、未通过注释强制路由主库或未使用锁的读流量会优先路由到从库,各个从库之间负载均衡。只有当从库都不可用时,读流量才会路由到主库。有些业务场景下,主库可以分担部分读流量,这时就涉及到读流量在主库和从库上配置负载策略了。Cetus中,可以通过配置参数read-master-percentage来指定默认的读流量路由到主库的百分比,该参数的取值范围是0, 100。该值默认为0,即所有读流量会优先路由从库,所有从库均不可用时,才会路由主库;如果该参数设置为100时,则所有读流量都会路由到主库;如果该值设置为(

5、0, 100)时,则会按照设置的比例进行路由。需要注意的是,该值表示的是主库和所有从库的比例。2、从库之间的读流量负载策略路由到从库的流量会在各个从库之间进行负载均衡。目前Cetus各个从库之间的读流量负载策略仅支持轮询(RR)方式。在流量分配方面,Cetus也进行了优化。一些MySQL数据库中间件(例如Atlas)是基于SQL的维度做负载均衡的,不会考虑SQL是同一个连接还是不同连接发送来的,中间件依次将接收到的SQL按照策略发往后端的数据库。在实际使用中发现,长连接的场景下,该策略会造成大量的连接切换,从而导致session级变量的频繁调整,影响SQL执行效率。因此,Cetus对其进行了优

6、化,并非完全按照SQL的维度做负载均衡。Cetus考虑了同一个连接连续发送SQL请求的情况,不会立即将当前SQL使用完的Cetus与MySQL的连接放回连接池复用,而是持有短暂(256毫秒)时间,以期后续仍有SQL执行,从而避免了session级变量的调整,大大增加了SQL执行的效率。长连接场景下,对优化前后的Cetus进行了简单测试。通过测试发现,通过优化后的Cetus针对长连场景下的读流量的吞吐量有了明显提升。下图是在docker环境下的简单测试对比:为了防止IO过高,简单改造了sysbench发送的SQL,限制了返回的结果集大小。禁用事务和prepare的情况下,采用100个线程每次测试

7、60s,连续测试5次,结果如下:由于本机Docker性能较差,且sysbench模拟测试的语句较为简单,不涉及session变量的切换,因此对比效果不甚明显,本次测试性能仅提升30%左右。长连接业务场景下,性能优化可能会更加明显。3、读流量的路由策略总结在存在至少1个可用从库的情况下,影响查询语句的路由策略的因素主要有:事务中的查询;select.for update或select . lock in share mode;Cetus设置参数master-preferred=true所有流量默认全部路由主库;Cetus设置参数read-master-percentage控制主从读流量负载;使用

8、注释/*#mode=READWRITE*/或/*#mode=READONLY*/。默认情况下,读流量会优先路由到从库,从库之间按照轮询策略在各个从库之间做负载均衡;一旦所有从库均不可用,会路由到主库上。目前Cetus的各个从库暂不支持按照权重做负载。对于a、b、c点,Cetus会将查询语句直接路由主库;对于d点,如果设置read-master-percentage=100,所有的查询流量均路由到主库;如果设置read-master-percentage=0, 100),Cetus会将读流量按照该比例路由到主库和从库(注意,这里的从库指的是全部的从库,即该比例指的是主库和全部从库的比例);对于e点,如果使用注释/*#mode=READWRITE*/,读流量会路由到主库;如果使用注释/*#mode=READONLY*/读流量会路由从库,如果所有从库均不可用时才会路由到主库。上面的各个因素的优先级,注释的优先级最高,其次是参数master-preferred,最后是参数re

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论