BDTC2015 京东-刘海锋-大规模内存数据库jimdb:从2014到2016

Preview:

Citation preview

大规模内存数据库JIMDB: 从2014到2016

刘海锋@京东

www.jd.com

E-Commerce Needs Fast Data

Memory is the new disk.

C-- Jim Gray www.convinceandconvert.com www.nowrevolutionbook.com

@jaybaer

The Jingdong In-Memory Database

以内存为中心

的数据存储

过去两年

持续建设 支撑京东大多

数动态内容

演进历程

叱前时代

分布式平台化

底层技术研发

快速规模增长

全自动化维护

正在做的事情

Before JIMDB

一套监控系统 百余redis实例

Build a distributed system

The shared pool of big-RAM servers

management system

s2

m2

s1

m1

Java driver

集群 分片

m1

s2

m2

s1 s3

m3

s4

m4 m1

s2

m2

s3

m3

s1

Redis API Node

C driver

Scaling controller

Failure detector

Admin platform

Config center Monitoring

data pipeline

Failover controller

Failure detector

Failure detector

Auto Failover

Config center

Failure Detector

Failure Detector

Failure Detector

Clients

Failover Mgr

Online Dynamic Re-Sharding

Partial replication

Cluster bucket shard

存储引擎

Dict LSM with RAM-SSD hybrid B+Tree

底层技术研发

复制协议

async, sync filtered, partial replication State Machine Replication

分片策略

Hash Range

分而治之

纯缓存 可靠存储

不复制或异步复制

哈希分片

LRU淘汰

同步或SMR复制

范围或哈希分片

快照备份

根据业务场景交付不同集群

完善的监控体系

容器化

基于容器的自动化运维

自助申请接入

运维管理(WEB)

后台审批部署

镜像

机器 选择

流控 实例调度和迁移

ERP、部门、系统、

应用接口对接

自助接入portal

老平台对接

用户新建空间

每夜升级

元数据

客户端信息展示

控制台

日志 集群统计图

报警网关接口切换

目前规模

256GB RAM, 10Gb NIC

数千台大内存机器,多个数据中心

1000+线上集群

数万个Docker实例

极佳的性能

线上某集群,双11当日峰值TPS > 200W,99%延迟低于2ms

Memory Fragment Statistics

jemalloc是目前最棒的分配器,再行开发意义不大。

正在做的事情 – 更强的性能

定制网络协议栈

用户态直接驱动网卡

提升小包处理能力

更大的内存、更快的网络

正在做的事情 – 增强功能

From NoSQL to NewSQL

A scale-out, flexibly replicated, in-memory data

structure store

Multiple SQL query processors running on it

JIMDB

JDBC SQL API Node

正在做的事情 – 复用资源

从专属集群到复用空闲内存

弹性计算云机器

非结构化存储机器

聚合整个IDC的RAM资源

总结

内存,

是存储的未来。

一件事,

分步做,持续做。

Recommended