当前位置: 首页 > news >正文

IoTDB Committer+Ratis PMC Member:“两全其美”的秘诀是?

IoTDB & Ratis 双向深耕!

还记得一年前我们采访过拥有 IoTDB 核心研发+ Ratis Committer “双重身份”的社区成员宋子阳吗?(点此阅读)

我们高兴地发现,一年后,他在两个项目都更进一步,已成为 Apache IoTDB Committer + Ratis PMC Member!

时隔一年的追踪采访,再来了解一下这位始终坚持、积极贡献的社区优秀同学的体会:

0fee9bdc4b217ae502477f1df3c42aa9.jpeg

宋子阳

大家好,我是宋子阳,目前是清华大学软件学院研究生二年级学生,主要感兴趣的方向是分布式系统和共识协议。我热爱开源社区,从 2021 年底就开始参与开源社区的贡献,到现在已经 3 年了。

关于 Apache IoTDB

还是先来简单说说你和 IoTDB 的缘分吧?

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

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

距离上次的采访也经过一年多了,说说这段时间里你在 IoTDB 的新建树和新收获吧?

在这段时间里,我开始逐渐跳出 Ratis 甚至是共识协议的范畴,开始以一种更高的、更全面、更系统的角度参与到 IoTDB 的贡献中。去年年初我参与到了 Ratis 和可观测性的集成中,感受到了可观测性对于系统内核的深远帮助。去年年末我参与到了 Region 迁移的设计,在保持功能性和稳定性的条件下继续打磨共识协议的 snapshot 传输能力。今年开始我参与到了负载均衡模块的设计。这些工作不但让我更加了解 IoTDB,也让我在一个大系统的视角里持续优化贡献共识协议,完成了 IoTDB-Ratis 社区的“飞轮效应”提升。万事开头难,但随着努力再努力,进步也就越来越快了。

是什么让你能一直坚持参与 Apache IoTDB 项目,最终成为 Committer 呢?

主要有三个原因:

社区成员们非常友好,无论是新手还是有经验的开发者,大家都乐于分享知识和经验,互相帮助。这种包容和支持的氛围促使我愿意长期投身于项目中。

同时,Apache IoTDB 项目为我提供了一个挑战自我、实现技术突破的平台。通过解决实际问题、参与复杂功能的开发,我不仅提升了自己的技术能力,还积累了宝贵的实践经验。

最后是责任感。积极参与项目的开发和维护工作,确保项目的质量和稳定性,开发出能用、好用、管用的软件是我们清华软院学子的追求。

之前采访时,你还是 Ratis Committer,现在也已经是 PMC Member 了,是如何完成的这一转变呢?

从 Committer 向 PMC Member 的转变,基于的是我们不断向 Ratis 贡献的 Patches,也体现了 Ratis 社区对我们的信任和支持。这段时间里,我主导了 Ratis 社区的部分决策,包括发版、Tickets、公告,Ratis 社区也为支持我们做了大量的工作,包括为我们的发版专门加班加点赶了许多PR。

在未来,两个社区会继续加深合作,我们会不断把我们在 IoT 领域的工作和优化点贡献给 Ratis,也让 Ratis 变成一个更加适合处理 IoT 领域数据的 Raft 共识协议。

关于开源社区

你觉得开源社区对 Apache IoTDB 的“加成”是?

开源社区通过广泛的传播和推广,让更多的潜在用户和贡献者了解到 Apache IoTDB。开放的贡献机制为全球开发者和用户提供了平等的参与机会,他们可以提交代码、撰写文档、报告问题和提出改进建议。社区成员因对技术和创新的共同追求而聚集,形成了一个协作网络,共同致力于优化和完善 IoTDB。通过快速响应用户反馈、修复问题、开发新功能和分享知识,开源社区不断推动 IoTDB 项目前进,使其成为一个更加优秀的时序数据库系统。

有没有给想要参与 Apache IoTDB 开源社区贡献的小伙伴一点小建议?

欢迎加入 Apache IoTDB 社区!作为新手,不要害怕提问,大家都是很耐心的人,愿意帮助你解决疑惑。社区提倡知识共享和合作,你的问题和想法都是宝贵的。可以从一些简单的 issue 开始,比如修复小 bug 或完善文档,这不仅能让你快速上手项目,还能逐步积累经验和信心。通过这些初步的贡献,你将熟悉项目结构和开发流程,为后续参与更复杂的任务打下基础。期待你的积极参与,让我们一起把 IoTDB 变得更好!

成为 Committer 的感言!

成为 Apache IoTDB 的 committer 是一段令人难忘的旅程。我深感荣幸,感谢社区给予的信任和支持。回顾这段历程,社区温暖的氛围、强烈的责任感以及对卓越的追求是我坚持不懈的动力源泉。每一次解决问题、每一次代码提交,都让我感受到技术进步带来的成就感和满足感。我见证了项目的成长,也从中收获了宝贵的经验和友谊。未来我会继续致力于 IoTDB 项目的高可用共识模块领域,在自己擅长的方面提供力量,为开源铸就独特而辉煌的下一篇章!

28751e43d0edaa624d1f142b8a462126.gif

e0613e05498a06f99fbc4bfe1e9bd4e9.jpeg

e7eee179a3304a173336e4bef67bc8c0.jpeg

e70a0e5cb0a9d43bc4ee46fb28a5d750.jpeg

ba72a63b3c0d0f4f681c83669471ef4d.gif

相关文章:

IoTDB Committer+Ratis PMC Member:“两全其美”的秘诀是?

IoTDB & Ratis 双向深耕! 还记得一年前我们采访过拥有 IoTDB 核心研发 Ratis Committer “双重身份”的社区成员宋子阳吗?(点此阅读) 我们高兴地发现,一年后,他在两个项目都更进一步,已成为…...

【链表】- 移除链表元素

1. 对应力扣题目连接 移除链表元素 2. 实现案例代码 public class RemoveLinkedListElements {public static void main(String[] args) {// 示例 1ListNode head1 new ListNode(1, new ListNode(2, new ListNode(6, new ListNode(3, new ListNode(4, new ListNode(5, new …...

云原生之使用Docker部署RabbitMQ消息中间件

云原生之使用Docker部署RabbitMQ消息中间件 一、RabbitMQ介绍1.1 RabbitMQ简介1.2 RabbitMQ特点1.3 RabbitMQ使用场景 二、检查Docker环境2.1 检查Docker版本2.2 检查操作系统版本2.3 检查Docker状态 三、下载RabbitMQ镜像四、部署RabbitMQ服务4.1创建挂载目录4.2 运行RabbitMQ…...

opengl箱子的显示

VS环境配置: /JMC /ifcOutput "Debug\" /GS /analyze- /W3 /Zc:wchar_t /I"D:\Template\glfwtemplate\glfwtemplate\assimp" /I"D:\Template\glfwtemplate\glfwtemplate\glm" /I"D:\Template\glfwtemplate\glfwtemplate\LearnOp…...

Oracle 视图、存储过程、函数、序列、索引、同义词、触发器

优质博文:IT-BLOG-CN 一、视图 从表中抽出的逻辑上相关的数据集合,视图是一种虚表,视图是建立在已有表的基础之上,视图赖以建立的这些表称为基表。向视图提供数据的是 SELECT语句,可以将视图理解为存储起来的SELECT语…...

网站被浏览器提示“不安全”的解决办法

在互联网时代,网站的安全性直接关系到用户体验和品牌形象。当用户访问网站时,如果浏览器出现“您与此网站之间建立的连接不安全”的警告,这不仅会吓跑潜在客户,还可能对网站的SEO排名造成等负面影响。 浏览器发出的“不安全”警告…...

typescript定义函数的传参、返回值

Render 函数中定义函数传参 interface List {id: number;name: string; }interface Result {data: List[]; //表示由 List 接口组成的数组 }function Render(result: Result) {result.data.forEach(value > {console.log(value);}); }let result {data: [{id: 1,name: 张三…...

GlimmerHMM安装与使用-生信工具24

GlimmerHMM 01 概述 GlimmerHMM是一种基于广义隐马尔科夫模型(GHMM)的新型基因预测工具。虽然该基因预测工具符合GHMM的总体数学框架,但它还结合了从GeneSplicer程序中改编的剪接位点模型。可变长度的特征状态(例如外显子、内含…...

Elasticsearch架构基本原理

Elasticsearch的架构原理可以详细分为以下几个方面进行介绍: 一、Elasticsearch基本概念 Elasticsearch(简称ES)是一个基于Lucene构建的开源、分布式、RESTful搜索和分析引擎。它支持全文搜索、结构化搜索、半结构化搜索、数据分析、地理位…...

STM32自己从零开始实操08:电机电路原理图

一、LC滤波电路 其实以下的滤波都可以叫低通滤波器。 1.1倒 “L” 型 LC 滤波电路 1.1.1定性分析 1.1.2仿真实验 电感:通低频阻高频的。仿真中高频信号通过电感,因为电感会阻止电流发生变化,故说阻止高频信号 电容:隔直通交。…...

无线物联网练习题

文章目录 选择填空简答大题 选择 不属于物联网感知技术的是(A) A:ZigBee B:红外传感器 C:FRID D:传感器 ZigBee是一种无线通信技术,虽然它常用于物联网中作为设备之间的通信手段,但它本身并不是一种感知技术 关于物联网于与互联网的区别的描述&#xff…...

Java的日期类常用方法

Java_Date 第一代日期类 获取当前时间 Date date new Date(); System.out.printf("当前时间" date); 格式化时间信息 SimpleDateFormat simpleDateFormat new SimpleDateFormat("yyyy-mm-dd hh:mm:ss E); System.out.printf("格式化后时间" si…...

数据库设计规范详解

一、为什么需要数据库设计 1、我们在设计数据表的时候,要考虑很多问题。比如: (1) 用户都需要什么数据?需要在数据表中保存哪些数据? (2) 如何保证数据表中数据的 正确性,当插入、删除、更新的时候该进行怎样的 约束检査 ?. (3) 如何降低数据表的 数据…...

Android12 MultiMedia框架之MediaExtractorService

上节学到setDataSource()时会创建各种Source,source用来读取音视频源文件,读取到之后需要demux出音、视频、字幕数据流,然后再送去解码。那么负责进行demux功能的media extractor模块是在什么时候阶段创建的?这里暂时不考虑APP创建…...

Chapter 8 Feedback

Chapter 8 Feedback 这一章我们介绍feedback 反馈运放的原理. 负反馈是模拟电路强有力的工具. 8.1 General Considerations 反馈系统如下图所示 Aolamp open-loop gain即开环增益. Aolxo/xi β \beta β 是 feedback factor, 注意方向. β x f x o \beta\frac{x_{f}}{x_{o…...

Administrators就最高了???system是什么??本地用户提权内网学习第三天 你知道uac是什么??

我们今天来说说本地用户提权的操作,我们在有webshell过后我们要进行进一步的提权操作,要不然对我们后期的内网渗透会有一些阻碍的操作。比如说我们使用mimikatz来进行抓取密码,就不能够成功。 Administrators与system的区别 我们来说说Admin…...

回溯 | Java | LeetCode 39, 40, 131 做题总结(未完)

Java Arrays.sort(数组) //排序 不讲究顺序的解答,都可以考虑一下排序是否可行。 39. 组合总和 错误解答 在写的时候需要注意,sum - candidates[i];很重要,也是回溯的一部分。 解答重复了。是因为回溯的for循环理解错了。 class Solutio…...

Linux系统上部署Whisper。

Whisper是一个开源的自动语音识别(ASR)模型,最初由OpenAI发布。要在本地Linux系统上部署Whisper,你可以按照以下步骤进行: 1. 创建虚拟环境 为了避免依赖冲突,建议在虚拟环境中进行部署。创建并激活一个新…...

申请一张含100个域名的证书-免费SSL证书

挑战一下,申请一张包含100个域名的证书 首先,我们访问来此加密网站,进入登录页面,输入我的账号密码。 登录后,咱们就可以开始申请证书,首先说一下,咱账号是SVIP哦,只有SVIP才可以申…...

爬数据是什么意思?

爬数据的意思是:通过网络爬虫程序来获取需要的网站上的内容信息,比如文字、视频、图片等数据。网络爬虫(网页蜘蛛)是一种按照一定的规则,自动的抓取万维网信息的程序或者脚本。 学习一些爬数据的知识有什么用呢&#x…...

【东枫科技】KrakenSDR 天线阵列设置

标准测向需要五根相同的全向天线。您可以折衷使用更少的天线,但为了获得最佳性能,我们建议使用全部五根天线。这些天线通常是磁铁安装的鞭状天线,或偶极子天线。我们建议始终使用均匀圆形阵列 (UCA) 天线,因为它可以确定来自各个方…...

自动化立体仓库WCS的设计与实现

导语 大家好,我是社长,老K。专注分享智能制造和智能仓储物流等内容。欢迎大家使用我们的仓储物流技术AI智能体。 新书《智能物流系统构成与技术实践》 新书《智能仓储项目出海-英语手册,必备!》 完整版文件和更多学习资料&#xf…...

8.linux文件与文件夹内处理命令cp,mv,rm

cp 可以用于复制文件/文件夹 cp 【-r】 参数1 参数2 -r,用于复制文件夹使用,表示递归 mv 用于移动文件/文件夹,没有选项 参数2:表示移动去的地方,如果参数2不存在,则进行改名,保证目标存在…...

【ISP算法精粹】动手实战:用 Python 实现 Bayer 图像的黑电平校正

在数字成像领域,图像信号处理器(ISP)如同幕后英雄,默默将传感器捕获的原始数据转化为精美的图像。而黑电平校正,作为ISP预处理流程中的关键一环,直接影响着最终图像的质量。今天,我们就通过Pyth…...

Java垃圾回收算法及GC触发条件

一、引言 在Java编程语言的发展历程中,内存管理一直是其核心特性之一。与C/C等需要手动管理内存的语言不同,Java通过自动垃圾回收(Garbage Collection,简称GC)机制,极大地减轻了开发人员的负担&#xff0c…...

JavaSE:面向对象进阶之内部类(Inner Class)

JavaSE 面向对象进阶之内部类(Inner Class) 一、内部类的核心概念 内部类是定义在另一个类内部的类,它与外部类存在紧密的逻辑关联,主要作用: 封装细节:隐藏实现细节,对外提供简洁接口。访问…...

2025年渗透测试面试题总结-匿名[校招]安全工程师(甲方)(题目+回答)

安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 匿名[校招]安全工程师(甲方) 1. 介绍自己熟悉的渗透领域 2. 编程语言与开发能力 3. 实习工作内容与流程 …...

算法学习--持续更新

算法 2025年5月24日 完成:快速排序、快速排序基数优化、尾递归优化 快排 public class QuickSort {public void sort(int[] nums, int left, int right) {if(left>right){return;}int partiton quickSort(nums,left,right);sort(nums,left,partiton-1);sort(nu…...

HackMyVM-Teacher

信息搜集 主机发现 ┌──(kali㉿kali)-[~] └─$ nmap -sn 192.168.43.0/24 Starting Nmap 7.95 ( https://nmap.org ) at 2025-06-01 01:02 EDT Nmap scan report for 192.168.43.1 Host is up (0.0084s latency). MAC Address: C6:45:66:05:91:88 (Unknow…...

鸿蒙OSUniApp集成WebAssembly实现高性能计算:从入门到实践#三方框架 #Uniapp

UniApp集成WebAssembly实现高性能计算:从入门到实践 引言 在移动应用开发领域,性能始终是一个永恒的话题。随着计算需求的不断增加,特别是在图像处理、数据分析等领域,如何在跨平台应用中实现高性能计算成为了一个重要课题。本文…...