京东开源RaftKeeper性能超越ZooKeeper!

news/2024/7/10 20:58:36 标签: 开源, zookeeper, RaftKeeper, 分布式

一、背景介绍

成百上千台服务器组成的分布式系统中,服务器故障或网络抖动会随时发生,有时会导致严重的系统崩溃,为解决如上问题,雅虎开源了ZooKeeper分布式协调服务并在2010年成为Apache顶级项目,是Hadoop、HBase和ClickHouse的关键组件。

在ClickHouse应用ZooKeeper的场景中,因无法突破高吞吐写入和低延时数据复制的瓶颈,京东零售智能平台部OLAP团队基于ClickHouse研发RaftKeeper(采用Raft协议C++实现的分布式共识服务),为了便利行业伙伴对新技术的应用,现已面向社区实现全面开源,诚邀大家体验新技术!

二、技术架构

RaftKeeper基于Raft协议,提供顺序一致性保证,同时保证session内严格的读写顺序性,即:同一个session内的请求的响应顺序严格有序。RaftKeeper数据常驻内存,提供了snapshot + operation log的数据持久化能力;执行框架上采用了流水线和批量执行的方式,极大提升系统吞吐量。

图1:RaftKeeper架构

三、核心优势

1、高性能RaftKeeper提供2倍以上的吞吐量和容量,突破了分布式系统协调服务的处理能力限制,延迟时间减半,请求更加平稳,资源消耗更低,在性能要求更高的场景中表现更优异。参考:Benchmark(https://github.com/JDRaftKeeper/RaftKeeper/blob/master/benchmark%2FBenchmark.md)。

图2:RaftKeeper性能测试

2、高可用:提供5个9的可用性,杜绝单点故障影响,保障数据写入后永不丢失,支持跨机房数据协调。

3、全面兼容ZooKeeper:兼容ZooKeeper的各类客户端、可视化工具和监控工具,提供数据转换工具可以将Zookeeper的数据转换成RaftKeeper存储格式,实现ZooKeeper无感切换。

四、优化路径

RaftKeeper是一个分布式服务,需要保证日志在多个节点间的顺序性,因此需要串行化处理,传统的并行化性能优化的方式并不完全适用。

Raft论文中提到性能优化的主要手段是批量执行和流水线执行,在RaftKeeper的开发实践中,我们也着重在这两方面进行了大量优化。

在日志和状态机模块中,针对频繁访问的热Log数据,根据Log顺序性特点,我们设计了环形缓存数组提供高速读取。针对状态机中的哈希表,为了避免扩容带来的卡顿,我们设计了分段哈希表的数据结构,让服务更加平稳,可以存储更多的ZNode。其他如读写IO、多线程锁粒度层面也做了大量优化。

最后,也得益于eBay优秀开源框架NuRaft和ClickHouse的高性能基础类库,才让RaftKeeper拥有强悍的性能。

五、应用场景

RaftKeeper已在京东零售多个场景中长时间大规模应用,在多次大促中验证技术可靠性。

ClickHouse场景:突破了元数据管理的瓶颈,大幅缩短了如刷岗等海量导数的时间,可以部署更大规模的集群避免小集群重复存储问题,同时也支持异地跨机房双活方案;

HBase场景:支持30万客户端同时连接,更低更平稳的延时提供了更快更稳定的服务。

同时RaftKeeper支持更多场景:集群管理、节点协调、配置中心、命名服务等。

六、项目地址

联系我们:jdolap_staff@jd.com

项目地址:https://github.com/JDRaftKeeper/RaftKeeper

欢迎大家体验使用并给予宝贵建议。


http://www.niftyadmin.cn/n/231983.html

相关文章

面试热点1

# 集合初始化 collection集合(单列) List集合: 特点:.... ArrayList: 创建的时候长度是0,第一次添加元素的时候创建长度为10的数组,当添加第11个元素的时候扩容原来的1.5倍,扩容方式是创建长度为15的数组,将原来的数组中的数据复制过去,然后将指针指向新数组的地址,加载因子为1…

2023年新手如何选择云服务器配置来部署自己的网站?

现在做网站的人越来越少了,没有以前那种百万网站站长的势头。但是,不论个人站长还是企业,只要网上开展业务其实都会需要自己网站或小程序、APP等平台。如今,很少有人使用虚拟主机,但是独立服务器成本高,一般…

互联网大厂纷纷布局AI为哪般?如何借助chatGPT提升网络营销工作效率?

一石激起千层浪。 ChatGPT上线后其强大的语言理解和生成能力惊艳了整个互联网,国内互联网巨头紧跟推出了各自的同类产品。如百度推出文心一言,阿里推出通义千问,京东推出ChatJD,各路技术大佬纷纷投身打造中国版chatGPT。 ChatGPT是…

浅谈兼容性测试

兼容性测试的概念 兼容性测试是一种软件测试,用于确保构建的系统/应用程序/网站与其他各种对象(如其他网络浏览器、硬件平台、用户、操作系统等)的兼容性。这种类型的测试有助于了解产品在特定环境中的表现。 为了方便理解,可以…

国内的网络攻击溯源专利调查

○ The invention relates to an attack tracing method and device 攻击源追踪方法首先获得目标终端的流程数据、网络数据和文件数据,然后将网络相互关联,共获得3次相关数据,制作相关保时捷链数据。 该技术是将相关过程链数据储存在数据库中…

Hudi集成Flink-写入方式

文章目录一、CDC 入湖1.1、[开启binlog](https://blog.csdn.net/wuxintdrh/article/details/130142601)1.2、创建测试表1.2.1、创建mysql表1.2.2、将 binlog 日志 写入 kafka1、使用 mysql-cdc 监听 binlog2、kafka 作为 sink表3、写入sink 表1.2.3、将 kakfa 数据写入hudi1、k…

ERP系统应用场景,API接口接入

ERP订单管理系统能为企业带来什么 1、ERP订单管理系统可以对工厂物料采购的时间进行提示,根据产品目前的库存情况来进行确定,并比较物料采购时所需要支付的费用是多少,什么时候采购价格相对更加便宜。 2、在产品的生产方面,涉及…

基于Python机器学习、深度学习技术提升气象、海洋、水文领域实践应用

Python是功能强大、免费、开源,实现面向对象的编程语言,能够在不同操作系统和平台使用,简洁的语法和解释性语言使其成为理想的脚本语言。除了标准库,还有丰富的第三方库,Python在数据处理、科学计算、数学建模、数据挖…