四年磨一剑:蚂蚁集团注册中心 SOFARegistry 的开发实践之路
如果无法正常显示,请先停止浏览器的去广告插件。
1. 四年磨一剑:蚂蚁集团注册中心
SOFARegistry 的开发实践之路
向旭 / 李旭东
2.
3. 分享内容
• 蚂蚁集团注册中心的10年
• 新挑战:SOFARegistry
架构:超大规模
质量:高效迭代
运维:自动化
• 开源与共赢
4. 服务发现的核心能力
5. 演进:V1 引进淘宝的 configserver
架构:单节点,master/slave 备份
面临问题
•容量瓶颈
•容灾风险
6. 演进:V2 横向扩展
架构:拆分 session/data,水平扩展
•session:处理连接
•data:数据分片存储
面临问题
•运维成本:serverlist 维护
7. 演进:V3/V4 LDC 支持和容灾
架构:单元化支持
面临问题
•运维成本:serverlist 维护
•跨集群服务发现
8. 演进:V5(SOFARegistry)
架构:
• 新增 meta(raft):serverlist 维护
• 数据分片:一致性 hash
• 数据多副本容灾
9. 演进:V6(SOFARegistry)
架构:
• meta去强一致性依赖
• 数据分片:SlotTable
• 数据多副本容灾:diff sync
10. Feature Consul Zookeeper
Etcd
Eureka
服务健康检查 定期healthcheck
(http/tcp/script/docker) 定期心跳保持会话
(session) + TTL Kv存储服务 支持 支持 支持 - -
一致性 raft ZAB raft 最终一致性 最终一致性
cap cp cap cp ap ap
使用接口(多语言能力) 支持http和dns 客户端 http/grpc 客户端/http 客户端(java)
watch支持 全量/支持long polling 支持 支持long polling 不支持(client定期
fetch) 支持(服务端推送)
安全 acl/https acl https支持 - acl
spring cloud集成 支持 支持 支持 支持 支持
定期
定期心跳+TTL;支持自
refresh(http)+TTL
定义healthCheck
SOFARegistry
定期连接心跳 + 断链敏感
11. 挑战:数据规模增长(扩展能力)
12. 挑战:集群数增长(运维成本)
支付
商业化
私有云
开发
芝麻
商业化
公有云
线上
消金
} JOIN {
站点
国际...
测试
环境
网商
灰度
国际-
德国
保险
国际-
新加坡
金控子
站点...
预发
仿真
13. 挑战:业务 7*24 运维(可用性)
业务运维
14. 云原生:naming 挑战
应用实例数
快速增长
微服务/faas
拆分实例
支撑更大的规
模
应用实例生
命周期短 快速交付 autoscale
应用多语言
支持 ai/bff/小程
序 侵入性低
更精细的服
务路由 mesh流量精
细化运维 服务治理
k8s事实上
标准 •k8s-service
集群内通用服
务发现 •多集群部署
常态
更好的推送性
能
•和k8s
结合
15. SOFARegistry6.0 目标:面向效能
质量
运维
应急
功能测试 灰度 观测性
性能基线 发布效率 诊断
疲劳测试 运维系统
成本 小规模自
愈
最终一致 业务打扰
率 大规模快
速恢复
混沌测试
16. SOFARegistry6.0 目标:面向效能
架构
• 应用级服务发现
• 降数据规模
• 移除raft
• 节点无状态
• slot&&slotTable
• 增强数据片管控能力
• 优化数据通信性能
• 支撑更大规模
• 容灾备份集群
• 2分钟逃逸
• 跨版本容灾
质量效能
• SOFARegistryChaos自动化测试
• 功能回归
• 性能测试
• 疲劳测试
• 混沌测试
• 常规化线上故障攻防演练
运维效能
• nightly build
• 灰度环境以下自动发布
• 运维标准化
• 交付成本低
• 可观测
• 自愈
• 小规模应急自动化
17. SOFARegistry6.0 架构原则
meta 一致性 •解决强一致的最好方法是不要依赖强一致
•脑裂时 data 节点具备能力获取完整数据
推送正确的数据 •最终一致明确可预期,最终:时间延迟,
一致:数据完整性
横向扩展 •数据分片存储,避免单节点存全部数据的
约束
18. 数据最终一致性
19. Slot 调度
无损迁移
data灰度
20. 规模
地址列表
session:240 IP数1K~7.2K
data:50 包大小
250K~1.8M
client:10w+
21. 应用级-数据模型
22. 应用级-兼容性:平滑/遗留应用
双集群双订阅发布切换
兼容无法升级的遗留应用
23. 应用级-效果:数据下降 1 个数量级
24. SOFARegistryChaos:自动化测试
功能
观测性
Trace
•
•
•
• 基于k8s一键部署
横向扩展支持大规模压测
client编排:pub/sub/disconnect
故障编排
•
•
•
• 端到端推送延迟的分步
数据完整性:推少/推错
故障注入校验正确性/恢复时间
线上小流量部署预警
• 定位有问题的订阅端/发布端
• 异常期间各个client的状态以及操作历史
25. SOFARegistryChaos:观测性
26. SOFARegistryChaos:失败 case
27. 运维效能:nightly build
28. 运维效能:故障演练
29. 运维效能:定位诊断
30. 开源和共赢
一个人可以走得很快,但一群人可以走的更远
31.
32. 四年磨一剑:蚂蚁集团注册中心
SOFARegistry 的开发实践之路
向旭 / 李旭东
THANKS