【開源之夏 2023】歡迎報名 SOFAStack 社群專案!

SOFAStack發表於2023-05-12

圖片

開源之夏是由“開源軟體供應鏈點亮計劃”發起並長期支援的一項暑期開源活動,旨在鼓勵在校學生積極參與開源軟體的開發維護,促進優秀開源軟體社群的蓬勃發展,培養和發掘更多優秀的開發者。

活動聯合國內外各大開源社群,針對重要開源軟體的開發與維護提供專案任務,並面向全球高校學生開放報名。

2023 年,SOFAStack 社群再次加入中國科學院軟體研究所的高校開源活動——“開源之夏 2023”,一共為大家準備了五個任務,涵蓋 SOFARPC、SOFAArk、SOFAJRaft 和 Layotto 等核心專案,涉及 Golang、Java、Kubernetes、Cloud Native、Distributed System 等多個領域。

SOFARPC 專案介紹

SOFARPC 是由螞蟻集團開源的一款 Java RPC 框架,具有高可擴充套件性、高效能和生產級特性。該框架旨在簡化應用之間的 RPC 呼叫,併為應用提供便捷透明、穩定高效的點對點遠端服務呼叫方案。為方便使用者和開發者進行功能擴充套件,SOFARPC 提供了豐富的模型抽象和可擴充套件介面,包括過濾器、路由、負載均衡等。

SOFAArk 專案介紹

SOFAArk 是一款基於 Java 實現的輕量級類隔離容器,由螞蟻集團開源貢獻。該容器主要提供類隔離和應用(模組)合併部署能力。SOFAArk 提供多種方式來支援多應用(模組)合併部署,包括基於命令列的管控、基於 API 的管控等。

SOFAJRaft 專案介紹

SOFAJRaft 是一個基於 RAFT 一致性演算法的生產級高效能 Java 實現,適用於高負載低延遲的場景,支援 MULTI-RAFT-GROUP。使用 SOFAJRaft 可專注於業務領域,由 SOFAJRaft 解決與 RAFT 相關的技術難題。並且 SOFAJRaft 易於使用,可以透過幾個示例快速掌握它。

Layotto 專案介紹

Layotto(/leɪˈɒtəʊ/) 是一款使用 Golang 開發的應用執行時, 旨在幫助開發人員快速構建雲原生應用,幫助應用和基礎設施解耦。它為應用提供了各種分散式能力,例如狀態管理、配置管理、事件釋出訂閱等,以簡化應用的開發。

活動規則

開源之夏官網:

https://summer-ospp.ac.cn/

各位同學可以自由選擇專案,與社群導師溝通實現方案並撰寫專案計劃書。被選中的學生將在社群導師指導下,按計劃完成開發工作,並將成果貢獻給社群。社群評估學生的完成度,主辦方根據評估結果發放資助金額給學生。

SOFAStack 社群專案

專案連結:https://summer-ospp.ac.cn/org/orgdetail/95a9e459-a200-4a26-bc0a-81074c2d89be?lang=zh

SOFARPC Java、網路通訊、RPC

專案社群導師:EvenLiu

mailto:evenljj@163.com

SOFARPC 支援 Stream 流式處理方式

專案編號:2395a0260

專案難度:進階/Advanced

Stream 方式是一種非同步的流式處理方式,可以在資料傳輸過程中逐個處理資料,避免一次性傳輸大量資料造成的效能問題。服務端 Stream 是指服務端在處理請求時,將資料分成多個部分逐個返回給客戶端的過程;客戶端 Stream 是指客戶端在請求伺服器時,將請求引數分成多個部分逐個傳送給伺服器的過程。Stream 方式可以讓我們在處理大量資料時更高效地使用資源,提高系統的效能和響應速度。SOFARPC 中需要 Triple、Bolt 協議支援 Stream 方式流式處理。

  • SOFARPC 中 Triple 協議支援 Stream 流式處理。
  • SOFARPC 中 Bolt 協議支援 Stream 流式處理。

SOFAArk Java、SOFAArk 原始碼

專案社群導師:衛恆

mailto:glmapper_2018@163.com

開發一個客戶端,支援 Biz 模組的熱部署和熱解除安裝,初步實現 Serverless 體驗

專案編號:2395a0267

專案難度:基礎/Basic

SOFAArk 從最初的一個類隔離框架,逐步演進為支援合併部署與熱部署的 “Serverless” 執行時框架,尤其在去年我們完成了 SOFAArk1.0 到 2.0 架構的演進。但是為了讓開發者真正享受 Serverless 的研發體驗,我們還需要建設一個客戶端框架,對接 SOFAArk 實現 Biz 模組的熱部署和熱解除安裝,並暴露 HTTP API 介面可以讓上游系統或者開發者直接使用。

  • 設計並開發一個新的 SDK(SOFALet),新的 SDK 也就是 SOFALet 暴露一組 HTTP 介面,底層呼叫 SOFAArk 原子能力實現模組的熱部署和熱解除安裝。SOFALet 未來還會有 Node.js 版,這一期先支援 Java 版也就是對接 SOFAArk。
  • 理解 SOFAArk 原始碼,尤其是關於 telnet 指令安裝和解除安裝模組的部分。

SOFAArk Go、K8s

專案社群導師:流鑠

mailto:xujinle300@126.com

開發一個 K8s Operator,編排客戶端 API 實現 Biz 模組的熱部署,初步達成 Serverless 研發體驗

專案編號:2395a0392

專案難度:基礎/Basic

為了讓開發者真正享受 Serverless 的研發體驗,我們需要先建設一個簡易的 K8s Operator 和 SOFA Module Deployment、SOFA Module ReplicaSet CRD,對接編排模組熱裝載和熱解除安裝的客戶端,實現模組秒級釋出的初步能力,讓開發者能初步體驗到 Serverless 的釋出運維能力。

  • 理解 SOFAArk 模組安裝和解除安裝部分的原始碼,並且熟悉 K8s CRD 和 Operator 體系的設計與開發。

SOFAJRaft Java、網路通訊、RPC

專案社群導師:劉源遠

mailto:gege87417376@qq.com

結合 NWR 實現 Flexible RAFT,用於自定義 Quorum 的大小

專案編號:2395a0390

專案難度:進階/Advanced

JRaft 是一個基於 RAFT 一致性演算法的生產級高效能 Java 實現,它執行過程分為兩個階段,即 Leader 選舉和日誌複製。在原始的 RAFT 演算法中,Leader 選舉和日誌複製都需要獲得多數派成員的支援。而 NWR 模型則可以在動態調整一致性強度的場景中使用,它需要滿足 W+R>N,以保證強一致性。JRaft 將 RAFT 和 NWR 結合起來,使得使用者可以根據不同的業務需求來動態調整 Quorum 的數量。例如,在一個寫多讀少的場景中,使用者可以將多數派的數量從 3 調整為 2,以降低達成共識的條件,從而提高寫請求的效率。同時,為了保證 RAFT 的正確性,寫 Quorum 的調整需要付出代價,即讀 Quorum 的數量也需要相應調整。JRaft 支援成員變更,因此使用者可以配置 (0,1] 範圍內的小數來計算 W 和 R 的具體值。透過使用 JRaft,使用者可以根據自己的業務需求來靈活地調整一致性強度,使得分散式系統在不同場景下都可以獲得最佳的效能和正確性。

  • 為 JRaft 實現自定義 Quorum,動態調節 Quorum 的引數,為自定義 Quorum 的場景增加 Jepsen Case。
  • 掌握 RAFT 演算法協商過程;基於 RAFT 設計 NWR 模型,編寫具體設計文件。

Layotto Go、Kubernetes、K8s

專案社群導師:劉訓灼

mailto:mixdeers@gmail.com

Layotto 支援自動/手動注入 Pod 部署

專案編號:2395a0359

專案難度:進階/Advanced

Kubernetes 是 CNCF 下容器資源編排的一個實施標準,Layotto 也擁抱 K8s 環境,在 Kubernetes 叢集中,常常以 Sidecar 方式執行。社群需提供方式,以便開發者 / 運維在 Kubernetes 環境中快速部署 Layotto。

  • 提供命令列工具,支援手動注入 Layotto 至 Pod 中;提供 Webhook 外掛,支援動態注入 Layotto 至 Pod 中;熟悉 Golang、熟悉 Cobra 編寫 Golang 命令列工具。
  • 瞭解 K8s 基本架構與原理,理解 Pod 生命週期;瞭解 K8s WebHook 機制;瞭解 Golang 模版化以及動態渲染模版相關知識。

申請資格

  • 本活動面向年滿 18 週歲在校學生。
  • 暑期即將畢業的學生,只要在申請時學生證處在有效期內,就可以提交申請。
  • 中國籍學生參與活動需提供身份證、學生證、教育部學籍線上驗證報告(學信網)或在讀證明。
  • 外籍學生參與活動需提供護照,同時提供錄取通知書、學生卡、在讀證明等檔案用於證明學生身份。

活動流程

圖片

相關文章