20
大规模内存数据库JIMDB: 20142016 刘海锋@京东 www.jd.com

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

Embed Size (px)

Citation preview

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

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

刘海锋@京东

www.jd.com

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

E-Commerce Needs Fast Data

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

Memory is the new disk.

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

@jaybaer

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

The Jingdong In-Memory Database

以内存为中心

的数据存储

过去两年

持续建设 支撑京东大多

数动态内容

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

演进历程

叱前时代

分布式平台化

底层技术研发

快速规模增长

全自动化维护

正在做的事情

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

Before JIMDB

一套监控系统 百余redis实例

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

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

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

Auto Failover

Config center

Failure Detector

Failure Detector

Failure Detector

Clients

Failover Mgr

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

Online Dynamic Re-Sharding

Partial replication

Cluster bucket shard

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

存储引擎

Dict LSM with RAM-SSD hybrid B+Tree

底层技术研发

复制协议

async, sync filtered, partial replication State Machine Replication

分片策略

Hash Range

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

分而治之

纯缓存 可靠存储

不复制或异步复制

哈希分片

LRU淘汰

同步或SMR复制

范围或哈希分片

快照备份

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

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

完善的监控体系

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

容器化

基于容器的自动化运维

自助申请接入

运维管理(WEB)

后台审批部署

镜像

机器 选择

流控 实例调度和迁移

ERP、部门、系统、

应用接口对接

自助接入portal

老平台对接

用户新建空间

每夜升级

元数据

客户端信息展示

控制台

日志 集群统计图

报警网关接口切换

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

目前规模

256GB RAM, 10Gb NIC

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

1000+线上集群

数万个Docker实例

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

极佳的性能

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

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

Memory Fragment Statistics

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

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

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

定制网络协议栈

用户态直接驱动网卡

提升小包处理能力

更大的内存、更快的网络

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

正在做的事情 – 增强功能

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

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

正在做的事情 – 复用资源

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

弹性计算云机器

非结构化存储机器

聚合整个IDC的RAM资源

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

总结

内存,

是存储的未来。

一件事,

分步做,持续做。