写点什么

IoTDB Raft 协议核心研发宋子阳成为 Ratis Committer:分布式 IoTDB 深度并创新运用 Raft 协议保障高可用

作者:Apache IoTDB
  • 2023-04-10
    北京
  • 本文字数:2416 字

    阅读完需:约 8 分钟

IoTDB Raft协议核心研发宋子阳成为Ratis Committer:分布式IoTDB深度并创新运用Raft协议保障高可用

社区成员宋子阳采访来啦! 


Apache IoTDB 的分布式版本当中支持了三种不同的共识协议算法,其中囊括了 Raft 协议。今天我们邀请到 IoTDB Raft 协议核心研发宋子阳进行深度采访,听听他讲述 IoTDB 如何高效运行 Raft 协议以及他如何接触到 Ratis 项目,最后成为 Ratis 社区 Committer 的经历吧~



宋子阳自我介绍:

我是宋子阳,目前是清华大学软件学院研究生一年级学生,本科毕业于复旦大学。我主要的研究方向是分布式共识和云原生数据库,同时我也是开源社区和开源精神的热爱者。


关于 Apache IoTDB

1.最开始你是怎么了解到 Apache IoTDB 这个项目的?

在本科阶段,我就对数据库、操作系统等基础软件产生了浓厚的兴趣。在大三保研时,我坚定了投身于数据库内核研发的理想,也借保研的机会了解到清华大学软件学院和 Apache IoTDB 工业时序数据库,在这个过程中我被 IoTDB 的技术领先性、性能优势和广泛的应用场景深深吸引,迫切地想成为其中的一份子,于是就加入到了 IoTDB 的发展迭代里来。


2.在 Apache IoTDB 中主要负责哪一部分的内容?

我在 Apache IoTDB 中主要负责高可用共识模块。当前的 Apache IoTDB 的分布式版本当中支持了三种不同的共识协议算法,其中囊括了 Raft 协议,不仅能够提供强一致性保障,同时可以保障集群内部元数据和时序数据的高可用性。在精心的设计和持续的优化下,IoTDB 在保证数据架构的高可用、高可靠的同时,以优越的吞吐性能和较低的时延损失获得了数据的强一致性。


3.在参与 IoTDB 项目建设的过程中,有哪些收获?

参与 IoTDB 项目建设对我来说最大的收获,是能够在真实的工业场景中,去构建、打磨、完善一个共识协议,收获全面的系统观、稳定观、性能观,也提高了自身的编码能力。此外,更加珍贵的是,在 IoTDB 社区中我结识到了许多志同道合的老师、同学、伙伴们,铸下了深厚的情谊,他们身上的闪光点值得我永远学习。


关于 Raft 协议

4.是怎么接触到 Ratis 项目的?你觉得与 IoTDB 项目之间有什么联动吗?


首先,我在 IoTDB 社区负责的内容主要是高可用共识模块。IoTDB 社区在囊括 Raft 协议在内的三种不同的共识协议算法基础上构建了强一致性共识协议框架。Raft 协议是基于 Ratis 社区研发的,我作为 IoTDB Raft 协议实现的研发之一,了解到 Ratis 是 Raft 协议的开源实现项目,因此也深度接触和了解了 Ratis 项目。


经过一年的努力,IoTDB 和 Ratis 两个社区已经形成了良好的互动。一方面,我们能够将 Hadoop 生态圈沉淀多年的极佳稳定性与性能经验引入 IoTDB 社区,并保障 Raft 协议在 IoTDB 的稳定、高效、深入运行;另一方面,IoTDB 针对通用的数据库负载对 Ratis 也进行了深度的优化,反馈贡献给 Ratis 社区,形成了 IoTDB 和 Ratis 社区之间的积极联动和正向循环。


5.对于 IoTDB 分布式使用 Raft 协议这一技术,有没有遇到什么困难?最后是怎么克服的?

IoTDB 使用 Raft 协议主要遇到了两个困难。首先,Raft 协议是基于 Ratis 研发的,为了使 IoTDB 对协议完全自主可控,我们需要深入了解 Ratis 协议的技术内核,把握 Raft 协议是如何实现分布式共识的。在越来越了解和熟练 Raft 协议后,我也成为了 Ratis 社区的 Committer,也说明 IoTDB 分布式中内置 Raft 协议是比较成熟和完善的。


此外,IoTDB 的时序场景对于 Raft 协议在极高吞吐量、大规模带宽传输等极端场景都带来了挑战。在社区的不懈努力和迭代优化后,我们现在能够在上述极端场景下依然保证系统的稳定性


6.是什么让你一直坚持参与研发 Raft 协议?它对于 IoTDB 分布式的核心贡献是什么?

责任、热爱和对技术突破的渴望让我一直坚持参与 Raft 协议的研发。


IoTDB 分布式版本能够实现对数据多副本存储的支持。多副本可以给分布式存储系统带来更高的可用性,在数据查询的时候,可以提高数据并行的计算能力。当然,多副本写入会比单副本写入要花费更多的写入资源,所以一个必然要解决的问题就是保持多个副本之间数据的一致性。内置 Raft 协议帮助 IoTDB 分布式做到了这一点


同时,IoTDB 分布式使用 Ratis 协议对共识层进行了实现,共识层可以分布在多个不同的 DataNode 上,然后共识组内部的 3 个成员通过共识层的接口,可以进行相互的连通,选举 Leader,同时也可以进行数据的同步。如果用一个比喻来形容,Raft 协议是 IoTDB 的“保险柜”,为 IoTDB 的数据提供高可用性的保障,内部使用 3 副本和一致性协议来保护用户写入 IoTDB 的所有数据和 IoTDB 内部自己的元数据。因此,用户可以放心将数据交给 IoTDB 管理,不再需要担心极端情况下因为断网、断电、宕机、磁盘损坏下的数据丢失。


关于开源社区

7.对于开源社区,有哪些新的认识和心得体会可以分享?

分享两个在开源社区的感动故事。当我刚加入 IoTDB 社区的时候,谭新宇学长在共识算法、代码能力和工程实践上给予了我非常细致的指导、批评,让我在各种方面都迅速成熟。后来在 Ratis 社区中,偶尔发现一直在和我交流的 Tsz-Wo 居然是 Hadoop 的首席工程师和 PMC,而他会非常认真地看我这个后辈的代码、详细给出改进意见,甚至是给我普及最基础的 Java 知识,那段时间是我代码能力提升最为快速的时期。


我想,这就是开源社区的魅力,开放、共享、包容、提携、合作和尊重,更可贵的是在不同的社区之间,这种开源的精神却是一致的。对我而言,开源社区是充满温暖、成长、归属感的地方。


未来规划

8.最后,说一说自己对未来的规划吧!

未来我会继续致力于 IoTDB 项目的高可用共识模块领域,保障 Raft 协议在 IoTDB 的稳定与运行,同时作为 Ratis 社区的 Committer ,希望可以促进 IoTDB 和 Ratis 社区之间的积极联动。未来我也将矢志不渝地继续追求开源梦想,在自己擅长的方面提供力量,为开源铸就独特而辉煌的下一篇章!


作为全球性开源项目,截至目前,Apache IoTDB 已拥有 247 名贡献者、3.1K Stars、831 Forks、8749 Commits。我们为大家提供了参与指南,欢迎越来越多的小伙伴助力 Apache IoTDB 项目的不断发展与前进,迈出加入 Apache IoTDB 社区的第一步!


用户头像

Apache IoTDB

关注

还未添加个人签名 2021-12-30 加入

海量时序数据管理的解决方案,一款高吞吐、高压缩、高可用、物联网原生的开源时序数据库。

评论

发布
暂无评论
IoTDB Raft协议核心研发宋子阳成为Ratis Committer:分布式IoTDB深度并创新运用Raft协议保障高可用_IoTDB_Apache IoTDB_InfoQ写作社区