本次分享VIPKID MQ平台(包括Kafka和RocketMQ)的演进历程。主要讲述通过Proxy来解决多语言客户端差异及实现自动化运维的实战经验,重点会分享在实战过程中遇到过哪些挑战及解决方案,如加了Proxy后怎样避免消息丢失、重复,保证顺序消息等,怎样保证Proxy层高可用,怎样做自动化智能化容灾,怎样增强MQ源生功能,后讲MQ平台后续展望及收益总结。
分享大纲:
1、背景介绍
2、MQ平台一期
2.1、主要features
Feature 1:提供Java版MQ客户端
Feature 2:提供RocketMQ和Kafka的管理平台
Feature 3:统一监控告警
2.2、存在问题
问题1:怎样提供多语言客户端
问题2:客户端升级需多业务端配合代价高
问题3:怎样统一Kafka版本
3、MQ平台二期
3.1、基于Proxy重构MQ平台的架构
3.2、加了Proxy后要多考虑的事
3.2.1、如何保证Kafka消息不丢
3.2.2、如何避免kafka消息重复
3.2.3、怎样保证顺序消息
3.2.4、Proxy层如何保证高可用
3.3、基于Proxy方案的功能扩展
扩展1、基于Proxy跨集群容灾自动化
扩展2、基于Proxy提供自动化迁移工具
优势3、基于Proxy增强MQ原生功能
4、MQ平台后续展望
5、MQ平台优势总结
2019年加入VIPKID,目前任架构专家、基础架构存储平台负责人,负责VPIKID存储平台架构设计与研发工作。曾就职于摩托罗拉、爱奇艺,10余年专注于高并发、高可用、分布式存储方向,发表过相关专利20余篇。目前负责VIPKID基础架构存储平台,包括Redis平台、Kafka平台、RocketMQ平台、 ElasticSearch搜索平台、数据库访问平台、对象存储平台等。
RAFT协议是现在使用广泛的分布式一致性协议,它降低了分布式存储设计开发的难度,在京东云内部及业界都有广泛的应用。京东云分布式存储ZBS的核心存储引擎就是基于RAFT协议研发的,具备高可用、高可靠的特性。在RAFT存储引擎之上构建了即时快照,备份/恢复,冷热数据分层等特性。
①即时快照:基于copy on write技术,快照瞬时生成,有新数据写入时,先将快照数据拷贝出来,再写入新数据;
②基于快照的备份技术可在不影响用户业务的情况下完整备份云盘数据。备份的云盘镜像可跨机房、跨地域使用;
③基于lazy read的镜像恢复技术可将用户备份的镜像快速恢复到云盘,快速恢复用户业务,降低故障恢复时间;
④冷热数据分层技术:可智能感知数据访问频率,将长时间不访问的冷数据移动到低成本的存储介质,访问频率高的热点数据提升到高性能SSD存储介质。在可接受的性能损失范围内,大幅降低成本。NBD客户端向计算侧导出通用的块设备,无缝兼容计算侧的架构。SPDK客户端向计算侧提供高性能方案。基于SPDK方案计算侧可向用户提供高性能云主机。
分享提纲:
1、ZBS总体架构;
2、基于RAFT的高可靠、可用的存储引擎;
3、快照及镜像备份、恢复技术;
4、冷热数据分层;
5、NBD客户端;
6、SPDK客户端。
京东云事业群云产品研发部 分布式存储架构师,ZBS数据面负责人。主导设计开发了快照特性,镜像备份、恢复特性,冷热数据分层特性。在加入京东前,在知名传统存储公司从事存储架构设计工作,主导了分布式RAID、快照、同步/异步镜像等特性的研发工作。
海量小文件的读写能力是衡量分布式存储系统的重要指标,在AI训练场景下尤其关键。WFS为提升海量小文件读写能力对存储层与元数据管理层做了大量优化,包括使用了两层存储模型以小化IO读取路径,数据落盘设计上尽可能采用顺序写代替随机写提升写性能。在元数据管理上采用纯内存方式存储,尽可能减少操作元数据时网络通讯的次数,同时为了保证数据一致性采用自研Paxos库,对数据定期持久化落地。为了避免磁盘IO繁忙带来的性能雪崩问题,加入了SSD读缓存系统。
存储层设计:
两层存储模型概述
存储路由更新
数据落盘顺序写设计
元数据管理层设计:
KV存储与纯内存存储比较
数据持久化与强一致性保障元数据路由与跨节点问题
SSD读缓存设计
2015年加入58同城,目前任架构师,分布式存储部门负责人,负责58集团内分布式KV存储,分布式KList存储,分布式对象存储,分布式存储系统等相关开发与设计工作。