ContainerDB 产品介绍

产品概述

ContainerDB 是高性能的弹性数据库服务。具有基于负载的弹性扩容、兼容 MySQL 协议、
故障自愈、无感知数据迁移、流式查询处理、路由规则透明、自助化服务等功能特性,重新
定义了京东的数据库技术。
ContainerDB 不仅极大地节省了数据库服务的资源成本,还实现了京东数据库服务的
Always Online、数据保护等功能特性,进而极大地提升了运行于 ContainerDB 上层的业
务系统的稳定性和数据安全性。
Container 不仅提供了在线数据迁移工具 JTransfer,让用户在不停业务的情况下实现在线
数据迁移和切换,极大的降低了数据迁移和接入成本,还完全兼容了 MySQL 协议,用户可
以使用MySQL官方客户端和驱动程序轻易连接ContainerDB,极大地降低了ContainerDB
的学习和使用成本。

功能概述

整体架构

ContainerDB 产品介绍

弹性扩容

ContainerDB 构建与 JDOS 基础之上,提供流式资源持续交付和基于数据库负载的精准弹
性扩容功能。保证了一直都有可用资源提供给用户数据库服务,并且可以根据数据库的负载
情况智能地实现数据库服务能力的精准和反亲和性扩容,时刻保证数据库服务的稳定高效。

故障自愈

ContainerDB 实现了 Master 故障的分布式故障检测和自动恢复,由于 ContainerDB 与用
户之间是通过 2 级 Proxy 进行隔离,ContainerDB 的 Gate 与数据库服务之间通过 IP 地址
直接连接,用户通过 Gate 服务访问 ContainerDB,可以有效地避免因为 AppServer 端的
DNS 缓存而导致脏写,并保证数据库服务状态的一致性。

兼容 MySQL 协议

ContainerDB 完全兼容 MySQL 协议,支持标准 MySQL 客户端和官方驱动程序接入,并
且支持大部分 ANSI SQL 语法。

无感知数据迁移

JTransfer 提供在线数据迁移和接入,整个迁移和接入过程对前端业务系统无感知。

路由规则透明

ContainerDB 采用分片方式对海量数据进行组织和管理,并且各个分片的路由规则对用户
完全透明。

流式查询处理

ContainerDB 提供流式查询处理,可以保证大批量数据查询时,能瞬时返回部分查询结果
数据,极大提高客户体验。

自助化服务

ContainerDB 提供流程化的完全自助的用户接入服务,申请服务成功后,会将数据库访问
口令自动推送到用户邮箱。

成功案例

京东商城业务

ContainerDB 产品介绍
ContainerDB 从上线截止到线下,总计服务京东商城国内业务 136 个,海外站业务 285 个,
并且经过了京东商城 6.18 和 11.11 两次大促的洗礼,大促期间 ContainerDB 在高负载的
情况下保持正常平稳运行,期间最大的逻辑库 QPS 达到 36 万。弹性数据库使得数据库的
TCO 降低一倍,实现了数据库服务能力的在线横向库容、在线故障切换和在线数据迁移服
务,实现了京东数据库服务的 Always Online,到目前为止总计为京东节省资源成本 5000
万元。

二次清算系统

ContainerDB 产品介绍
二次清算系统总共包含 4 个业务库:结算、计费、调度、账务。总计 66 个分片、595 张表、
120 亿条记录,数据总计 45T,每天数增长量将近 1T。
二次清算系统上线以来,总计完成在线扩容 40 余次,每次扩容时间平均 30 分钟,并且每
次扩容过程都不会对原来 Shard 的性能产生影响,当扩容完毕后,将服务 Shard 由源 Shard
切换为两个目标 Shard,整个切换过程在 1 秒以内完成,对业务系统几乎无影响。
在线完成自动扩容 40 次,峰值 QPS 36 万,目前已经无故障服务业务系统 97 天。

区块链溯源系统

ContainerDB 产品介绍
区块链溯源系统是从传统 MySQL 数据库服务迁移到弹性数据库之上的,迁移过程通过
ContainerDB 的迁移工具 JTransfer 完成,整个迁移过程没有用户产生任何线上影响,当数
据迁移完毕后,直接通过域名漂移完成业务系统数据源的在线切换,一共迁移 1 亿+记录,
数据准确率 100%。区块链溯源系统中的表并非全部分片,只有一部分表分片另一部分表未
分片,目前为分片的表,如图中:TableA,数据全部 load 到 Shard1 上,分片的表则通过
路由规则 Load 到所有的 Shard 上,JTransfer 也提供将数据库中的份拆分表一键转变为拆
分表的功能,并且整个转变过程中,不会对表的使用产生任何影响。