vivo数据库与存储平台建设和探索
如果无法正常显示,请先停止浏览器的去广告插件。
1. 2021 vivo开发者大会
互联网技术专场
vivo存储技术团队研发总监
2. 2021.12.16 vivo 开发者大会-互联网技术专场
3. 2021.12.16 vivo 开发者大会-互联网技术专场
4. 在网总用户数达
数据库与存储平台
建设背景
vivo移动互联网
累计总用户超过
浏览器
日活突破
月活过亿的应用
2019
2018.11
2020.2
2020.5
数据库实例
数据库&存储服务器
应用商店
钱包
浏览器
小视频app
布局内容生态
视频
数据来源:vivo
2021.12.16 vivo 开发者大会-互联网技术专场
5. 数据库与存储平台
建设背景
故障频次高:数据库故障数量为16起,占整个数 架构不合理:公司绝大多数场景业务使用的都是内
据库实例数量的比率为0.14%(2018年数据库 存KV数据库,内存资源昂贵
可用性数据回顾) 资源利用率低:数据库服务实例密度低,硬件资源
故障类型多:低效SQL、人为误操作、基础设施 利用不充分
故障、业务流量突增、开源产品不健壮原因导致的
有10起故障
变更操作不规范:误删、误更新目标数据、误更新 权限控制,存在弱密码、不合理的公网权限等
数据范围、误更新目标环境等 数据安全,缺少敏感数据识别、存储、使用的全流
变更流程不规范:变更流程不规范、变更步骤不完 程把控
善等
变更无平台支撑:人工操作变更、变更耗时长等
2021.12.16 vivo 开发者大会-互联网技术专场
6. 2017-2021数据库运营数据
数据实例规模
60000
16.00
56236
14.49
14.00
50000
12.00
数据库与存储平台
建设背景
数据库服务器规模
40000
37806
10.00
30426
30000
数据库实例部署密度
10.54
8.00
8.21
6.00
20000
4.10
4.00
10000
人均运维数据库实例规模
0
2.64
1507 570
376.75
2017年
11452
2793
1908.67
3704
3803.25
3586 4193.78
5623
2.00
3880
0.00
2018年
实例数量
2019年
服务器数量
DBA人均运维实例数量
2020年
2021
数据库服务实例密度
2021.12.16 vivo 开发者大会-互联网技术专场
7. 2021.12.16 vivo 开发者大会-互联网技术专场
8. 工
具
产
品
数据库与存储平台
产品介绍
数
数
库
&
存
储
产
品
DaaS DTS DBshell SQL审核
数据库、存储统一管理,研发&运维平台 数据传输服务,支持数据同步、数据迁移 运维白屏化工具 SQL检测与审核
MySQL
TiDB
传统关系型数据库
稳定可靠、易使用
支持版本:5.6/5.7
分布式关系型数据库
分布式架构、弹性伸缩、
高性能
版本:4.0.8
Redis
Key-Value缓存数据库
高性能、高可用、弹性伸缩
版本:3.0/4.0/自研
ElasticSearch
分布式搜索和数据分析引擎
全文/结构化检索、近实时处理
版本:6.3/7.4
磁盘KV
Key-Value数据库
Redis协议兼容、持久化存储
版本:2.0
MongoDB
面向集合存储
支持动态查询 、完全索引
版本:3.4.4/3.4.10
对象存储
基于对象的存储
支持pdf/音频/图像/视频文件等
文件存储
基于文件的存储
支持多客户端访问,吞吐量高
块存储
数据存储在大小相等的存储块中
适用频繁访问和编辑的数据
2021.12.16 vivo 开发者大会-互联网技术专场
9. 服务申请
DaaS 平台:旨在提供高度自助、高度智能化、高可用、低成本的
数据存储使用与管理平台。
服务下线
数据存储
服务平台
隔离人员与数据库账号密码的接触,提供集群粒度权限管控及敏感字段脱敏,
所有操作可审计追踪,备份数据加密存储
数据恢复
研发自助使用数据库,提供变更检测、优化诊断等功能,减少人工沟通流程,
项目变更规范流程清晰,提升研发效率
DBA仅需配置好流程规范、设计规范、审批流程等信息,研发可自助使用
数据库,减少DBA重复工作
通过巡检、监控、预案、故障跟踪等对故障进行事前防范、事中及时处理、
事后复盘总结,提升数据库可用性
服务部署
持续
改进
体系
闭环
服务维护
产品
支撑
服务变更
数据变更
服务优化
2021.12.16 vivo 开发者大会-互联网技术专场
10. DTS(Data Transmission Service)提供RDBMS、
NoSQL、OLAP等数据源间的数据交互,集数据迁移/订阅/同步
于一体,构建安全、可扩展、高可用的数据架构。
数据传输服务
DTS
不停机迁移数据库 业务异步解耦 横向扩张读能力 数据异地灾备(待支持) 异地多活
源数据库停止写入
影响较大 业务逻辑需全部变更
耗时长/稳定性差 大量读请求
单实例压力大 机房故障 单可用区
访问延迟高/扩展限制
迁移不停机
结构迁移+全量迁移+
增量数据迁移
实时消息通知
异步耦合
实时同步
只读实例
读请求分流
跨机房实时同步
保障数据一致性
流量切换快速恢复
同城/异地业务单元
双向同步/秒级恢复
就近访问
DaaS APIs
99.99%服务可用性保障
数据不重不丢
控制中心 任务调度
存取
元数据
MySQL
异构多源同步支持
迁移/订阅/同步等交互功能
源
端
MySQL
主实例
ElasticSearch
主实例
Kafka
备实例
备实例
ES
节点级故障容灾,同步链路秒级恢复
断点续传,可有效解决因硬件、网络等异常导致的传输中断
格式转换
集中存储
目
标
端
ElasticSearch
ES
Zookeeper
高可用/任务记录/位点
2021.12.16 vivo 开发者大会-互联网技术专场
11. 业务客户
MySQL 2.0基于原生MySQL,结合集群高可用管理与数据库
DNS/ Naming Service
代理的一体化架构,通过域名服务、名字服务即可轻松接入。
关系型
数据库服务
拓扑信息全局更新
Proxy-1
……
接入层探活
Proxy-n
Zookeeper
……
100%兼容MySQL协议
与SQL语法
三级读写分离,业务灵活接入
流量管控
(令牌限流,IP黑白名单等)
MySQL
Master
集群拓扑信息上报
MySQL
Slave
自动/手动主从切换
解决数据双写问题
基于RAFT实现的Agent
节点高可用
透明加密
日志审计
SQL防火墙
MySQL
Cluster
Instance Polling
探活
MySQL
Slave
Instance Polling
探活
Agent Leader
RAFT
Agent Follower
Agent Follower
2021.12.16 vivo 开发者大会-互联网技术专场
12. 基于原生Redis Cluster产品开发,支持双机房读写、故障自动切换,
并保障数据最终一致,解决Redis Cluster单IDC容灾风险和Redis
自动化运维过程中的可用性和性能问题
Redis
服务
用
户
层
业务应用
接
入
层
Tuna Proxy
流量监测
监控上报
流量控制
Redis Kernel
原生Redis协议兼容
多活版本支持Set,hash, Sort-Set,String
支持就近读写,双向同步,冲突解决
支持断点续传,故障透明转移
流量监测与流量控制
AOF Management
存
储
层
Replication
AOF日志结构改造 异步复制
AOF异步Write 文件缓存
AOF Purge 水位控制
Access Control
Cluster Slots/Nodes 命令性能优化
Forkless Background
Save
Data Structure
Tuna Agent
Tuna Transfer
CRDT Hash CRDT Counter BloomFilter
CRDT Set CRDT Sting CuckooFilter
CRDT ZSet CRDT GC RoamingBitmap
AEP硬件支持
架
构
异步复制
文件缓存
Cluster Slots/Nodes 命令性能优化
Delay Background Save
Client Management
ACL支持
AOF日志优化
Forkless RDB
Cluster Management
水位控制
Cluster指令性能优化
硬
件
多活
Tuna Agent
Tuna Manager
硬件
Tuna Transfer
AEP
性能
Memory
存储缓存一体化
2021.12.16 vivo 开发者大会-互联网技术专场
13. 基于TiKV研发的磁盘型KV存储
推荐平台组
支持Redis协议并提供大容量持久化存储
磁盘KV
服务
官网商城开发组
业务场景:部门的绩效考核和项目考核
数据描述:数据版本号,解决定时保存功能
数据覆盖的问题
业务场景:UCP(用户中心平台),为智能平台
中心推荐算法提供用户离线特征服务
数据描述:离线特征数据/TB级别
完全兼容Redis协议/兼容 低成本,大容量,可存储
大部分原始Redis命令 TB级别的数据
支持快速扩缩容,数据自动平衡
支持海量数据Bulk Load导入 数据迁移过程中不影响使用
业务描述:搜索排序
数据描述:召回时拼接离线特征/TB
Client
Tula
读写延迟,P99 10ms(value<=1KB)
应用中心组
Tula
Tula
Tula
Placement
Driver Cluster
TIKV TIKV TIKV
Region1 Region1 Region2
基于raft算法实现故障切换 断电数据不丢 Region2 Region3 Region1
后台节点故障,客户端拓扑 数据备份,支持回档 Region3 Region2 Region3
未更新不影响业务访问 保证线性一致性
2021.12.16 vivo 开发者大会-互联网技术专场
14. 对象存储服务,提供海量、安全、低成本、高性能、高可靠的存储服
务解决方案。目前提供多种语言SDK,方便开发者快速接入存储集群。
对象与文件
存储服务
支持普通、单表、分块上 支持平台上传、下载、
传、上传回调、复制、修 生成外链等操作
支持HPC/AI EC/副本冗余、 高弹性、可扩 SLA:99.99% Hadoop/云原生生态、
训练场景 生命周期管理 展、EB级支撑 11个9可靠性 主流语言SDK
接入集群(NGX)
缓存集群
改元数据信息
元数据存储(KV)
支持图片水印、剪裁、 支持视频的裁剪、拼接、
缩放、格式转换、加密 截图、切片、转码、水印、
元数据集群M
元数据集群S
业务集群(APIServer)
异步任务处理集群
数据存储(Object)
标准存储
集群
标准存储
集群
低频存储
集群
图片处理
服务
视频处理
服务
去音频、去视频流
2021.12.16 vivo 开发者大会-互联网技术专场
15. 2021.12.16 vivo 开发者大会-互联网技术专场
16. IDC自建数据库、云数据库、云主机自建数据库云上云下
运维研发
效率提升
元数据管理 数据变更 结构变更 数据查询 数据导出
SQL审核 工单协同 服务部署 服务变更 ……
统一管理
网络专线和安全隔离技术,统一管控生产、测试、预发、
开发4种环境数据存储资源
目前支持7种数据库产品的全生命流程管控
IDC内网
专线访问
IDC与云厂商
专线访问
测试域和生产域
专项互联
云主机自建数据库
云数据库
IDC自建数据库
MYSQL Redis MongoDB ElasticSearch RDS
KV-Store OSS GDB TDB Table-Store
提供从服务申请到回收下线的一站式数据存储服务
满足开发、运维、测试、产品等多个角色的数据存储产品需求
2021.12.16 vivo 开发者大会-互联网技术专场
17. 精确记录SQL查询:
数据库数据查询和变更可审计追踪
敏感数据查询脱敏
数据
安全管理
敏感数据导出权限控制和数字水印
数据库账号密码加密传输和使用,对开发、测
敏感数据识别:
人员审计
业务审计
影响审计 字段规则
字段内容
数据库密码加密传输
安全+审计 过滤+脱敏+升级审批人
SQL
试、运维均不可见
DSL
敏感数据自动识别标注
代理层敏感数据透明加解密
网
络
访
问
隔
离
库
表
权
限
隔
离
敏
感
字
段
标
记
操
作
权
限
隔
离
数据标注
数据脱敏
密码加密
数据加密
独立对象存储集群备份数据加密存储
2021.12.16 vivo 开发者大会-互联网技术专场
18. 智能的SQL
审核代码发布
不锁表结构、不锁表数据变更能力
数据
变更管理
前、中、后三道防线,杜绝烂SQL影响线上业务
一键回滚数据变更,变更历史可追踪、可审计
大批量
数据变更
发布风险高
高危SQL发现滞后
xml SQL
文件
代码文件智能提取SQL
变量替换
注解SQL
数据库负载飙升
业务大范围受到影响
一条大SQL
SQL审核引擎
多条SQL
启发式规则与执行计划
执行引擎
审核引擎规则判断影响行数
SQL自定义分拆执行
解决编写在代码中的SQL文
件审核代价高,审核成本高,
人工审核遗漏问题
解决大批量数据变更对业务
产生影响
数据变更稳定性解决方案
大表结构
变更
锁表
直接阻塞业务
大表变更DDL语句
无锁表结构变更
异步回调通知结果
表结构在线变更不影响业务,
提升业务稳定性和变更效率
多环境、多集群一键同步数据变更
可视化GUI库表设计平台
24小时自助变更
日常数据
修订
等待周期长
变更效率低
低风险SQL自助变更
变更一键回滚
修订少量条数据
业务开发者在审核流程通过
后自助实施变更,不依赖于
DBA排期
2021.12.16 vivo 开发者大会-互联网技术专场
19. 预算
以资源维度提报业务预算
预算消费软管理
服务器消耗预测
数据存储成本管控
监控
成本
部署
套餐化,定制服务标准套餐
混合部署,按照服务资源用量多实例、多产品混合部署
容量
容量预警和容量巡检,及时升降配套餐
关注业务状态,及时回收下线数据存储集群
2021.12.16 vivo 开发者大会-互联网技术专场
20. 业务层
业务1 业务2 业务2 业务3 业务4
标准场景 高性能场景 高可靠场景 冷存场景 元数据扫描高性能场景
引入高密度大容量存储服务服务器
11个9数据可靠性的EC策略
对象与文件存储
建设思考
网关层
API-Server
API-Server
API-Server
数据透明压缩,无损压缩存储
数据生命周期管理,及时清理过期数据
数据分层存储,冷数据进行归档存储
中转层
Worker
根据桶或者Object粒
度选取对应的存储集群
进行存储
Zookeeper
异步删除/生命周期管理
Kafka
删除操作消息
三副本集群
桶&对象粒度底层存储引擎IO隔离
服务端+客户端缓存,提升热点数据读取性能
opencas与io_uring等技术提升磁盘IO吞吐
存储层
Block
Block
多AZ冗余集群
Block
Block
标准存储集群信息 冷存储集群信息 KTS SSD元数据集群
高性能存储集群信息 低频存储集群信息 KTS NVME元数据集群
EC集群
EC块
SSD高性能集群
EC块
NMVE高性能集群
Block
Block
Block
Block
高密度冷备集群
Block
Block
存储桶粒度对
应的KTS集
群信息
存储桶及
Object粒度
对应的存储集
群信息
KTS SSD
元数据集群 KTS NVME
元数据集群
Bucket-kts信息 Bucket-meta 信息
Object-meta信息 Object-meta信息
2021.12.16 vivo 开发者大会-互联网技术专场
21. 运
营
权限管理
账单系统
用户管理
工单服务
平台配置
智能客服
文档中心
生
态
CICD
CMDB
BDSP
存储自治服务
性能自治
慢日志
数据库与存储
平台规划
SQL洞察
容量自治
SQL诊断
全局优化
空间分析
安全服务
智能诊断
容量趋势预测
健康检查
根因分析
场景服务
异常自愈
数据库画像
定制优化
数据变更
数据查询/导出
任务编排
SQL自检优化
数据追踪
数据归档
数据脱敏
数据加密
数据管理服务
功
能
层
BI
测试数据构建
流量复制
代码生成器
报表分析
基础存储服务
权限管控
命令通道
预算管理 部署管理 下线回收 配置管理 日志服务 接入管理 版本管理
资源池 扩/缩容 数据库迁移 监控告警 高可用 备份恢复 账号管理
数据审计
数据水印
存储服务
存
储
层
备份服务
数据集成
对象存储
网盘服务
日志服务
分布式文件系统
NoSQL数据库
关系型数据库
媒体处理
传统性
MySQL+Proxy
文档型
MongoDB 集群
加速服务
块存储
分布式
TiDB
搜索分析型
ElasticSearch
KV存储
缓存型Redis\存
储型Neptunus
生态工具 资产梳理
时间序列
数据库 数据传输
DTS 安全评估
图数据库 SQL审核
数据库防火墙
2021.12.16 vivo 开发者大会-互联网技术专场
22. 2021 vivo开发者大会
互联网技术专场
肖博 | vivo存储技术团队研发总监
相关技术文章后续
将在公众号发布
敬请关注