当前位置: 首页 > 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…...

JavaSec-RCE

简介 RCE(Remote Code Execution),可以分为:命令注入(Command Injection)、代码注入(Code Injection) 代码注入 1.漏洞场景:Groovy代码注入 Groovy是一种基于JVM的动态语言,语法简洁,支持闭包、动态类型和Java互操作性&#xff0c…...

在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能

下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...

安宝特方案丨XRSOP人员作业标准化管理平台:AR智慧点检验收套件

在选煤厂、化工厂、钢铁厂等过程生产型企业,其生产设备的运行效率和非计划停机对工业制造效益有较大影响。 随着企业自动化和智能化建设的推进,需提前预防假检、错检、漏检,推动智慧生产运维系统数据的流动和现场赋能应用。同时,…...

Mybatis逆向工程,动态创建实体类、条件扩展类、Mapper接口、Mapper.xml映射文件

今天呢,博主的学习进度也是步入了Java Mybatis 框架,目前正在逐步杨帆旗航。 那么接下来就给大家出一期有关 Mybatis 逆向工程的教学,希望能对大家有所帮助,也特别欢迎大家指点不足之处,小生很乐意接受正确的建议&…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...

OkHttp 中实现断点续传 demo

在 OkHttp 中实现断点续传主要通过以下步骤完成,核心是利用 HTTP 协议的 Range 请求头指定下载范围: 实现原理 Range 请求头:向服务器请求文件的特定字节范围(如 Range: bytes1024-) 本地文件记录:保存已…...

OpenLayers 分屏对比(地图联动)

注:当前使用的是 ol 5.3.0 版本,天地图使用的key请到天地图官网申请,并替换为自己的key 地图分屏对比在WebGIS开发中是很常见的功能,和卷帘图层不一样的是,分屏对比是在各个地图中添加相同或者不同的图层进行对比查看。…...

dify打造数据可视化图表

一、概述 在日常工作和学习中,我们经常需要和数据打交道。无论是分析报告、项目展示,还是简单的数据洞察,一个清晰直观的图表,往往能胜过千言万语。 一款能让数据可视化变得超级简单的 MCP Server,由蚂蚁集团 AntV 团队…...

【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...

Python 包管理器 uv 介绍

Python 包管理器 uv 全面介绍 uv 是由 Astral(热门工具 Ruff 的开发者)推出的下一代高性能 Python 包管理器和构建工具,用 Rust 编写。它旨在解决传统工具(如 pip、virtualenv、pip-tools)的性能瓶颈,同时…...