Ozone Multi-Raft机制对于更大throughput处理量的支持

本文探讨了Ozone如何通过Apache Ratis的Multi-Raft支持实现Pipeline节点复用,从而提升集群的Container操作吞吐量。在Multi-Raft模式下,节点可以属于多个Pipeline,增加了Pipeline的并发处理能力,减少了因节点故障导致的Pipeline重建开销。同时,Ozone引入了Pipeline数量的限制策略以避免过度负载。此外,还实现了Pipeline级别的rack awareness以优化数据分布。
摘要由CSDN通过智能技术生成

前言


在前面介绍Ozone文章内容中,笔者多次提及Ozone使用的是Raft一致性协议来做副本间的数据一致性的。Ozone使用的是Raft的Java实现库Apache Ratis实现的,在早期Apache Ratis实现里,它需要传入一个Pipeline节点作为命令操作的对象。并且每个Pipeline之间是不能带重复节点。简单来说,这些Pipeline之间是不交叉的。我们可以理解早期Ozone这种Raft的使用是单一的Raft。每个独立Pipeline作为一个Raft Group,集群总节点数的多少直接决定了Pipeline的最大数量,进而决定整个集群Container操作的throughput。单一独享节点的Raft方式的问题在于它没有更好地利用Datanode的节点的资源。倘若一个节点能够被多个Pipeline组所复用,无疑将会提升SCM Pipeline的总数,进而提升Container的请求处理量。Apache Ratis在RATIS-91: Add multi-raft support中实现了Multi-Raft的支持,Ozone基于此改进同时也同时在做Ozone的Multi-Raft的实现,即Pipeline交叉复用Datanode的实现。本文笔者就来讲述讲述Ozone对此的改进实现。

Multi-Raft的支持到Ozone多Pipeline的节点复用支持


有些同学可能还没太理解上下文的关联,从Multi-Raft的支持如何会演变到多Ozone Pipeline的多节点复用呢?

这里的过程是这样的:
Ozone内部基于Raft协议做一致性的实现,使用的

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值