小米结构化存储系统 及融合云平台的...
TRANSCRIPT
![Page 2: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/2.jpg)
大纲
• 小米结构化数据存储
• 融合云平台
![Page 3: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/3.jpg)
结构化存储
分布式NoSQL数据库服务
对标AWS DynamoDB
稳定可靠低延时高可用弹性可扩展
![Page 4: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/4.jpg)
结构化存储
SDS
(Structured Data Store)基于HBASE
无状态公网访问
简化认证和配置
多语言SDK
多租户
ACL
流
量
控
制
功能扩展
数
据
类
型
二
级
索
引
STREAM
软
删
除
数
据
冷
备
![Page 5: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/5.jpg)
结构化存储
小米内部业务 生态链业务
![Page 6: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/6.jpg)
结构化存储
• 应用规模
• 北京,天津,美国,新加坡国际化
• 100+机器规模
• 20+业务数
• 100+TB,数千亿行数据量
• 10万级单集群QPS
![Page 7: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/7.jpg)
结构化存储
Zookeeper
HDFS
HBase(ssd)
libsds库
主SDS ThriftServer
Zookeeper
HDFS
HBase(hdd)
libsds库
备SDS ThriftServer
HBase replication
典型部署
应用服务 离线作业
![Page 8: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/8.jpg)
结构化存储
• libsds库
libsds
规范化的数据模型
内建数据类型支持
局部二级索引
全局二级索引
stream
![Page 9: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/9.jpg)
结构化存储
• 规范化数据模型
ØRowkey前缀:实体组键,支持哈希分布
ØRowkey后缀:主键
ØColumn Qualifier:数据列
EntityGroup PrimaryKey DataFamily Attribute Value
Rowkey Column
![Page 10: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/10.jpg)
结构化存储
数据类型支持
• bool/int8/int16/int32/int64/float/double/string/binary/set
HBASE-8201和SQLite编码方案1
• 顺序保持编码
支持逆序
• 按位取反
1http://sqlite.org/src4/doc/trunk/www/key_encoding.wiki
![Page 11: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/11.jpg)
结构化存储
• 局部二级索引:实体组内部
Ø 同一张表,不同Column Family
Ø 基于正则表达式的前缀分割策略(RegexPrefixRegionSplitPolicy):
保证同一个实体组键数据不能split
EntityGroup PrimaryKey DataFamily Attribute Value
Rowkey Column
EntityGroup PrimaryKey IndexFamily Attribute Value
Rowkey Column
IndexKey
![Page 12: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/12.jpg)
结构化存储
• 局部二级索引:HBase Coprocessor——IndexObserver
Write Hlog and memstore
calculateIndexes mergeIndexes
Put/Delete
preBatchMutate
![Page 13: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/13.jpg)
结构化存储
• 多种类型局部二级索引EAGER
更新删除时同时删除失效索引,适合写少读多
LAZY
读取时判断索引有效性,更新时不做额外操作,适合写多读少
IMMUTABLE
适合只读数据一次性写入,读写均无需额外判断
![Page 14: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/14.jpg)
结构化存储
• 全局二级索引
Ø 使用单独的HBase 表存储索引
Ø Google percolator2的 HBase实现:Themis3 ,保证跨表更新的原
子性
Ø Chronos4全局单调递增时间戳
2Large-scale Incremental Processing Using Distributed Transactions and Notifications3https://github.com/xiaomi/themis4https://github.com/xiaomi/chronos
IndexKey PrimaryKey DataFamily Attribute Value
Rowkey Column
EntityGroup
![Page 15: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/15.jpg)
结构化存储
• 局部二级索引 VS. 全局二级索引(写)
线程数 线程数
![Page 16: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/16.jpg)
结构化存储
• 局部二级索引 VS. 全局二级索引(读)
线程数 线程数
![Page 17: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/17.jpg)
结构化存储
• streamØ RECORD_IMAGE:增量备份
Ø MUTATE_LOG:Point-In-Time Recovery
F1Data
F2Image
MR
Snapshoter
snapshots
Point-In-Time Recovery
ts
Snapshot just before ts
流式消息服务
RECORD_IMAGE
MUTATE_LOG
![Page 18: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/18.jpg)
结构化存储
• SDS ThriftServer:无状态 Http Server
nginx
ThriftServer
nginx
ThriftServer
node1 node2
LVS
![Page 19: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/19.jpg)
结构化存储
SDS ThriftServer
Http 无状态公网访问
简化认证和配
置
多语言SDK 多租户
ACL流量
控制
![Page 20: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/20.jpg)
结构化存储
• SDS ThriftServerØ Http 无状态公网访问
Ø 简化认证和配置:使用小米融合云或开放平台认证,对外屏蔽了
Zookeeper配置和Kerberos认证
Ø 多语言SDK(java/python/php/node.js/c++/go/javascript)
ThriftProcessorHttpClient
(TTransport)
ThriftProcessorHttpServer
(TTransport)flush/HttpRequest
read/HttpResponse
SDK Service
![Page 21: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/21.jpg)
结构化存储
• SDS ThriftServer (ACL)Ø 元数据表: tableId => {ACL信息}Ø 本地cache元数据,zookeeper watcher 同步
ThriftServer ThriftServer ThriftServer
Zookeeper
Update ACL
Meta table
Notify
Update cache
![Page 22: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/22.jpg)
结构化存储
• SDS ThriftServer (流量控制)Ø 用户设置表的读写quota,设置表quota时检查集群能力
Ø 基于token bucket算法5进行限流(soft limit)
Ø 集群能力使用超80%时提醒扩容
5https://en.wikipedia.org/wiki/Token_bucket
Capacity
r tokens /sec
Remove token success
reject
request
![Page 23: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/23.jpg)
结构化存储
• 软删除
table snapshotsnapshot
dropTable
dropTable restoreTable
cloneSnapshot
table
TTLdeleteSnapshot
![Page 24: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/24.jpg)
结构化存储
• 数据冷备
HBase AWS S3
Export snapshot
Restore table
![Page 25: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/25.jpg)
大纲
• 小米结构化数据存储
• 融合云平台
![Page 26: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/26.jpg)
融合云
![Page 27: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/27.jpg)
融合云
• 架构
Zookeeper
HDFS
HBase
SDS FDS EMQ …
部署系统
监控告警系统
移动App 应用服务器
团队认证管理
![Page 28: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/28.jpg)
融合云
• 团队认证管理——CloudManager
CloudManager
转发
Restful API
MySQL
user 团队管理 service
前端 request双向https
Header[Authorization] =teamInfo
user
SDK
AccessKey/ signature(AccessSecret)
AccessKey
Encrypt(AccessSecret)
teamInfo
![Page 29: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/29.jpg)
融合云
• 部署系统——Minos 6 2.0Ø增加了认证授权模块
Nodesupervisor
Nodesupervisor
Nodesupervisor
Nodesupervisor
集群
Tank 管理服务器
CLI工具
Cloud manager
6https://github.com/xiaomi/minos
![Page 30: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/30.jpg)
融合云
• 监控告警系统
公网访问
权限控制
保留原始数据,支持下采样和聚合
为用户监控其它服务的资源指标提供统一入口
![Page 31: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/31.jpg)
融合云
• 监控告警系统——架构
Node Node
Node Node
ThriftServer
Cloud manager
OpenTSDBTSD
Node Node
Node Node
Node Node
Node Node
Judge
一致性哈希
SDS
Client FDS/SDS/EMQ/…Metrics
Collector
![Page 32: 小米结构化存储系统 及融合云平台的 设计与实践bos.itdks.com/815013f454cc45af89153bc85a00a744.pdf · 单集群QPS • 10 万级. 结构化 ... ØGoogle percolator2的](https://reader033.vdocuments.net/reader033/viewer/2022052808/607306e1f20a263a7a1098be/html5/thumbnails/32.jpg)