-
Notifications
You must be signed in to change notification settings - Fork 3.6k
Open Source Promotion Plan Summer 2020 Apache Pulsar Tasks
This page contains the tasks for program https://isrc.iscas.ac.cn/summer2020
This program is hosted by ISCAS(Institute of Software Chinese Academy of Sciences) and openEuler community. It is very similar with Google Summer of Code. This year(2020) is their first time to host this event. Apache Pulsar has been selected as one program project.
Program home page, https://isrc.iscas.ac.cn/summer2020/#/
-
Project Name: Apache Pulsar
-
Website: http://pulsar.apache.org
-
Project Introduction:
Apache Pulsar is a cloud-native, distributed messaging and streaming platform that manages hundreds of billions of events per day. Pulsar was originally developed and deployed inside Yahoo as the consolidated messaging platform connecting critical Yahoo applications such as Yahoo Finance, Yahoo Mail, and Flickr, to data. Pulsar was contributed to open source by Yahoo in 2016 and became a top-level Apache Software Foundation project in 2018. Apache Pulsar has been used in a lot of companies: https://pulsar.apache.org/en/powered-by/
-
Tags: Distributed system, messaging system, streaming platform, Big Data, Infrastructure.
- Description: Recently community contributed .NET/C# client library for Apache Pulsar. But lack of some of the features in Pulsar main repo. This task is to catch up the missing features in .NET/C# client.
- Level: Middle
- Mentor: Jia Zhai (翟佳), email: [email protected]
- Requirements: familiar with C# language.
- OutPut:
- complete related features catch up.
- Add unit test for each feature.
- PRs get reviewed and merged into repo.
- Related Repo: https://github.com/apache/pulsar-dotpulsar
- Description: Schema is widely used in data storage systems and Apache Pulsar uses Apache Avro to manage schemas such as schema definition, evolution, and data encoding. Currently, schemas are stored for each topic. In the scenario where the same schema is used for different topics, we store redundant schemas. This task is aimed to support the same schema that can be reused between different topics, make schema independent from the topic. And while being compatible with the existing architecture.
- Level: Middle
- Mentor: Penghui Li(李鹏辉), email: [email protected]
- Requirements: familiar with Java language.
- Output:
- complete the feature
- Add unit test for the feature
- Add compatibility test
- PRs get reviewed and merged into repo.
- Description: Compacted topic compact the history version message of the same message key. This is more like a row update in the database. Pulsar SQL can query data and analyze data from Pulsar topics. Currently, Pulsar SQL can't read data from the compacted topic, this task is to support reading data from the compacted topics in Pulsar SQL.
- Level: Middle
- Mentor: Ran Gao(高冉), email: [email protected]
- Requirements: familiar with Java language.
- Output:
- complete the feature
- Add unit test for the feature
- PRs get reviewed and merged into repo.
- Description: Recently community contributed go client library for Apache Pulsar. But lack of some of the features in Pulsar main repo. This task is to catch up the missing features in go client.
- Level: Middle
- Mentor: Xiaolong Ran (冉小龙), email: [email protected]
- Requirements: familiar with go language.
- OutPut:
- complete related features catch up.
- Support key-based batcher for key_shared (https://github.com/apache/pulsar-client-go/issues/172)
- Support multi pulsar cluster addresses (https://github.com/apache/pulsar-client-go/issues/177)
- Check max message size in go client (https://github.com/apache/pulsar-client-go/issues/240)
- Support schema for go client
- Add unit test for each feature.
- PRs get reviewed and merged into repo.
- complete related features catch up.
- Related Repo: https://github.com/apache/pulsar-client-go
今年,中科院软件所与华为 openEuler 项目共同举办了 “开源软件供应链点亮计划——暑期2020” 项目。该项目与 Google Summer of Code 形式类似:开源社区提供项目需求并提供导师(mentor),在校学生利用暑期时间进行开发,主办方为顺利完成的项目提供一定额度的奖金。无论 GSoC 还是这次的“点亮计划”,都是一种非常好的开源实践范式,能够有效地增进高校学生对开源的理解、增加与真实社区的接触,并积累宝贵的经验。
https://isrc.iscas.ac.cn/summer2020/#/
- 项目名称: Apache Puslar
- Apache Pulsar 项目官网: http://pulsar.apache.org
- Apache Pulsar 简介: Apache Pulsar 是云原生的下一代发布订阅消息系统和流数据平台。Pulsar 用于解决现有开源消息系统的不足,助力 Yahoo 的主要应用,如 Yahoo Mail、Yahoo Finance、Yahoo Sports、Flickr、Gemini 广告平台和 Yahoo 的分布式键值存储系统 Sherpa。Pulsar 于 2016 年底开源,目前是 Apache 软件基金会的顶级项目。
- 项目标题:丰富 Pulsar .NET 客户端相关功能
- 项目描述:Pulsar .NET/C# 客户端是近期刚刚捐献给 Apache Pulsar 的一个新项目。现在 Pulsar .NET 客户端 已经具备了基础的 Pub/Sub 功能,但是缺少其他一些Java Client 具备的高级的功能。这个项目参与者可以和导师协商感兴趣的功能,理解现有的 Java 客户端的高级功能,并在 .NET 的client 端中进行相关的实现。这个项目为参与者提供消息系统的高级功能的深入理解。
- 项目难度: 中
- 项目导师: jiazhai (翟佳), email: [email protected]
- 项目产出要求:
- 完成相关功能的实现。
- 完成单元测试和集成测试。
- 完成 PR 的发布,解决社区的 Review Comments,并合并到 Apache 代码库中。
- 项目技能要求:
- .NET/C#
- 相关开源软件仓库列表: https://github.com/apache/pulsar-dotpulsar
- 项目标题:独立与 Topic 外的 Schema 管理
- 项目描述:Schema 广泛应用在数据存储系统中。Apache Pulsar 使用 Apache Avro 进行Schema定义,兼容性检查,数据序列化反序列化等。当前的实现 Schema 和 Topic 具有绑定关系,同一个 Schema 无法被不同的 Topic 重复使用,因此我们需要存储更多冗余的 Schema。这个任务主要的目的是为了将 Schema 从 Topic 中独立出来从而能够支持 Schema 的复用。并且能够和已有的机制保持兼容。
- 项目难度: 中
- 项目导师: Penghui Li(李鹏辉), email: [email protected]
- 项目产出要求:
- 完成功能的实现。
- 完成单元测试和集成测试。
- 完成兼容性测试
- 完成 PR 的发布,解决社区的 Review Comments,并合并到 Apache 代码库中。
- 项目技能要求:
- 熟悉使用 Java
- 项目标题:Pulsar SQL 读取 Compacted Topic 中的消息
- 项目描述:Compacted Topic 会根据消息的 key 不断的进行merge为每个 key 保留最新的消息,这很像更新数据库中的一行数据,更新后就只能读到新的消息。Pulsar SQL 可以从 Topic 中读取消息并进行分析。当前 Pulsar SQL 并不支持读取 Compacted Topic 中的消息(读取最新版本消息的方式),这个任务主要是支持 Pulsar SQL 能够读取以读取最新版本消息的方式读取 Compacted Topic 中的数据。
- 项目难度: 中
- 项目导师: Ran Gao(高冉), email: [email protected]
- 项目产出要求:
- 完成功能的实现。
- 完成单元测试和集成测试。
- 完成 PR 的发布,解决社区的 Review Comments,并合并到 Apache 代码库中。
- 项目技能要求:
- 熟悉使用 Java
-
项目标题:完善 Apache Pulsar Go client 的功能
-
项目描述:pulsar-client-go 是一个使用 Go 语言编写的 Go Client 库,旨在替换原来的 CGO client,从而更好地支持 Pulsar在 Go 社区的应用和集成 。
-
项目难度:
- 为 Key_shared 的订阅类型支持 Key_base 的batch形式 (中)
- 支持 schema 相关的功能(难)
- 在 client 支持配置多个服务器地址(中)
- 在 Go Client 中检查消息的大小(中)
-
项目社区导师:冉小龙(@wolf4j)
-
项目导师联系方式:[email protected]
-
项目产出要求:
- 实现对应的功能
- 对该功能进行单元测试,必要时,为其添加集成测试
- 该功能相关的文档描述
-
项目技术要求:
- 熟悉 go 语言
-
相关的开源软件仓库列表: