股票代码:837868  北京[切换城市 成都] 销售热线:400-017-5181

it运维全面Docker化之后,看京东弹性数据库的最新实践与突破!

前言:

京东弹性数据库不是一个单一的产品,而是京东在对数据库的使用、it运维和开发过程中遇到的一系列问题的解决方案,和it运维经验的总结升华进而形成的一套产品系列。

讲师介绍:

it运维

吕信,京东商城数据库技术部资深架构师,拥有多年数据产品研发及架构经验。在京东及国内主导多种数据产品开发及社区建设,积极活跃于数据产品领域,对数据库及大数据领域各个产品具有丰富经验,目前在京东商城主导弹性数据库研发及推广使用。

京东弹性数据库是一个产品系列,主要是解决数据库的it运维、使用和研发过程中的问题,具备动态伸缩、高可用、查询透明路由、集群化日志服务和自动化it运维等功能。下面将就京东弹性数据库三个核心模块的功能进行详细说明。

1.核心功能模块:JED,提供数据查询和写入的自动路由、自动弹性伸缩、自动FailOver、自动负载调度和数据库服务智能自治的功能。

(1)在线动态扩容

起初某个业务可能申请了4个分库,后面随着业务的发展,数据量越来越大,可能需要扩容到 8个分库,一般的数据库中间件在扩容时,需要与业务研发部门协商一个业务低谷期停业务,然后进行扩容,扩容完毕后重新启动业务。为了解决这个问题,JED提供了在线动态扩容功能,扩容只会对业务造成秒级影响,且无需人工介入。我们现在可以触发自动扩容,设置的策略是当磁盘的使用率达到80%,就自动进行扩容。

(2)自动Failover

Master一旦出现宕机,哨兵检测系统就会第一时间检测到,会自动触发注册在哨兵检测系统中的Hook程序,Hook程序就会选择一个最新的Slave替换Master,然后更新ETCD中的元数据信息,业务方的下一次请求就会发送新的Master上。

(3)兼容MySQL协议

JED是完全兼容MySQL协议的,即通过MySQL的Client端或者标准的JDBC Driver都可以连接到JED的Gate层,然后进行查询和计算。

(4)多源数据迁移

我们基于ghost进行改造,开发了京东的it运维数据传输和接入工具: JTransfer,实现了it运维业务数据的动态迁移。如果以前你的业务是运行在MySQL上的,现在要迁到JED上,你不需要停止任何业务,直接启动JTransfer的数据迁移服务,就可以在后台自动完成数据的同步和迁移。迁移完毕后,JTransfer会自行比对JED上的数据与原来数据的一致性和lag计算,当数据完全一致,且lag小于5秒时,就会邮件通知业务方进行复验,复验没有问题,业务方直接将数据库连接指向到JED就可以正常提供服务了。

(5)数据库审计

JED具有数据库审计的功能,该功能实现在Gate层,在Gate层我们会得到应用发送给JED的所有SQL,然后将SQL语句或者SQL模板发送给MQ。由于是在Gate层实现的,而Gate层与MySQL服务不在一个容器上,因此对MySQL服务不会产生任何的负面影响。

2.实时数据发布与订阅模块: BinLake,完全自助、无状态、自动负载、完全自治、可横向扩展的集群化Binlog采集和订阅服务。

BinLake只做一样工作:集群化Binlog的采集和订阅服务。BinLake之前,我们使用Canal进行binlog采集,但我们发现存在资源浪费等问题:若一个业务需要采集MySQL Binlog,并且还需要HA保证的话,我们至少需要两台服务器。那多个业务怎么办?于是我们开发了BinLake,其功能特性如下:

(1)无状态集群化BinLog采集

BinLake是一个集群化的BinLog采集和订阅服务,并且与常规意义上的集群不一样,我们的集群是没有master节点的,而且集群中的所有工作节点都是完全平等的,这也就意味着,只要集群中的节点没有全部宕机,BinLake集群可以一直提供服务。

(2)高可用与自动故障转移

针对于某个Mya实例的采集instance(每个instance代表一个线程)一旦挂掉,会在集群中的负载最低的工作节点上重新启动一个instance,继续从上次挂掉的Offset进行采集,不会造成Binlog的丢失和重复。

(3)负载自动均衡

假设所有Binlog的集群有八个节点,其中有七个节点的负载比较高,当你在接入Binlog时,在没有人工介入的衡量下,整个集群会将以新接入的一个Instance采集实例,自动选择一个健康度最高的Wave服务,然后启动Binlog采集。

(4)支持多种MQ

BinLake采集到的所有binlog的event会被封装成Message发送给MQ,目前我们支持JMQ和Kafka两种MQ产品。

(5)支持集群横向扩容

当BinLake集群的服务能力达到了瓶颈,我们可以简单地将新的工作节点启动,只需要在新的工作节点配置文件中配置上与线上的工作节点相同的ZooKeeper路径,新的工作节点就会自动加入到已存在的BinLake集群中。

3.自动化it运维模块:DBS。

DBS主要完成自动化it运维的工作。它可以完成数据库服务的自动化交付、数据库操作的流程化管理、数据库健康指数全面监控、数据库自动备份及结转,以及调度作业的多样化调度(包括定时、依赖以及触发三种调度模式)。

以上就是对it运维全面Docker化之后,京东弹性数据库的突破分析,今天分享就到这里,谢谢大家!

Copyright©同创双子(北京)信息技术股份有限公司_北京it外包公司 京ICP备16037308  

  1. 微信客服

    电脑维护
  2. IT外包服务扫我

    IT外包服务
  • 销售热线:400-017-5181

  • 故障处理:400-617-5181