GOTC 2023 圓滿落幕,字節(jié)跳動詳解多款開源項(xiàng)目

5 月 27 至 28 日,字節(jié)開源攜多個開源項(xiàng)目及相關(guān)技術(shù)實(shí)踐方案亮相 2023 全球開源技術(shù)峰會(Global Open-source Technology Conference,GOTC)。為期兩天的峰會上,來自字節(jié)跳動的多位開源布道師、工程師向大家講述了字節(jié)跳動開源的故事,以及相關(guān)的開源項(xiàng)目和實(shí)踐經(jīng)驗(yàn)。

字節(jié)跳動的開源之路,經(jīng)歷了從使用到參與,再到主動開源這三個階段。

Apache 軟件基金會董事、字節(jié)跳動首席開源布道師姜寧講述了字節(jié)跳動的開源之路。他提到,字節(jié)跳動在開源的不同階段關(guān)注的重點(diǎn)不一樣。比如在使用開源時,會面臨開源軟件供應(yīng)鏈風(fēng)險,包括安全風(fēng)險、運(yùn)維風(fēng)險、合規(guī)風(fēng)險,這就需要有對開源軟件有清晰的認(rèn)知。因此字節(jié)跳動做了開源合規(guī)治理相關(guān)的工作,包括基礎(chǔ)建設(shè)、合規(guī)治理、培訓(xùn)宣貫等。整體來說,為了在全階段都更好地?fù)肀ч_源,字節(jié)跳動相應(yīng)地開啟了開源合規(guī)治理、開源文化培養(yǎng)和教育、開源可持續(xù)戰(zhàn)略等方面的建設(shè)。

之后,字節(jié)跳動多位工程師帶來具體開源項(xiàng)目與實(shí)踐的相關(guān)分享,覆蓋 Rust、云原生、數(shù)據(jù)庫技術(shù)、AI 技術(shù)、安全實(shí)踐等多個熱點(diǎn)話題。

云原生理念下的技術(shù)實(shí)踐與分享

火山引擎資深云原生工程師、CloudWeGo Reviewer 胡文帶來了“基于 Kitex Proxyless 和 Istio 的云原生微服務(wù)實(shí)踐”主題分享。

CloudWeGo-Kitex 是一個支持多協(xié)議的 RPC 框架,字節(jié)內(nèi)部主要是 Thrift 協(xié)議,所以在 Thrift 協(xié)議深耕已久,做了大量優(yōu)化,Kitex 開源希望能幫助其他企業(yè)快速構(gòu)建微服務(wù),但使用 Kitex-gRPC 采用 Istio - Sidecar 解決方案存在上面說的問題,同時也希望使用 Thrift 協(xié)議的用戶能基于 Istio 實(shí)現(xiàn)服務(wù)治理,所以針對多協(xié)議,Kitex 支持了基于 Istio 的 Proxyless 模式。

Kitex 直接基于 xDS 協(xié)議對接 Istiod 控制面,無需再借助 sidecar 來實(shí)現(xiàn)與控制面交互,可以實(shí)現(xiàn) Proxyless 模式的方式納入到網(wǎng)格中統(tǒng)一管理。

胡文還分享了基于 Kitex Proxyless 落地全鏈路泳道的實(shí)踐設(shè)計。流量染色環(huán)節(jié),在網(wǎng)關(guān)層進(jìn)行流量染色,根據(jù)原始請求中的元數(shù)據(jù),來進(jìn)行一定規(guī)則(條件、比例)轉(zhuǎn)換成對應(yīng)的染色標(biāo)識;基準(zhǔn)泳道中,未被染色的流量會被路由到基準(zhǔn)泳道中;分支泳道中,被染色的流量會被路由到 reviews-v2 ->ratings-v2 的分支泳道中。

火山引擎資深云原生工程師劉晟麗帶來了“字節(jié)跳動基于 Kubernetes 的大規(guī)模集群聯(lián)邦技術(shù)實(shí)踐”主題分享。

隨著字節(jié)跳動內(nèi)部各業(yè)務(wù)系統(tǒng)云原生化的演進(jìn),k8s 集群數(shù)量和規(guī)模極速增長,集群維護(hù)成本不斷提高,同時數(shù)量眾多,形態(tài)各異的集群也為用戶選擇集群部署帶來認(rèn)知負(fù)擔(dān)。

字節(jié)跳動自 2015 年起發(fā)展云原生第一代基礎(chǔ)架構(gòu),自 2021 年起已進(jìn)入第三代架構(gòu)設(shè)計與搭建中。具體到集群聯(lián)邦技術(shù)方面,字節(jié)跳動 2019 年以 KubeFed 為基礎(chǔ)引入集群聯(lián)邦,但隨著生產(chǎn)環(huán)境的不斷變化,KubeFed 無法滿足新的要求。

因此在 2021 年,字節(jié)跳動為滿足多樣化負(fù)載接入、精細(xì)化調(diào)度需求、以及更高的業(yè)務(wù)穩(wěn)定性保障,提出的第二代聯(lián)邦系統(tǒng) KubeAdmiral。 KubeAdmiral 為用戶提供統(tǒng)一的服務(wù)部署入口,方便任務(wù)負(fù)載在多集群之間流轉(zhuǎn),為打造統(tǒng)一資源池,提高資源利用率奠定基礎(chǔ)。

數(shù)據(jù)庫技術(shù)、分布式訓(xùn)練框架、安全建設(shè)實(shí)踐

火山引擎分析型數(shù)據(jù)庫負(fù)責(zé)人陳星詳細(xì)以 ByConity 為例,講述了分析型數(shù)據(jù)庫技術(shù)創(chuàng)新與開放之路。

ByConity 的背景可以追溯到 2018 年,當(dāng)時字節(jié)跳動開始在內(nèi)部使用 ClickHouse,因?yàn)闃I(yè)務(wù)的發(fā)展,要服務(wù)于大量的用戶,數(shù)據(jù)規(guī)模變得越來越巨大,ClickHouse 已不能滿足需求。所以字節(jié)在 ClickHouse 架構(gòu)基礎(chǔ)上進(jìn)行了升級,于 2020 年在內(nèi)部啟動了 ByConity 項(xiàng)目,并于 2023 年 1 月發(fā)布 Beta 版本,5月底正式對外開源。

作為一個分布式的云原生 SQL 數(shù)倉引擎,ByConity 擅長交互式查詢和即席查詢,具有支持多表關(guān)聯(lián)復(fù)雜查詢、集群擴(kuò)容無感、離線批數(shù)據(jù)和實(shí)時數(shù)據(jù)流統(tǒng)一匯總等特點(diǎn)。其核心優(yōu)勢包括:高性能低成本、多種場景統(tǒng)一支持、生態(tài)友好。

字節(jié)跳動基礎(chǔ)架構(gòu)計算框架研發(fā)工程師徐合邦介紹了一款通用的分布式訓(xùn)練調(diào)度框架 Primus。

近些年來,機(jī)器學(xué)習(xí)科技已經(jīng)深植各應(yīng)用領(lǐng)域,并且成功帶來顯著的提升。面對與日俱增的訓(xùn)練資料和模型規(guī)模,為了滿足更高效率的模型訓(xùn)練,分布式訓(xùn)練的概念順應(yīng)而生。

作為一個通用的分布式訓(xùn)練調(diào)度框架,Primus 提供一個通用的介面橋接了分布式訓(xùn)練任務(wù)和物理計算資源,讓資料科學(xué)家可以專注與學(xué)習(xí)算法的設(shè)計,并且讓分散式訓(xùn)練任務(wù)可以運(yùn)行在不同種類的計算集群,例如 Kubernetes 和 YARN。于此基礎(chǔ)上,Primus 更提供了分布式訓(xùn)練任務(wù)所需的容錯能力以及資料調(diào)度能力,進(jìn)而更提升了分布式訓(xùn)練的易用性。

Elkeid 項(xiàng)目負(fù)責(zé)人、字節(jié)跳動主機(jī)安全負(fù)責(zé)人陳越分享了字節(jié)跳動技術(shù)團(tuán)隊在生產(chǎn)環(huán)境下多工作負(fù)載安全建設(shè)實(shí)踐。

企業(yè)生產(chǎn)環(huán)境工作負(fù)載隨著傳統(tǒng)的物理、虛擬機(jī)到后來的容器、容器集群的演變,其安全風(fēng)險也隨之變化。伴隨著復(fù)雜度提升,對安全能力的要求也越來越高,如:反入侵,威脅溯源與止損,風(fēng)險發(fā)現(xiàn)等。理想情況并不獨(dú)立的解決某一個 Workload 的風(fēng)險,而是將多種混合的 Workload 其視作一個整體來看。

Elkeid 解決方案通過統(tǒng)一代理、統(tǒng)一平臺的方式解決上述風(fēng)險問題了。主機(jī)安全,容器安全,RASP,阻斷于響應(yīng)能力,追溯能力通過插件的形式集成在一個Agent上,既可以通過宿主機(jī)部署保護(hù)宿主機(jī)與之上的容器;也可以云原生方式部署。并不是不同產(chǎn)品的拼接,而是原生的一套架構(gòu),帶來的優(yōu)勢便是各方信息都可以自然的關(guān)聯(lián)與組合;運(yùn)維運(yùn)營壓力也會由此降低。

用 Rust 構(gòu)建新一代工具

Rust 語言在性能、安全性、跨平臺和社區(qū)支持等方面具有很高的優(yōu)勢,被越來越多的開發(fā)者視為一種非常有潛力的編程語言。本次峰會,字節(jié)跳動分享了兩款基于 Rust 語言構(gòu)建的新一代工具。

Rspack 是一個基于 Rust 的高性能構(gòu)建引擎, 具備與 Webpack 生態(tài)系統(tǒng)的互操作性,可以從 Webpack 低成本的遷移,并提供更好的構(gòu)建性能。在處理具有復(fù)雜構(gòu)建配置的巨石應(yīng)用時,Rspack 可以提供 5~10 倍的編譯性能提升。

字節(jié)跳動前端工程師何相君詳細(xì)介紹了 Rspack 的技術(shù)選型目標(biāo)與實(shí)現(xiàn)策略,其目標(biāo)是盡可能保證與 Webpack API 以及插件的兼容,盡可能的提高構(gòu)建速度。實(shí)現(xiàn)策略則是按照 Webpack 原架構(gòu)進(jìn)行移植,改進(jìn)原本的算法以盡可能的并行化。

Rspack 用 Rust 實(shí)現(xiàn)核心部分,充分利用并發(fā)和 LTO 優(yōu)化。而之所以選擇 Rust 語言,是因?yàn)?Rust 性能優(yōu)秀,和 C、C++ 在一個等級;且 napi 支持良好,可以基于此更好地兼容 Webpack API,得益于 Rust 的宏支持,也可以少寫樣板代碼;Rust 作為 WebAssembly 的新特性,基本上都能很快得到支持,甚至可以看到 WASM proposal 落地后推著 Rust proposal 前進(jìn)的 issue;Rust 生態(tài)中 swc 提供豐富的 AST 操作 API,同時支持轉(zhuǎn)譯 JavaScript 到 ES5。

實(shí)踐證明,Rspack 可以解決許多問題,字節(jié)跳動前端工程師何庚坤介紹,Rspack 具備更快的速度,以及更靈活豐富的配置,不止覆蓋 Web 開發(fā)場景,還能夠應(yīng)對各種場景;強(qiáng)大可自定義配置的拆包能力等決定了產(chǎn)物的性能……

何庚坤還分享了 Rspack 未來的計劃,包括支持更多常用框架,如 Vue、Qwik 等;完善插件 API,兼容更多 Webpack 生態(tài);支持 Module Federation 模塊聯(lián)邦;支持 Lazy Compilation 懶編譯;支持 Persistent Cache 持久緩存;更多生產(chǎn)環(huán)境優(yōu)化策略;持續(xù)優(yōu)化構(gòu)建性能。

此外,字節(jié)跳動還帶來了 Rust RPC 框架背后相關(guān)技術(shù)的分享。

字節(jié)跳動服務(wù)框架研發(fā)工程師劉翼飛介紹了代碼生成工具 Pilota 的設(shè)計背景、原理,以及面臨的一些挑戰(zhàn)。Pilota 通過 IDL 生成 Rust 代碼,提供給 Volo 框架和用戶使用。而 Volo 則是字節(jié)跳動服務(wù)框架團(tuán)隊研發(fā)的高性能、可擴(kuò)展性強(qiáng) 的 Rust RPC 框架。

對于一個 Rust RPC 框架來說,根據(jù) IDL 做代碼生成是為了讓用戶更方便地使用框架。而生成代碼的質(zhì)量以及周邊能力都會對用戶的開發(fā)體驗(yàn)有著非常非常直接的影響。面對非常龐大的代碼生成量,就需要有更好地處理方式。所以字節(jié)跳動開發(fā)了 Pilota 框架,來為用戶生成良好的代碼。Pilota 在面對龐大 IDL 做了體驗(yàn)優(yōu)化,Thrift Parser 和 Protobuf Parser 只要轉(zhuǎn)換成 Pilota 自有的 AST 格式,即可兼容任意形式的 IDL。

除了在 GOTC 2023 會議上與大家見面的開源項(xiàng)目,字節(jié)跳動還開源了多款產(chǎn)品。姜寧表示,字節(jié)跳動看重參與開源的長期價值,對開源一直是開放、鼓勵的,希望與全球合作伙伴共同實(shí)現(xiàn)生態(tài)繁榮。

(免責(zé)聲明:本網(wǎng)站內(nèi)容主要來自原創(chuàng)、合作伙伴供稿和第三方自媒體作者投稿,凡在本網(wǎng)站出現(xiàn)的信息,均僅供參考。本網(wǎng)站將盡力確保所提供信息的準(zhǔn)確性及可靠性,但不保證有關(guān)資料的準(zhǔn)確性及可靠性,讀者在使用前請進(jìn)一步核實(shí),并對任何自主決定的行為負(fù)責(zé)。本網(wǎng)站對有關(guān)資料所引致的錯誤、不確或遺漏,概不負(fù)任何法律責(zé)任。
任何單位或個人認(rèn)為本網(wǎng)站中的網(wǎng)頁或鏈接內(nèi)容可能涉嫌侵犯其知識產(chǎn)權(quán)或存在不實(shí)內(nèi)容時,應(yīng)及時向本網(wǎng)站提出書面權(quán)利通知或不實(shí)情況說明,并提供身份證明、權(quán)屬證明及詳細(xì)侵權(quán)或不實(shí)情況證明。本網(wǎng)站在收到上述法律文件后,將會依法盡快聯(lián)系相關(guān)文章源頭核實(shí),溝通刪除相關(guān)內(nèi)容或斷開相關(guān)鏈接。 )