一、介绍 随着数据量的不断增大,传统直连数据库对数据进行访问的方式已经无法满足一般公司的需求。通过数据库中间件,可以对数据库进行水平扩展,由原来单台数据库扩展到多台数据库,数据库中间件通过路由规则将数据的访问请求路由到其中一台数据库上,从而大大降低了数据访问的瓶颈和单台数据库的压力。并且通过数据库中间件可以将DBA和研发进行解耦,提升DBA运维效率。 目前美团点评内部使用的中间件DBProxy是在奇虎360公司开源的Atlas上继续开发,逐渐满足公司内部需求。 美团点评致力于将DBProxy打造成一款高可靠、高可用的一款企业级数据库中间件,选择将已经在公司内部使用的较为成熟(包括支付、外卖、团购、酒旅等)、稳定的DBProxy进行开源,github地址:https://github.com/Meituan-Dianping/DBProxy。希望与业内同样有数据库中间件需求的团队,在DBProxy基础上一起打造一款企业级优良的数据库中间件产品。 二、DBProxy的优点
使用DBProxy典型场景: 使用前: 1. Client端使用配置文件配置主从信息,需要业务端实现负载均衡、读写分离、分表; 2. 扩容或者主库切换时,需要DBA和业务紧密配合,DBA扩容或者切换之后,业务需要及时修改配置文件; 3. Slave故障时,需要DBA通知业务及时变更配置信息。 使用后: 1. 应用程序在连接串中设置DBProxy的地址,不需要关注整个数据库集群的拓扑结构; 2. DBProxy内部实现负载均衡,读写分离; 3. Slave上下线的操作由DBA通过Atlas Admin管理接口完成; 4. Slave故障时,DBProxy自动摘除。 这样极大的减轻了DBA和应用开发人员的工作,引入DBProxy对于系统的可管理性和便利性都有非常大的帮助。 三、DBProxy软件模块 介绍DBProxy的软件模块。软件模块分三层:
四、DBProxy连接改进 根据我们链路比较长的特点,着重添加了对于连接异常的检测和处理,包括:
五、DBProxy SESSION级变量 SQL处理模块中增加了SESSION参数的功能: 客户端分配一个DB连接的时候,如果二者SESSION级参数不一样时,首先做一个校正,校正之后才会真正执行查询。 六、DBProxy连接池改进 连接池的管理中做了这样的修改:将链表改成Hash表,其中Hash键是用户名,Hash值是以用户身份建立的连接的一个链表。如下图把连接按用户来分,client分别会分到各自user建立的db连接,二者互不影响,既保证了查询的正确性,又保证了较高的性能。 七、DBProxy访问控制
根据后台db的thread running进行负载均衡,每当分配到一个后台的连接的时候,先检查后台的Thread running数,直到有一个thread running数在我阈值之内的时候才真正去分配。 用户IP限制,限制了用户的host地址,相当于进行一个权限的控制。 从库流量配置,可以指定某一个用户只能访问某几个从库,或者反过来说某几个从库只允许某几个用户访问,这样可能在一个更细的力度上对数据库的资源进行分配。 八、DBProxy监控模块 DBProxy的监控体系实现了一个从无到有的过程,目前主要监控一些DBProxy内部运行相关的一些参数: 九、DBProxy Sharding改进 对于sharding版本,做了如下的改进:
Q:这方面能大概讲一下怎么去改进的? A:首先是一个语法的支持,我们就是把中间不支持语法的支持,这样的话有些复杂的查询,我们可以通过这个语法来进行一些,比如说where条件的分析,可以知道分布分表的情况,然后就是表的替换。 十、DBProxy上线现状 从2015.5上线第一个版本后到现在已经有87%的服务组接入了DBProxy, DBProxy也已经经历了5个版本的迭代。 十一、DBProxy对Atlas的改进 DBProxy在开源Atlas的基础上,我们做了以下努力和工作(截止目前:27个功能点的新增;17个bug的修复)
新功能和Bug修复描述,详见release notes(https://github.com/Meituan-Dianping/DBProxy/blob/master/doc/RELEASE_NOTES.md)。 十二、DBProxy计划
监控管理要结合自动故障处理,真正把监控的信息智能化; 和我们美团点评自己的MHA融合,支持自动故障切换; 支持分布式事务。 希望和各位同行共同打造一款企业级高可用、高可靠的数据库中间件产品,希望大家能够积极参与。 欢迎大家将需求或发现的Bug在github上提交issue,帮助DBProxy的壮大;也欢迎大家在DBProxy用户交流群(QQ: 367199679)相互交流,共同学习。 更多DBProxy文档请点击「阅读原文」查看 运维帮「运维大咖CLUB」招募会员:如果你是甲方运维总监/运维经理,欢迎加入我们,请联系微信yunweibang555 商务合作,请加微信yunweibang555 本文转载于微信公众号: 运维帮(yunweibang),更多微信文章请扫描关注公众号: |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|