美团点评DBProxy实践:架构与优化

0 下载量 133 浏览量 更新于2024-08-29 收藏 2.03MB PDF 举报
"美团点评的DBProxy实践分享涵盖了DBProxy的背景、架构、主要模块、上线情况、未来规划以及Q&A环节。DBProxy的主要优点在于简化数据库集群管理,实现读写分离和负载均衡,减轻DBA和开发人员的工作负担。软件模块分为访问控制、SQL处理和DBA连接相关三层,以及贯穿三层的连接管理、日志管理和监控管理。在连接管理方面,进行了异常检测和处理的优化。此外,还介绍了SESSION级变量的处理和连接池的改进,以增强系统的稳定性和性能。访问控制模块则强化了对用户和IP的管理,确保安全访问。" 美团点评的DBProxy是一个关键的技术实践,其主要目标是提升数据库系统的管理效率和性能。DBProxy的引入解决了传统模式下应用程序需要直接管理数据库集群节点的问题,通过集中式的代理服务,实现了数据库的透明化访问。这一设计允许DBProxy自动进行负载均衡,读写分离等操作,极大地简化了数据库运维工作,同时也减少了因数据库节点变化而需要修改应用程序代码的情况。 在软件架构上,DBProxy分为三个主要模块:访问控制、SQL处理和DBA连接相关。访问控制模块负责用户验证和IP过滤,确保只有授权的请求才能通过。SQL处理模块包括SQL解析、重写和执行,保证SQL语句的正确性和效率。DBA连接相关模块涉及读写分离和负载均衡策略,增强了数据库服务的可用性。 在连接管理上,DBProxy针对长链路特点,增加了对连接异常的检测和处理机制,确保了与MGW和MySQL的稳定交互。此外,对连接池进行了优化,通过使用基于用户的Hash表结构,提高了并发访问的效率和查询的准确性。 在SQL处理模块,DBProxy支持SESSION级变量的校正,确保客户端连接的SESSION参数与服务器端保持一致,保证了查询的正确执行。这一特性提升了服务的健壮性。 访问控制方面,DBProxy提供了细粒度的权限控制,保护了数据库的安全,避免了未经授权的访问。通过这样的设计,DBProxy不仅提升了数据库系统的管理效率,还增强了系统的稳定性和安全性。 总结来说,美团点评的DBProxy实践是一项旨在优化数据库管理和提升系统性能的技术解决方案。通过这一工具,他们成功地减轻了DBA和开发团队的工作压力,同时提升了系统的可扩展性和可靠性,为业务的稳定运行提供了有力支撑。未来,美团点评将持续优化DBProxy,以应对更多挑战和满足更高的业务需求。
2013-12-21 上传
OpenCloudb介绍 什么是OpenCloudb?简单的说,OpenCloudb就是: • 一个彻底开源的,面向企业应用开发的“大数据库集群” • 支持事务、ACID、可以替代Mysql的加强版数据库 • 一个可以视为“Mysql”集群的企业级数据库,用来替代昂贵的Oracle集群 • 一个融合内存缓存技术、Nosql技术、HDFS大数据的新型SQL Server • 结合传统数据库和新型分布式数据仓库的新一代企业级数据库产品 • 一个新颖的数据库中间件产品 OpenCloudb的目标是:低成本的将现有的单机数据库和应用平滑迁移到“云”端,解决数据存储和业务规模迅速增长情况下的数据瓶颈问题。 OpenCloudb的关键特性: • 支持Mysql集群,可以作为Proxy使用 • 自动故障切换,高可用性 • 支持全局表,数据自动分片到多个节点,用于高效表关联查询 • 支持独有的基于E-R 关系的分片策略,实现了高效的表关联查询 • 多平台支持,部署和实施简单 OpenCloudb的优势: • 基于阿里开源的Cobar产品而研发,Cobar的稳定性、可靠性、优秀的架构和性能,以及众多成熟的使用案例使得OpenCloudb一开始就拥有一个很好的起点,站在巨人的肩膀上,我们能看到更远。 • 广泛吸取业界优秀的开源项目和创新思路,将其融入到OpenCloudb的基因中,使得OpenCloudb在很多方面都领先于目前其他一些同类的开源项目,甚至超越某些商业产品。 • OpenCloudb背后有一只强大的技术团队,其参与者都是5年以上资深软件工程师、架构师、DBA等,优秀的技术团队保证了OpenCloudb的产品质量。 • OpenCloudb并不依托于任何一个商业公司,因此不像某些开源项目,将一些重要的特性封闭在其商业产品中,使得开源项目成了一个摆设。 OpenCloudb的长期路线规划: • 在支持Mysql的基础上,后端增加更多的开源数据库和商业数据库的支持,包括原生支持PosteSQL、FireBird等开源数据库,以及通过JDBC等方式间接支持其他非开源的数据库如Oracle、DB2、SQL Server等 • 实现更为智能的自我调节特性,如自动统计分析SQL,自动创建和调整索引,根据数据表的读写频率,自动优化缓存和备份策略等 • 实现更全面的监控管理功能 • 与HDFS集成,提供SQL命令,将数据库装入HDFS中并能够快速分析 • 集成优秀的开源报表工具,使之具备一定的数据分析的能力
2019-07-19 上传
奇虎360公司开源的Atlas是优秀的数据库中间件,美团点评DBA团队针对公司内部需求,在其上做了很多改进工作,形成了新的高可靠、高可用企业级数据库中间件DBProxy,已在公司内部生产环境广泛使用,较为成熟、稳定。 DBProxy的优点 支持多语言MySQL客户端 读写分离 负载均衡 Slave故障感知与摘除(Master需要MHA等其他联动) 后端连接池 自定义SQL拦截与过滤 流量分组与控制 丰富的监控状态 支持分表(分库版本正在内测中) Client IP限制 DBProxy对Atlas的改进 新增功能点 新增参数 backend-max-thread-running用于指定每个MySQL后台的最大thread running数 thread-running-sleep-delay用于指定在thread running数超过backend-max-thread-running时,客户端连接等待的时间 添加到黑名单中需要满足两个条件:SQL执行的时间和频率 提供了查看、修改、添加、删除黑名单的功能 黑名单管理提供了将黑名单保存到文件以及从文件中Load到内存中的功能 在手动添加黑名单时,只需要将用户的SQL语句输入,在内部自动转化成过滤条件,手动添加时是否生效由参数 manual-filter-flag 来控制,OFF:不生效,ON:立即生效 手动添加与自动添加两种情况下的过滤条件是否生效是分别由不同参数控制,这个要区分清楚。另外,也可以使用 admin 的命令来设置是否开启/关闭某个过滤条件 SQL执行的时间 由参数 query-filter-time-threshold 来指定,如果SQL执行时间超过此值,则满足条件 SQL执行频率 由参数 query-filter-frequent-threshold 来指定,如果SQL执行频率超过此值,则满足条件 频率就是在时间窗口内执行的次数。时间窗口则是由频率阈值和最小执行次数来计算出来的,当时间窗口小于60s时,扩展到60s 参数 access-num-per-time-window 用来指定在时间窗口内的最小执行次数,添加此参数是考虑到执行时间长的SQL在计算频率时同时参考其执行的次数,只有执行一定次数时才去计算其频率。当执行时间与执行频率都满足时条件时,会自动将查询作为过滤项放到黑名单中,加入到黑名单中是否生效由参数 auto-filter-flag 来控制,OFF:不生效,ON:立即生效 黑名单的管理 从库流量配置 指定查询发送到某个从库 参数动态设置(完善show proxy status/variables) 支持save config,动态增加、删除分表 响应时间percentile统计 统计最近时间段DBProxy的响应时间 kill session 支持DBProxy的admin接口kill session操作 backend平滑上下线 支持平滑的backend上下线 DBProxy非root用户启动 使用非root用户启动 admin账号的安全限制 admin账号密码的动态修改及host限制 增加异步刷日志的功能 增加日志线程、异步刷日志,提高响应时间 支持DBProxy平滑重启功能 支持SQL过滤的黑名单功能 支持对于MySQL后台的thread running限制功能 该功能通过在DBProxy内限制每个后台MySQL的并发查询,来控制对应MySQL的thread running数 当发向某个MySQL后台的的并发查询超过某个阈值时,会进行超时等待,直到有可用的连接,其中阈值与超时等待的时间都已经参数化,可以动态配置 set backend offline不再显示节点状态 支持set transaction isolation level 支持use db 支持set option语句 支持set session级系统变量 支持建立连接时指定连接属性 改进连接池的连接管理,增加超时释放机制。当连接池中的空闲连接闲置超过一定时