加入收藏 | 设为首页 | 会员中心 | 我要投稿 云计算网_泰州站长网 (http://www.0523zz.com/)- 视觉智能、AI应用、CDN、行业物联网、智能数字人!
当前位置: 首页 > 站长学院 > MySql教程 > 正文

干货分享:MTDDL—美团点评分布式数据访问层中间件

发布时间:2019-08-12 16:48:30 所属栏目:MySql教程 来源:Wooola
导读:副标题#e# 背景 2016年Q3季度初,在美团外卖上单2.0项目上线后,商家和商品数量急速增长,预估商品库的容量和写峰值QPS会很快遇到巨大压力。随之而来也会影响线上服务的查询性能、DB(数据库,以下统一称DB)主从延迟、表变更困难等一系列问题。 要解决上面所

配置和使用方式举例

  1. // 动态数据源 
  2. @DataSource("dbProductSku") 
  3. // tableName:分表名前缀,tableShardNum:分表数量,dbShardNum:分库数量,shardType:分库分表策略,idGenType:唯一键生成策略,idGenKey:唯一键业务方标识 
  4. @ShardInfo(tableName="wm_food", tableShardNum=100, dbShardNum=1, shardType="mod", idGenType=IDGenType.LEAF, idGenKey=LeafKey.SKU) 
  5. @Component 
  6. public interface WmProductSkuShardDao { 
  7. // @ShardOn("wm_poi_id") 将该注解修饰的对象的wm_poi_id字段作为shardValue 
  8. // @IDGen("id") 指定要设置唯一键的字段 
  9. public void insert(@ShardOn("wm_poi_id") @IDGen("id") WmProductSku sku); 
  10. // @ShardOn 将该注解修饰的参数作为shardValue 
  11. public List<WmProductSku> getSkusByWmPoiId(@ShardOn long wm_poi_id); 

连接池及SQL监控

DB连接池使用不合理容易引发很多问题,如连接池最大连接数设置过小导致线程获取不到连接、获取连接等待时间设置过大导致很多线程挂起、空闲连接回收器运行周期过长导致空闲连接回收不及时等等,如果缺乏有效准确的监控,会造成无法快速定位问题以及追溯历史。

再者,如果缺乏SQL执行情况相关监控,会很难及时发现DB慢查询等潜在风险,而慢查询往往就是DB服务端性能恶化乃至宕机的根源(关于慢查询,推荐阅读《MySQL索引原理及慢查询优化》一文)。MTDDL从1.0.2版本开始正式引入连接池及SQL监控等相关功能。

连接池监控

实现方案

结合Spring完美适配c3p0、dbcp1、dbcp2、mtthrift等多种方案,自动发现新加入到Spring容器中的数据源进行监控,通过美团点评统一监控组件JMonitor上报监控数据。整体架构图如下:

干货分享:MTDDL—美团点评分布式数据访问层中间件

连接数量监控

监控连接池active、idle、total连接数量,Counter格式:(连接池类型.数据源.active/idle/total_connection),效果图如下:

干货分享:MTDDL—美团点评分布式数据访问层中间件

获取连接时间监控

监控获取空闲连接时间,Counter格式:(ds.getConnection.数据源.time),效果图如下:

干货分享:MTDDL—美团点评分布式数据访问层中间件

SQL监控

实现方案

采用Spring AOP技术对所有DAO方法进行功能增强处理,通过美团点评分布式会话跟踪组件MTrace进行SQL调用数据埋点及上报,进而实现从客户端角度对SQL执行耗时、QPS、调用量、超时率、失败率等指标进行监控。整体架构图如下:

干货分享:MTDDL—美团点评分布式数据访问层中间件

实现效果

登录美团点评的服务治理平台OCTO选择服务查看去向分析,效果图如下:

干货分享:MTDDL—美团点评分布式数据访问层中间件

动态化配置

为了满足业务方一些动态化需求,如解决线上DB紧急事故需动态调整数据源或者分库分表相关配置,要求无需重启在线修改立即生效,MTDDL从1.0.3版本开始正式引入动态化配置相关功能。

实现方案

在Spring容器启动的时候自动注册数据源及分库分表相关配置到美团点评的统一配置中心MCC,在MCC配置管理页面可以进行动态调整,MCC客户端在感知到变更事件后会刷新本地配置,如果是数据源配置变更会根据新的配置构造出一个新数据源来替换老数据源,最后再将老的数据源优雅关闭掉。具体流程图如下:

干货分享:MTDDL—美团点评分布式数据访问层中间件

动态化数据源

目前支持dbcp、dbcp2、c3p0等数据源,效果图如下:

干货分享:MTDDL—美团点评分布式数据访问层中间件

分库分表动态化

支持动态化配置分库分表数量、分库分表策略、唯一键生成策略、唯一键业务方标识等,效果图如下:

干货分享:MTDDL—美团点评分布式数据访问层中间件

版本迭代

MTDDL到目前为止总共开发了四期,后续考虑逐步开源,具体版本迭代如下:

干货分享:MTDDL—美团点评分布式数据访问层中间件

(编辑:云计算网_泰州站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读