大规模存储系统的持续研发
刘海锋
Overview
京东文件系统 - JFS
分布式缓存与高速KV服务 - Jimdb
Jingdong File System (JFS)
愿景
The unified datacenter storage infrastructure (2013/7 – now)
小步快跑,分期开展
海量小文件
对象存储
块存储
新图片系统
元数据表结构存储 (wip)
Hadoop集成 (wip)
海量小文件 – 需求与挑战
商品订单
365 * 数亿 * ~10KB
商品图片
几十亿 * (20 ~200KB)
库房记录
365 * 十亿 * (KB ~ MB)
各种方案
关系数据库
Pains – 难以扩容、定期删除
开源存储系统
Pains – 选型、维护、定制
自主研发
规模推动自主研发
拿来主义 开源定制 自研
灵活可控、长期技术收益
挑战
开发周期,稳定性,长期性
小投入大产出
策略
紧扣业务需求,高度定制,分期开展
独辟蹊径,专注
JFS – 海量小文件
需求驱动
在线数据多为小文件
系统特性
系统命名
强一致复制
透明压缩
coordinator
datanode
Java client
replica group
monitor
checker
coordinator
coordinator
jfs/t5/8/10240/10000/A5B8FC33-Y
复制协议
Paxos算法变体
固定成员角色 – one primary + 2 followers
不做majority-based leader election
Full-quorum replication
二元状态机 - ReplGroupReady or ReplGroupSplit
primary
follower
follower
client
存储引擎
Primary
Follower B
Follower A
性能数字
相关工作
类似系统
Facebook’s Haystack
Taobao’s TFS
FastDFS、Weed-FS、…
JFS v1
更重要的数据
强一致性
无单点故障
无内存索引
透明压缩, et al.
JFS – 大文件流式读写
特别针对云存储服务(对象存储)
Chain Replication
Append-only extents
Pipelined write
head middle tail
JFS – 元数据表格系统
分布式字典树
Connector
manager
Mysql Replica Group MRG MRG
migratingserver
migratingserver
migrator
mergeserver
mergeserver
JFS – 云存储服务
Service Gateway
Load Balancer
JFS
Log data pipeline
Account/Bucket Manager
Erasure Coding Subsystem
Large files Small files Metadata
JFS – 新图片系统
重新搭建京东图片服务,从存储到展现
商城主站与金融产品全部图片
技术
基于JFS做底层存储
重写在线缩放处理层
JFS
Upload Service
Image
processing
Server
Image
processing
Server
Image
processing
Server
CDN
Image
processing
Server
JFS – 业务影响
多个集群
图片、订单、仓库流水、内部云存储、公有云存储、网盘后端 …
300个业务应用,PB规模
正在做的事情
元数据表格系统二期
Hadoop集成
多个子系统重构
JFS
JFS – the final picture
Jingdong unified storage infrastructure for
* both small and large files
* both online serving and offline data processing
DirectoryStore
RecordStore BlockStore
native clients RESTful API
Hadoop stack
Online Serving
(massive blob files, images, cloud storage)
Overview
京东文件系统 - JFS
分布式缓存与高速KV服务 - Jimdb
互联网服务,热点数据常驻内存
“Memory is the new disk.”
– Jim Gray
演进历史
短平快
分散管理独立Redis集群
统一平台
服务化、自动化、完善监控
自主研发
规模驱动、痛点驱动
No Pains, No Motivations
故障检测
容错能力
内存超标
持久性不够
启动慢
难以扩展
…
Jingdong In-Memory Store (Jimdb)
在原统一Redis平台基础上创新
小步快跑,分期开展
监控与运维工具
精确故障检测
自动故障切换
两级存储层次
在线纵向扩展
在线横向扩容
规模
5500 Redis实例、1200服务器、400集群
m1
s2
m2
s3
m3
s1
The shared pool of big-RAM servers
management system
m1
s2
m2
s2
m2
s1 s1
m1
s3
m3
s4
m4
m1
s2
m2
s3
m3
s1
java client
Jimdb components
Scaling controller
Failover controller
Failure detector
Failure detector
Failure detector
Inst 1
agent
Inst 2 Inst 3
Admin platform
Config DB
Inst 1
agent
Inst 2 Inst 3
Inst 1
agent
Inst 2 Inst 3
Inst 1
agent
Inst 2 Inst 3
Monitoring
data pipeline
proxy
proxy
proxy
filter filter
Java/C Client
Accurate failure detector & auto failover
分布式投票检测故障
自动提升从实例为新主
Failover controller
Failure detector Failure detector
Failure detector
m1
s2
m2
s3
m3
s1
client
Failure detector
Failure detector
Jimdb server internals
Redis协议兼容
两级存储结构
RAM + SSD/HDD
多线程读
先后开发两个存储引擎
Leveldb vs. B+Tree
性能
单实例,读写TPS近2万
Native Disk Store (leveldb)
Memory-cached
objects
Jimdb Scaling Up
Safe Online Switchover
S S’
Proxy
client
Migration
controller
Config center
client
client
Safe online switchover
主
从
key=‘6’
key=‘9’
key=‘6’
key=‘9’ key=‘6’
主
从
proxy
hold
检查rdb传输完毕
检查命令传播完毕
Jimdb Scaling Out
Safe Online Re-Sharding
Based on filtered replication
Bucket [0, 4] Bucket [5, 9]
[0, 1], [5] [2, 4] [6, 9]
Migration
controller
Config center
[0, 1], [5] [0, 4] [5, 9]
未来工作
* JFS
unified storage infrastructure for files/objects
*Jimdb
distributed cache & fast key-value store
FDB: structured data storage
总结
规模驱动自主研发、持续研发
如果不能做得更好,自研其实没有意义
好 != 铺摊子,好 = 适合公司需求
专注投入,用技术革新创造业务价值
不断改进甚至重构,保持系统的质量与活力
招聘广告
岗位名称:系统技术部,分布式系统“攻城狮”
岗位要求:热爱技术,扎实积累,基情四射
工作职责:
• 运用扎实的系统、算法与编程技术,负责大规模存储、核心中间件、
图片与视频平台的自主研发与工程实施;
• 与研发部各团队紧密合作,将自研系统广泛应用于业务,并通过技术
手段持续完善。
- 支撑海量数据(图片、订单、物流、对象存储)的京东文件系统(JFS)
- 基于内存与SSD的分布式缓存与高速KV服务(Jimdb)
- 日均百亿消息传递的新消息平台(New MQ)
- 强有力的下一代RPC服务框架(New SAF)
- 持续优化图片系统,降低带宽成本并提升购物体验
- 建设视频分发网络(VDN)
谢谢!
刘海锋