SlideShare ist ein Scribd-Unternehmen logo
1 von 25
我们是如何撑起
上千个 Pegasus 集群的
--工程篇
2021.9
李国豪
• Who are we
• Pegasus 与神策的历史渊源
• Pegasus 在神策支持的业务场景
• 私有化部署下 Pegasus 的工程化
• 私有化部署下 Pegasus 的监控策略
• 后续工作规划
• Who are we
神策数据(Sensors Data)是国内专业的大数据分析和营销科技服务提供商,为企业提供
神策营销云、神策分析云、神策数据根基平台三大产品方案,通过全渠道的数据采集与全域
用户 ID 打通,全场景多维度数据分析,全通道的精准用户触达,帮助企业实现数字化经营。
神策有哪些产品
 2015 神策分析
 2018.6 神策智能推荐
 2018.10 架构升级,产品矩阵
 2019.7 神策用户画像
当前产品矩阵
• Who are we
谁在用神策
中型互联网企业
传统企业
无外网,现场支持
产品化满足某些特定需求
神策支持云版/单机版
最低配只有 8c32g
神策支持几十节点集群
提供高性能服务
小型互联网企业
大型互联网企业
神策支持最少 3 节点 mini 集群
8c64g + 3 块 hdd盘 + 1 块 ssd 盘 + 1 块 raid 盘
• Who are we
谁在用神策
• Who are we
From id-mapping
 什么是 id-mapping?
 请求量大:每个事件到达后都需要查询;每个用户每次登录都需要写入
 数据非常重要:id-mapping 影响客户的数据质量,包括日活等核心指标
 first_id → second_id,second_id → first_id,KV 存储
存储演进 Redis
 使用 Redis 存储 id-mapping 数据
 客户主要是以单机版为主,数据量不大
 优势:
• 用户多,坑少
• 内存存储,满足性能要求
• 系统本身也需要缓存,复用其减少需要维护的系统个数
 劣势:
• 单实例
• 内存占用高
• 易失性
存储演进 Redis 分布式方案
 集群版客户增加 --> Redis 分布式方案
 最开始是 Redis Sentinel,后续 Redis Cluster 稳定后为 Redis Cluster
 优势:
• 运维工具可用性高
• 有成熟的水平扩展方案
 劣势:
• 随着客户发展 id-mapping 数据量增大,占用内存过高
• 更多业务需要 KV 存储,Redis 中的数据越来越多
存储演进 SSDB
 2017 年引入 SSDB
 分布式方案是 SSDB master-slave
 优势
• 完美兼容 Redis,升级迁移代价小
• SSDB 基于 leveldb,对于有明显访问局部性的 id-mapping 类型数据来说占用较
少内存资源,保证较好的性能
 劣势:
• SSDB 不能水平扩展,成为了单点
• 数据量大后容易把单个节点 io 打满
 随着神策由单一产品变为产品矩阵,越来越多产品线需要 KV 存储,客户规模也越来越
大,有了新的存储需求
Requirement & Why Pegasus?
1. 支持分布式存储,高可用、可扩展
2. 可持久化,数据不丢失
3. 读写性能
4. 内存可控 (最好有 hard limit),内存占用较小
5. 稳定性好,可靠,有比较完善的运维监控工具
6. 支持 mget & mset
7. 开源社区,学习使用成本低
8. 较低成本的迁移方案
在对各项产品对比调研后,神策选择使用 Pegasus 来存储 id-mapping 为代表的
kv 数据。目前在每个神策部署环境中,会包含 1 到 2 个 Pegasus 集群
渠道追踪
 业务说明:追踪新增用户/事件的来源渠道
 请求特征:
• qps 和客户数据量强相关
• 有效期有多种
• 单表存储了多种数据
某 demo 渠道活跃用户数据
多租户的在线服务
 业务说明:神策部分新的产品组件是基于 SaaS 架构的,因此有多租户的概念
 请求特征:
• 表数量多
• 无法预估数据量
• 流量不均匀
• 分地域公用环境
• 在线服务
首日首次标记
 业务说明:记录当前是否用户第一次触发该事件
 请求特征:
• 请求 qps 和客户数据量强相关
• 大部分情况请求只有 insert/get,没有 update
• 如果开启了 id-mapping 1对多映射/多对多映射,则还涉及对首日首次数据的修正,
即批量 update
用户画像基础服务
 业务说明:为其他产品线提供高效查询存储接口
 请求特征:
• 条数和用户规模强相关
• 有一定性能要求,数据存储在在线节点上
• 部分数据如用户属性 value 很长,目前我们对用户属性的大小和个数限制比较宽松
id-mapping
其他
私有化架构增加一个存储服务代价过高,因此很多其他场景也复用了 Pegasus
 类似 cache 的服务
 类似消息队列的服务
 id 快速去重
 部分数据供多个服务通信,数据量很小但读写 qps 较高
神策特色
 私有化:
• 维护有状态服务成本高
• 老版本长期存在
 To B:集群数量多
• 操作需要产品化
(设计评审 → 开发 → CR → 测试 → 发版 → 交付)
• 可用性要求更高
 传统行业客户
• 基本没有 UI,纯命令行
• 无外网
工程化内容分类
分类 具体内容
基本功能 部署
扩缩容
配置管理
升级
扩展功能 集群迁移
原地重做
扩分片
系统与调优与诊断 无人值守的故障修复
有人值守的故障诊断
一键部署
 基于神策云平台自研框架
 实现 Pegasus 各个模块的部署
• 服务拓扑
• 根据机器资源,计算合理配置值(data_dirs、block_cache)
• 初始化分片因子,用于为建大表提供分片数
建表优化
 由于不同客户的机器配置的差异化,建表参数需要适配到具体环境
• 小表:大部分业务表数据量小,多租户的表数量很多,分片数需要尽量小
• 大表:需要匹配具体环境,更合理利用 io 资源
 分片因子:Pegasus 存储盘个数;部署、扩缩容、加减盘更新
 配套实现了扩分片工具(2.3+ 支持热扩,目前只能通过 copy_data 实现)
配置管理
 背景:
• 修改配置易误操作
• 私有化部署,开发分布式编辑配置工具代价大
 增删改查工具,配置组管理
 升级:从非标准化的配置升级到标准配置,错误处理
配置模板 zookeeper
group0: {
data_dirs: data0:$dir0, data1:$dir1,
rocksdb_block_cache_capacity: 17179869184,
rocksdb_total_size_across_write_buffer: 15032385536
},
group1: {
data_dirs: data0:$dir3, data1:$dir4,
rocksdb_block_cache_capacity: 17179869184,
rocksdb_total_size_across_write_buffer: 15032385536
},
实例配置
config.ini
= +
一键升级
 步骤管理和断点继续
 支持热升级
 单个步骤可回滚
 已在上百家客户运行
有人值守故障检测和诊断
 传统客户实施同学处理问题成本高
 按照规则自动检测当前系统故障,并辅助诊断:
• 实例频繁重启
• 分片 unhealthy
• 检测系统指标(p99,打开文件数)
异常给出修复指令
(balance / 扩分片 / compact / 修改 block_cache)
无人值守下故障检测和修复
 基于神策内部调度器,低峰期运行
 按照规则自动检测当前系统故障,并自动修复
• 触发负载均衡
• 对于已知的不合理配置自动修复(下次重启生效)
工程化方向 Pegasus 社区实现 工程化目标
一键 balance set_meta_level 触发3节点以上 replica
server 均衡 replica
同步&异步命令
单节点&2节点集群的均衡
磁盘间按照比例均衡
一键加减盘 修改配置重启
提供独立命令,触发负载均衡
一键原地重做 由数据目录恢复元数据
进度管理,断点继续,可重入可回滚
合理预估时长
一键扩容缩容 相关文档流程说明
基于云平台的增删节点框架
根据客户的机器资源生成匹配配置
transfer meta server
一键迁移 copy_data 命令
进度管理,断点继续,可重入可回滚
合理预估时长
监控项 说明 可能故障的原因
进程探活 端口 + 进程关键字 配置文件错误
数据写坏
打开文件数达到上限
服务状态 node -d 查看状态 分片过多,加载过慢
数据完整性 副本持续不健康 数据写坏
性能 P99 监控 replica 不均衡
分片数不合理
机器资源不足
meta server 双主监控
主不一致
zk 故障
主机名/ ip 更换
 一键升级 2.2 版本
 一键变更 ip 标识为 fqdn
 合入 Partition Split
 优化 copy_data 性能
thanks

Weitere ähnliche Inhalte

Ähnlich wie How do we manage more than one thousand of Pegasus clusters - engine part

新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)锐 张
 
天涯论坛的技术进化史-Qcon2011
天涯论坛的技术进化史-Qcon2011天涯论坛的技术进化史-Qcon2011
天涯论坛的技术进化史-Qcon2011Yiwei Ma
 
淘宝双11双12案例分享
淘宝双11双12案例分享淘宝双11双12案例分享
淘宝双11双12案例分享vanadies10
 
Greenplum技术
Greenplum技术Greenplum技术
Greenplum技术锐 张
 
Qcon2013 罗李 - hadoop在阿里
Qcon2013 罗李 - hadoop在阿里Qcon2013 罗李 - hadoop在阿里
Qcon2013 罗李 - hadoop在阿里li luo
 
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境drewz lin
 
刘书良:基于大数据公共云平台的Dsp技术
刘书良:基于大数据公共云平台的Dsp技术刘书良:基于大数据公共云平台的Dsp技术
刘书良:基于大数据公共云平台的Dsp技术hdhappy001
 
Centralizing Data Security with Data Virtualization (Chinese)
Centralizing Data Security with Data Virtualization (Chinese)Centralizing Data Security with Data Virtualization (Chinese)
Centralizing Data Security with Data Virtualization (Chinese)Denodo
 
云计算概念介绍2011 03
云计算概念介绍2011 03云计算概念介绍2011 03
云计算概念介绍2011 03Liming Liu
 
03 李实恭-乘云之势以智致远 0611
03 李实恭-乘云之势以智致远 061103 李实恭-乘云之势以智致远 0611
03 李实恭-乘云之势以智致远 0611ikewu83
 
AWS Summit: Strikingly analytics
AWS Summit:  Strikingly analyticsAWS Summit:  Strikingly analytics
AWS Summit: Strikingly analyticsChase Zhang
 
CCCC China Telecom Jun Wan
CCCC China Telecom Jun WanCCCC China Telecom Jun Wan
CCCC China Telecom Jun WanCloud Congress
 
ActWeis Technology Inc. 艾格亞士科技 簡介產品及服務 (20121026)
ActWeis Technology Inc. 艾格亞士科技 簡介產品及服務 (20121026)ActWeis Technology Inc. 艾格亞士科技 簡介產品及服務 (20121026)
ActWeis Technology Inc. 艾格亞士科技 簡介產品及服務 (20121026)ActWeis Technology Inc.
 
云存储与虚拟化分论坛 基于云计算的海量数据挖掘
云存储与虚拟化分论坛 基于云计算的海量数据挖掘云存储与虚拟化分论坛 基于云计算的海量数据挖掘
云存储与虚拟化分论坛 基于云计算的海量数据挖掘Riquelme624
 
大鱼架构演进
大鱼架构演进大鱼架构演进
大鱼架构演进Jun Liu
 
杨少华:阿里开放数据处理服务
杨少华:阿里开放数据处理服务杨少华:阿里开放数据处理服务
杨少华:阿里开放数据处理服务hdhappy001
 
淘宝数据可视化[2010 SD2.0]
淘宝数据可视化[2010 SD2.0]淘宝数据可视化[2010 SD2.0]
淘宝数据可视化[2010 SD2.0]KennyZ
 
Toutiao 2013 Jan Series B Funding Deck
Toutiao 2013 Jan Series B Funding DeckToutiao 2013 Jan Series B Funding Deck
Toutiao 2013 Jan Series B Funding DeckMatthew Brennan
 
Data Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouseData Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouseJack Gao
 
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验colderboy17
 

Ähnlich wie How do we manage more than one thousand of Pegasus clusters - engine part (20)

新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)新浪云计算公开课第一期:Let’s run @ sae(丛磊)
新浪云计算公开课第一期:Let’s run @ sae(丛磊)
 
天涯论坛的技术进化史-Qcon2011
天涯论坛的技术进化史-Qcon2011天涯论坛的技术进化史-Qcon2011
天涯论坛的技术进化史-Qcon2011
 
淘宝双11双12案例分享
淘宝双11双12案例分享淘宝双11双12案例分享
淘宝双11双12案例分享
 
Greenplum技术
Greenplum技术Greenplum技术
Greenplum技术
 
Qcon2013 罗李 - hadoop在阿里
Qcon2013 罗李 - hadoop在阿里Qcon2013 罗李 - hadoop在阿里
Qcon2013 罗李 - hadoop在阿里
 
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
Top100summit 腾讯-周健-服务化与体系化解决大量定制小项目开发困境
 
刘书良:基于大数据公共云平台的Dsp技术
刘书良:基于大数据公共云平台的Dsp技术刘书良:基于大数据公共云平台的Dsp技术
刘书良:基于大数据公共云平台的Dsp技术
 
Centralizing Data Security with Data Virtualization (Chinese)
Centralizing Data Security with Data Virtualization (Chinese)Centralizing Data Security with Data Virtualization (Chinese)
Centralizing Data Security with Data Virtualization (Chinese)
 
云计算概念介绍2011 03
云计算概念介绍2011 03云计算概念介绍2011 03
云计算概念介绍2011 03
 
03 李实恭-乘云之势以智致远 0611
03 李实恭-乘云之势以智致远 061103 李实恭-乘云之势以智致远 0611
03 李实恭-乘云之势以智致远 0611
 
AWS Summit: Strikingly analytics
AWS Summit:  Strikingly analyticsAWS Summit:  Strikingly analytics
AWS Summit: Strikingly analytics
 
CCCC China Telecom Jun Wan
CCCC China Telecom Jun WanCCCC China Telecom Jun Wan
CCCC China Telecom Jun Wan
 
ActWeis Technology Inc. 艾格亞士科技 簡介產品及服務 (20121026)
ActWeis Technology Inc. 艾格亞士科技 簡介產品及服務 (20121026)ActWeis Technology Inc. 艾格亞士科技 簡介產品及服務 (20121026)
ActWeis Technology Inc. 艾格亞士科技 簡介產品及服務 (20121026)
 
云存储与虚拟化分论坛 基于云计算的海量数据挖掘
云存储与虚拟化分论坛 基于云计算的海量数据挖掘云存储与虚拟化分论坛 基于云计算的海量数据挖掘
云存储与虚拟化分论坛 基于云计算的海量数据挖掘
 
大鱼架构演进
大鱼架构演进大鱼架构演进
大鱼架构演进
 
杨少华:阿里开放数据处理服务
杨少华:阿里开放数据处理服务杨少华:阿里开放数据处理服务
杨少华:阿里开放数据处理服务
 
淘宝数据可视化[2010 SD2.0]
淘宝数据可视化[2010 SD2.0]淘宝数据可视化[2010 SD2.0]
淘宝数据可视化[2010 SD2.0]
 
Toutiao 2013 Jan Series B Funding Deck
Toutiao 2013 Jan Series B Funding DeckToutiao 2013 Jan Series B Funding Deck
Toutiao 2013 Jan Series B Funding Deck
 
Data Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouseData Analyse Black Horse - ClickHouse
Data Analyse Black Horse - ClickHouse
 
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
腾讯 马志强 虚拟化环境下 网络 朋务器 平台的协作经验
 

Mehr von acelyc1112009

Apache Pegasus (incubating): A distributed key-value storage system
Apache Pegasus (incubating): A distributed key-value storage systemApache Pegasus (incubating): A distributed key-value storage system
Apache Pegasus (incubating): A distributed key-value storage systemacelyc1112009
 
How does Apache Pegasus used in SensorsData
How does Apache Pegasusused in SensorsDataHow does Apache Pegasusused in SensorsData
How does Apache Pegasus used in SensorsDataacelyc1112009
 
How does the Apache Pegasus used in Advertising Data Stream in SensorsData
How does the Apache Pegasus used in Advertising Data Stream in SensorsDataHow does the Apache Pegasus used in Advertising Data Stream in SensorsData
How does the Apache Pegasus used in Advertising Data Stream in SensorsDataacelyc1112009
 
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...acelyc1112009
 
How does Apache Pegasus used in Xiaomi's Universal Recommendation Algorithm ...
How does Apache Pegasus used  in Xiaomi's Universal Recommendation Algorithm ...How does Apache Pegasus used  in Xiaomi's Universal Recommendation Algorithm ...
How does Apache Pegasus used in Xiaomi's Universal Recommendation Algorithm ...acelyc1112009
 
The Introduction of Apache Pegasus 2.4.0
The Introduction of Apache Pegasus 2.4.0The Introduction of Apache Pegasus 2.4.0
The Introduction of Apache Pegasus 2.4.0acelyc1112009
 
How does Apache Pegasus (incubating) community develop at SensorsData
How does Apache Pegasus (incubating) community develop at SensorsDataHow does Apache Pegasus (incubating) community develop at SensorsData
How does Apache Pegasus (incubating) community develop at SensorsDataacelyc1112009
 
The Design, Implementation and Open Source Way of Apache Pegasus
The Design, Implementation and Open Source Way of Apache PegasusThe Design, Implementation and Open Source Way of Apache Pegasus
The Design, Implementation and Open Source Way of Apache Pegasusacelyc1112009
 
Apache Pegasus's Practice in Data Access Business of Xiaomi
Apache Pegasus's Practice in Data Access Business of XiaomiApache Pegasus's Practice in Data Access Business of Xiaomi
Apache Pegasus's Practice in Data Access Business of Xiaomiacelyc1112009
 
The Advertising Algorithm Architecture in Xiaomi and How does Pegasus Practic...
The Advertising Algorithm Architecture in Xiaomi and How does Pegasus Practic...The Advertising Algorithm Architecture in Xiaomi and How does Pegasus Practic...
The Advertising Algorithm Architecture in Xiaomi and How does Pegasus Practic...acelyc1112009
 
How do we manage more than one thousand of Pegasus clusters - backend part
How do we manage more than one thousand of Pegasus clusters - backend partHow do we manage more than one thousand of Pegasus clusters - backend part
How do we manage more than one thousand of Pegasus clusters - backend partacelyc1112009
 

Mehr von acelyc1112009 (11)

Apache Pegasus (incubating): A distributed key-value storage system
Apache Pegasus (incubating): A distributed key-value storage systemApache Pegasus (incubating): A distributed key-value storage system
Apache Pegasus (incubating): A distributed key-value storage system
 
How does Apache Pegasus used in SensorsData
How does Apache Pegasusused in SensorsDataHow does Apache Pegasusused in SensorsData
How does Apache Pegasus used in SensorsData
 
How does the Apache Pegasus used in Advertising Data Stream in SensorsData
How does the Apache Pegasus used in Advertising Data Stream in SensorsDataHow does the Apache Pegasus used in Advertising Data Stream in SensorsData
How does the Apache Pegasus used in Advertising Data Stream in SensorsData
 
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
The Construction and Practice of Apache Pegasus in Offline and Online Scenari...
 
How does Apache Pegasus used in Xiaomi's Universal Recommendation Algorithm ...
How does Apache Pegasus used  in Xiaomi's Universal Recommendation Algorithm ...How does Apache Pegasus used  in Xiaomi's Universal Recommendation Algorithm ...
How does Apache Pegasus used in Xiaomi's Universal Recommendation Algorithm ...
 
The Introduction of Apache Pegasus 2.4.0
The Introduction of Apache Pegasus 2.4.0The Introduction of Apache Pegasus 2.4.0
The Introduction of Apache Pegasus 2.4.0
 
How does Apache Pegasus (incubating) community develop at SensorsData
How does Apache Pegasus (incubating) community develop at SensorsDataHow does Apache Pegasus (incubating) community develop at SensorsData
How does Apache Pegasus (incubating) community develop at SensorsData
 
The Design, Implementation and Open Source Way of Apache Pegasus
The Design, Implementation and Open Source Way of Apache PegasusThe Design, Implementation and Open Source Way of Apache Pegasus
The Design, Implementation and Open Source Way of Apache Pegasus
 
Apache Pegasus's Practice in Data Access Business of Xiaomi
Apache Pegasus's Practice in Data Access Business of XiaomiApache Pegasus's Practice in Data Access Business of Xiaomi
Apache Pegasus's Practice in Data Access Business of Xiaomi
 
The Advertising Algorithm Architecture in Xiaomi and How does Pegasus Practic...
The Advertising Algorithm Architecture in Xiaomi and How does Pegasus Practic...The Advertising Algorithm Architecture in Xiaomi and How does Pegasus Practic...
The Advertising Algorithm Architecture in Xiaomi and How does Pegasus Practic...
 
How do we manage more than one thousand of Pegasus clusters - backend part
How do we manage more than one thousand of Pegasus clusters - backend partHow do we manage more than one thousand of Pegasus clusters - backend part
How do we manage more than one thousand of Pegasus clusters - backend part
 

How do we manage more than one thousand of Pegasus clusters - engine part

  • 2. • Who are we • Pegasus 与神策的历史渊源 • Pegasus 在神策支持的业务场景 • 私有化部署下 Pegasus 的工程化 • 私有化部署下 Pegasus 的监控策略 • 后续工作规划
  • 3. • Who are we 神策数据(Sensors Data)是国内专业的大数据分析和营销科技服务提供商,为企业提供 神策营销云、神策分析云、神策数据根基平台三大产品方案,通过全渠道的数据采集与全域 用户 ID 打通,全场景多维度数据分析,全通道的精准用户触达,帮助企业实现数字化经营。
  • 4. 神策有哪些产品  2015 神策分析  2018.6 神策智能推荐  2018.10 架构升级,产品矩阵  2019.7 神策用户画像 当前产品矩阵 • Who are we
  • 7. From id-mapping  什么是 id-mapping?  请求量大:每个事件到达后都需要查询;每个用户每次登录都需要写入  数据非常重要:id-mapping 影响客户的数据质量,包括日活等核心指标  first_id → second_id,second_id → first_id,KV 存储
  • 8. 存储演进 Redis  使用 Redis 存储 id-mapping 数据  客户主要是以单机版为主,数据量不大  优势: • 用户多,坑少 • 内存存储,满足性能要求 • 系统本身也需要缓存,复用其减少需要维护的系统个数  劣势: • 单实例 • 内存占用高 • 易失性
  • 9. 存储演进 Redis 分布式方案  集群版客户增加 --> Redis 分布式方案  最开始是 Redis Sentinel,后续 Redis Cluster 稳定后为 Redis Cluster  优势: • 运维工具可用性高 • 有成熟的水平扩展方案  劣势: • 随着客户发展 id-mapping 数据量增大,占用内存过高 • 更多业务需要 KV 存储,Redis 中的数据越来越多
  • 10. 存储演进 SSDB  2017 年引入 SSDB  分布式方案是 SSDB master-slave  优势 • 完美兼容 Redis,升级迁移代价小 • SSDB 基于 leveldb,对于有明显访问局部性的 id-mapping 类型数据来说占用较 少内存资源,保证较好的性能  劣势: • SSDB 不能水平扩展,成为了单点 • 数据量大后容易把单个节点 io 打满  随着神策由单一产品变为产品矩阵,越来越多产品线需要 KV 存储,客户规模也越来越 大,有了新的存储需求
  • 11. Requirement & Why Pegasus? 1. 支持分布式存储,高可用、可扩展 2. 可持久化,数据不丢失 3. 读写性能 4. 内存可控 (最好有 hard limit),内存占用较小 5. 稳定性好,可靠,有比较完善的运维监控工具 6. 支持 mget & mset 7. 开源社区,学习使用成本低 8. 较低成本的迁移方案 在对各项产品对比调研后,神策选择使用 Pegasus 来存储 id-mapping 为代表的 kv 数据。目前在每个神策部署环境中,会包含 1 到 2 个 Pegasus 集群
  • 12. 渠道追踪  业务说明:追踪新增用户/事件的来源渠道  请求特征: • qps 和客户数据量强相关 • 有效期有多种 • 单表存储了多种数据 某 demo 渠道活跃用户数据
  • 13. 多租户的在线服务  业务说明:神策部分新的产品组件是基于 SaaS 架构的,因此有多租户的概念  请求特征: • 表数量多 • 无法预估数据量 • 流量不均匀 • 分地域公用环境 • 在线服务
  • 14. 首日首次标记  业务说明:记录当前是否用户第一次触发该事件  请求特征: • 请求 qps 和客户数据量强相关 • 大部分情况请求只有 insert/get,没有 update • 如果开启了 id-mapping 1对多映射/多对多映射,则还涉及对首日首次数据的修正, 即批量 update 用户画像基础服务  业务说明:为其他产品线提供高效查询存储接口  请求特征: • 条数和用户规模强相关 • 有一定性能要求,数据存储在在线节点上 • 部分数据如用户属性 value 很长,目前我们对用户属性的大小和个数限制比较宽松
  • 15. id-mapping 其他 私有化架构增加一个存储服务代价过高,因此很多其他场景也复用了 Pegasus  类似 cache 的服务  类似消息队列的服务  id 快速去重  部分数据供多个服务通信,数据量很小但读写 qps 较高
  • 16. 神策特色  私有化: • 维护有状态服务成本高 • 老版本长期存在  To B:集群数量多 • 操作需要产品化 (设计评审 → 开发 → CR → 测试 → 发版 → 交付) • 可用性要求更高  传统行业客户 • 基本没有 UI,纯命令行 • 无外网
  • 17. 工程化内容分类 分类 具体内容 基本功能 部署 扩缩容 配置管理 升级 扩展功能 集群迁移 原地重做 扩分片 系统与调优与诊断 无人值守的故障修复 有人值守的故障诊断
  • 18. 一键部署  基于神策云平台自研框架  实现 Pegasus 各个模块的部署 • 服务拓扑 • 根据机器资源,计算合理配置值(data_dirs、block_cache) • 初始化分片因子,用于为建大表提供分片数 建表优化  由于不同客户的机器配置的差异化,建表参数需要适配到具体环境 • 小表:大部分业务表数据量小,多租户的表数量很多,分片数需要尽量小 • 大表:需要匹配具体环境,更合理利用 io 资源  分片因子:Pegasus 存储盘个数;部署、扩缩容、加减盘更新  配套实现了扩分片工具(2.3+ 支持热扩,目前只能通过 copy_data 实现)
  • 19. 配置管理  背景: • 修改配置易误操作 • 私有化部署,开发分布式编辑配置工具代价大  增删改查工具,配置组管理  升级:从非标准化的配置升级到标准配置,错误处理 配置模板 zookeeper group0: { data_dirs: data0:$dir0, data1:$dir1, rocksdb_block_cache_capacity: 17179869184, rocksdb_total_size_across_write_buffer: 15032385536 }, group1: { data_dirs: data0:$dir3, data1:$dir4, rocksdb_block_cache_capacity: 17179869184, rocksdb_total_size_across_write_buffer: 15032385536 }, 实例配置 config.ini = +
  • 20. 一键升级  步骤管理和断点继续  支持热升级  单个步骤可回滚  已在上百家客户运行
  • 21. 有人值守故障检测和诊断  传统客户实施同学处理问题成本高  按照规则自动检测当前系统故障,并辅助诊断: • 实例频繁重启 • 分片 unhealthy • 检测系统指标(p99,打开文件数) 异常给出修复指令 (balance / 扩分片 / compact / 修改 block_cache) 无人值守下故障检测和修复  基于神策内部调度器,低峰期运行  按照规则自动检测当前系统故障,并自动修复 • 触发负载均衡 • 对于已知的不合理配置自动修复(下次重启生效)
  • 22. 工程化方向 Pegasus 社区实现 工程化目标 一键 balance set_meta_level 触发3节点以上 replica server 均衡 replica 同步&异步命令 单节点&2节点集群的均衡 磁盘间按照比例均衡 一键加减盘 修改配置重启 提供独立命令,触发负载均衡 一键原地重做 由数据目录恢复元数据 进度管理,断点继续,可重入可回滚 合理预估时长 一键扩容缩容 相关文档流程说明 基于云平台的增删节点框架 根据客户的机器资源生成匹配配置 transfer meta server 一键迁移 copy_data 命令 进度管理,断点继续,可重入可回滚 合理预估时长
  • 23. 监控项 说明 可能故障的原因 进程探活 端口 + 进程关键字 配置文件错误 数据写坏 打开文件数达到上限 服务状态 node -d 查看状态 分片过多,加载过慢 数据完整性 副本持续不健康 数据写坏 性能 P99 监控 replica 不均衡 分片数不合理 机器资源不足 meta server 双主监控 主不一致 zk 故障 主机名/ ip 更换
  • 24.  一键升级 2.2 版本  一键变更 ip 标识为 fqdn  合入 Partition Split  优化 copy_data 性能

Hinweis der Redaktion

  1. 2015 年成立,核心成员来自百度大数据部 2016 A轮 400w$ → 2017年 B轮 1100w$ → 2018年 C轮 4400w$ → 2020年 C+轮 3000w$ 北京总部 上海 深圳 广州 武汉 合肥 西安 成都 福州 目前 1.2k+ 人,预计年底 1.5k 神策目前深耕诸多行业,涉及品牌零售、电子商务、银行、在线教育、保险、企业服务、证券、游戏、融合媒体、互联网金融、汽车等多种细分行业定制解决方案
  2. 智能推荐:感知和分析 --> 洞察和决策 分析:赋予客户对冗杂数据的分析的能力 event-user 用户画像:帮助客户以标签化等方式更高效的利用 user 数据 触达与行动 --> 评估与反馈
  3. 私有化部署居多 绝大部分是单机版,其次是 mini 版,性能要求不高 小部分大集群,对性能要求敏感,并且可能包含特殊的使用场景,比如每天导入全量用户数据
  4. 为了解决跨屏贯通一个用户数据的问题,即复杂生产环境中用户行为与用户的匹配问题。
  5. 出现了过多 OOM
  6. TiKV: multi query Pegasus: multi get
  7. 有效期根据用途分为半小时,12 小时,30 天,120 天等多种 由于历史原因,单表存储了多种数据
  8. 单个集群上千张表,每个租户对应 3~5 张表 单表创建时无法预估其后续的数据量 大部分表是没有流量或者流量很少的,少部分表是流量很大且数据量很大 SaaS 分地域公用环境,目前单个地域都是 3 节点单盘 在线服务,对性能敏感,对可用性敏感
  9. id-mapping 业务说明:用户与设备的 1对1映射,1对多映射,多对多映射 请求特征: 请求 qps 和客户数据量强相关 基本所有客户都需要 id-mapping,即覆盖上千个集群
  10. 私有化: 维护有状态服务的成本高,存储需要尽可能复用 老版本长期存在,设计任何功能需要兼容历史版本,新版本需要包含升级逻辑 To B:集群数量多,部分客户必须现场操作,因此 操作需要产品化,不能通过临时脚本去完成 (设计评审 → 开发 → CR → 测试 → 发版 → 交付) 可用性要求更高,包括:自动化异常检测,运维操作需要回滚与断点继续 传统行业客户很多很重要 基本没有 UI,纯命令行 无外网,实施现场定位问题成本高,现场实施同学对系统熟悉度不足,因此对模块的可运维性有更高要求
  11. 配置维护 配置组 希望所有客户都修改的配置,可以随着版本升级推进 希望部分客户修改的配置,可以通过工具修改,并且不会随着升级而覆盖
  12. 支持热升级:执行后检测集群规模,按照机器个数生成步骤列表,逐一完成重启 基于自研的 stepworker 框架实现步骤管理和断点继续
  13. 传统客户外网,需要由实施同学上门拍照处理问题
  14. 环境很多,差异化监控难以维护,也不方便中心化的监控平台(在建设中) 很多客户没有外网,可能出问题的时候已经难以定位,更需要恢复措施 大客户可能需要拍照调试,定位问题比较慢,需要尽可能少而有效的指标 zk 故障一般是磁盘 io 问题 磁盘 io 打满/ cpu 或者内存不足
  15. 合入 split replica(2.3) ppt 发布功能 目前大量客户分片设置不合理,导致不能有效利用磁盘资源 已实现停服务扩分片工具,但停服务时间过长客户无法接受 产品化:异步开启 / 查看进度 一键升级 2.2 版本 当前版本 1.12.3,升级需要先到 2.0 ,再到 2.2 上千家客户手动升级成本不能接受 在线服务需要支持滚动热升级 需要根据机器规模生成步骤列表,逐个机器操作 fqdn 相比 ip,更不容易变更(大客户可能出现搬迁机房,更换网段等操作) 神策本身是大数据服务商,保证单个机器的 fqdn 可用,目前其他组件都用 fqdn 标记机器 当前有比较多的场景使用了 ip,导致每次变更需要修改的地方过多 设计考虑: 支持 fqdn 作为本机标志 开发 ip 变 fqdn 的工具,一键修改所有相关配置