自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

字節(jié)跳動(dòng)如何從0到1打造一個(gè)開源項(xiàng)目?

開源
開源僅僅靠工程師的個(gè)人興趣驅(qū)動(dòng)是不夠的,還需要引入公司級(jí)的策略、規(guī)范與流程機(jī)制,這也是字節(jié)跳動(dòng)開源委員會(huì)首先要做的工作。

??想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問:??

??51CTO 開源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com??

像很多公司一樣,字節(jié)跳動(dòng)接觸開源也有一個(gè)從 0 到 1、由淺入深的過程,大體經(jīng)歷三個(gè)階段:

第一階段,使用開源。 為了推動(dòng)業(yè)務(wù)更快發(fā)展,如果已經(jīng)有比較好的、比較成熟的開源技術(shù)和工具,我們拿過來使用。

其實(shí)在字節(jié)跳動(dòng)業(yè)務(wù)發(fā)展的早期,在我們剛剛構(gòu)建我們自身的技術(shù)中臺(tái)和基礎(chǔ)架構(gòu)的時(shí)候,我們就大量采用了公有云,并且在公有云之上廣泛采用相關(guān)的開源技術(shù)和開源中間件,來快速打造我們自身的技術(shù)中臺(tái)。技術(shù)中臺(tái)也推動(dòng)了字節(jié)跳動(dòng)包括抖音、頭條等業(yè)務(wù)的發(fā)展。

第二階段,參與開源。隨著我們開源用得越來越深,在自身業(yè)務(wù)場景下,我們還會(huì)做很多的創(chuàng)新,包括對(duì)原有的開源項(xiàng)目會(huì)做技術(shù)的優(yōu)化。第二個(gè)階段我們也會(huì)把我們所產(chǎn)生成果反哺到社區(qū)里,與社區(qū)同學(xué)一起進(jìn)行經(jīng)驗(yàn)共享。

第三階段,主動(dòng)開源。 當(dāng)這樣的積累、經(jīng)驗(yàn)優(yōu)化多了以后,甚至我們會(huì)形成自己的完整項(xiàng)目。這就到了第三個(gè)階段,我們會(huì)開源一些完整的、體系化的項(xiàng)目回饋到社區(qū)。

講到主動(dòng)開源,我這里也做了一個(gè)統(tǒng)計(jì)。大概從 2015 年我們開源 Rcproxy 項(xiàng)目開始,我們一直就在開源的層面不斷地去提出我們自己的開源項(xiàng)目。

這幾年大家從統(tǒng)計(jì)數(shù)據(jù)可以看到,我們總共開源了超過 100 個(gè)項(xiàng)目,當(dāng)然這些項(xiàng)目我們也做了嚴(yán)格的分類。

比如常規(guī)項(xiàng)目,所謂常規(guī)項(xiàng)目就是端對(duì)端提供一個(gè)完整的場景化解決方案,或者是提供一個(gè)完整的功能閉環(huán),這是我們的主體項(xiàng)目。

除了常規(guī)項(xiàng)目以外,我們也會(huì)輔助地去開源一些相關(guān)的 demo、CLI 或者 SDK 工具,這些是輔助的開源項(xiàng)目。

只看常規(guī)項(xiàng)目的話,過去字節(jié)跳動(dòng)開源了超過 50 個(gè)主動(dòng)開源項(xiàng)目,其中代表項(xiàng)目有前端的 Web 框架 Modern.js,云原生領(lǐng)域的中間件集合 CloudWeGo,以及在機(jī)器學(xué)習(xí)領(lǐng)域開源的高性能分布式訓(xùn)練框架 BytePS、聯(lián)邦學(xué)習(xí)平臺(tái) FedLearner。

如果從數(shù)量上看,常規(guī)項(xiàng)目里排名第一的是基礎(chǔ)架構(gòu)相關(guān)的開源項(xiàng)目,除此以外,是和 AI、算法與平臺(tái)相關(guān)的開源項(xiàng)目,以及和前端、音視頻相關(guān)的開源項(xiàng)目。

1、開源委員會(huì)的責(zé)任和工作范疇

從 2015 年到現(xiàn)在,絕大多數(shù)開源項(xiàng)目由我們工程師的個(gè)人興趣驅(qū)動(dòng)。

這雖然打造了一種很好的開源文化,但過程中其實(shí)也遇到了一些問題,比如規(guī)范性問題,比如前一段時(shí)間引發(fā)的所謂抄襲風(fēng)波。

這使我們意識(shí)到,開源僅僅靠工程師的個(gè)人興趣驅(qū)動(dòng)是不夠的,還需要引入公司級(jí)的策略、規(guī)范與流程機(jī)制,這也是字節(jié)跳動(dòng)開源委員會(huì)首先要做的工作。

此外,當(dāng)公司越來越大,工程師投身開源的時(shí)候,需要合理分配精力和資源到更重要的戰(zhàn)略型項(xiàng)目上,這也是我們成立開源委員會(huì)的另外一個(gè)初衷。

當(dāng)然,開源委員會(huì)還要推進(jìn)各個(gè)公司、組織、社區(qū)在開源領(lǐng)域建立更好的合作關(guān)系。

從確定要成立開源委員會(huì)到開源委員會(huì)正式成立,期間我們用了半年左右時(shí)間來完成前期準(zhǔn)備工作。

開源委員會(huì)成立以后,我們面臨的第一個(gè)問題是什么樣的項(xiàng)目適合開源?

我們的標(biāo)準(zhǔn)是:

  • 具備普適性
  • 為開發(fā)者提供便利
  • 助力社區(qū)/行業(yè)形成統(tǒng)一標(biāo)準(zhǔn)
  • 具備技術(shù)領(lǐng)先優(yōu)勢(shì),不重造輪子,避免 KPI 工程

項(xiàng)目開源出去以后,我們也參考 CNCF、云原生技術(shù)委員會(huì)對(duì)項(xiàng)目的分級(jí)機(jī)制,把項(xiàng)目分成了不同級(jí)別。

基于這樣的一些項(xiàng)目分級(jí)機(jī)制以后,下一個(gè)問題就是,什么樣的項(xiàng)目能夠更加順暢地進(jìn)入到成熟階段,獲得公司更多的資源以及以更高的優(yōu)先級(jí)去進(jìn)行開源?

我們的標(biāo)準(zhǔn)是:

  • 技術(shù)領(lǐng)域中沒有形成事實(shí)標(biāo)準(zhǔn),能夠填補(bǔ)局部空白
  • 開源技術(shù)可覆蓋的開發(fā)者基數(shù)大,具有普適性
  • 字節(jié)跳動(dòng)在該技術(shù)領(lǐng)域有優(yōu)勢(shì),能推動(dòng)領(lǐng)域技術(shù)發(fā)展
  • 不與公司業(yè)務(wù)發(fā)生沖突
  • 能夠推動(dòng)自身業(yè)務(wù)發(fā)展、提升技術(shù)影響力

依據(jù)這些標(biāo)準(zhǔn),當(dāng)決定一個(gè)項(xiàng)目是否應(yīng)該開源后,我們還要保證這個(gè)開源的項(xiàng)目能夠成功。

針對(duì)成功與否,我們就需要有一套所謂的價(jià)值觀或者價(jià)值體系來衡量。

這里我列舉了幾個(gè)我們的思考:

  • 首先,一個(gè)開源項(xiàng)目不應(yīng)該去設(shè)立短期 KPI,這樣容易本末倒置,容易讓大家動(dòng)作變形。所以我們更多的會(huì)定一些更加長期的北極星指標(biāo),這個(gè)北極星指標(biāo)就會(huì)更多的圍繞我們前面說的幾個(gè)價(jià)值點(diǎn)來進(jìn)行衡量。
  • 第二,我們更追求去打造有價(jià)值的精品項(xiàng)目,這個(gè)優(yōu)先級(jí)要高于做項(xiàng)目的廣泛覆蓋。
  • 第三,我們認(rèn)為通過一個(gè)開源技術(shù)去創(chuàng)造用戶價(jià)值,它的優(yōu)先級(jí)要高于實(shí)現(xiàn)短期商業(yè)變現(xiàn)。
  • 第四,安全和合規(guī)是我們的底線。

講完這些以后,我會(huì)分享三個(gè)具體的開源項(xiàng)目,希望結(jié)合這些具體的項(xiàng)目,能夠把我們前面提到的一些理念具象化。

2、CloudWeGo:聚焦微服務(wù)通信與治理

今天第一個(gè)要分享的開源項(xiàng)目叫做 CloudWeGo,它是一個(gè)微服務(wù)中間件的集合。

CloudWeGo 其實(shí)是一套企業(yè)級(jí)云原生架構(gòu)的中間件集合,幫助企業(yè)快速地搭建自己的微服務(wù)系統(tǒng)。

CloudWeGo 也是由字節(jié)跳動(dòng)基礎(chǔ)架構(gòu)團(tuán)隊(duì)開源出來的項(xiàng)目,專注于微服務(wù)通信與治理,具有高性能、可擴(kuò)展、高可靠、易用性等幾個(gè)顯著特點(diǎn)。

CloudWeGo 里面的項(xiàng)目都是在字節(jié)內(nèi)部經(jīng)過大規(guī)模落地實(shí)踐驗(yàn)證的,開源后每個(gè)功能的迭代也都是第一時(shí)間在內(nèi)部使用驗(yàn)證過的,是一個(gè)真正的企業(yè)級(jí)落地項(xiàng)目,開源用戶和字節(jié)跳動(dòng)內(nèi)部業(yè)務(wù)使用的是同一套服務(wù)框架。

其次,CloudWeGo 提供的功能,尤其是協(xié)議支持和服務(wù)治理,都是能解決真實(shí)業(yè)務(wù)痛點(diǎn)的,每一行代碼優(yōu)化都能實(shí)實(shí)在在地提升用戶服務(wù)的性能。

最后,CloudWeGo 的研發(fā)也借鑒了一些知名開源項(xiàng)目的設(shè)計(jì)思路,同時(shí)也依賴一些開源項(xiàng)目的實(shí)現(xiàn),項(xiàng)目開源出來既是為了反饋開源社區(qū),也是為了進(jìn)一步豐富開源社區(qū)的生態(tài)。

字節(jié)跳動(dòng)如何從0到1打造一個(gè)開源項(xiàng)目?-開源基礎(chǔ)軟件社區(qū)

CloudWeGo 在第一階段開源了四個(gè)項(xiàng)目,包括:

  • Kitex
  • Netpoll
  • Thriftgo
  • Netpoll-http2

發(fā)展到今天,CloudWeGo 在 GitHub 社區(qū)里,Kitex 已經(jīng)有超過 4.3K 的 star,Netpoll 今天也有超過 2.6K 的 star。

目前 CloudWeGo-Kitex 已經(jīng)支持接入阿里云的云服務(wù)引擎 MSE、應(yīng)用實(shí)時(shí)監(jiān)控服務(wù) ARMS,還有騰訊云的微服務(wù)引擎 TSE。此外,服務(wù)治理等高階的能力也在對(duì)接中。

前面我們也提到,字節(jié)跳動(dòng)也提供了火山引擎這么一個(gè)企業(yè)服務(wù)的產(chǎn)品集合,CloudWeGo 項(xiàng)目目前也在和火山引擎的相關(guān)產(chǎn)品做集成,完成后相關(guān)產(chǎn)品和能力也將陸續(xù)地對(duì)大家開放,方便開源用戶快速上云。

CloudWeGo 非常注重社區(qū)文化和社區(qū)建設(shè),具有完善的成員晉升機(jī)制,同時(shí)也積極培養(yǎng)社區(qū)開發(fā)者作為社區(qū)的核心力量。

截止到目前,CloudWeGo 已經(jīng)先后培養(yǎng)了五位 Committer,他們給社區(qū)的發(fā)展也做出了重要的貢獻(xiàn),在此感謝這些開源貢獻(xiàn)者。

同時(shí),我們也非常歡迎有更多志同道合的朋友可以參與到社區(qū)的建設(shè)中來,為社區(qū)的發(fā)展建言獻(xiàn)策、貢獻(xiàn)自己的力量。

3、Elkeid:更適合云原生時(shí)代

下面我再分享另外一個(gè)也是非常重要的領(lǐng)域——安全領(lǐng)域的開源項(xiàng)目實(shí)踐,這個(gè)開源項(xiàng)目叫做 Elkeid,意思是瑤光/破軍,也是北斗七星之一,它解決的問題就是主機(jī)安全。

Elkeid 是由字節(jié)跳動(dòng)內(nèi)部安全與風(fēng)控團(tuán)隊(duì)自研的一個(gè)新的主機(jī)安全解決方案,它具備幾個(gè)鮮明的特點(diǎn)。

一個(gè)就是規(guī)模大,能夠支撐字節(jié)跳動(dòng)內(nèi)部百萬級(jí)的服務(wù)器數(shù)量。當(dāng)然講到這塊,也稍微劇透一下字節(jié)跳動(dòng)內(nèi)部的服務(wù)器規(guī)模。

另外一個(gè)特點(diǎn),就是 Elkeid 采用了我們內(nèi)核態(tài)的技術(shù)進(jìn)行大多數(shù)指標(biāo)和信息的收集。

這樣一方面可以極大地提升性能,另一方面也可以去采集更多更豐富的數(shù)據(jù),從而大大增強(qiáng)我們的檢測(cè)能力。

字節(jié)跳動(dòng)如何從0到1打造一個(gè)開源項(xiàng)目?-開源基礎(chǔ)軟件社區(qū)

上圖是整個(gè) Elkeid 的技術(shù)架構(gòu),這樣一個(gè)架構(gòu)提供了若干個(gè)好處:

  • 首先,我們實(shí)現(xiàn)了端上去做采集,但是在后端去做分析,從而降低在端上原地的計(jì)算壓力。
  • 其次,后端所有的組件都可以支持高可用,從而可以支持我們剛才說的百萬級(jí)別規(guī)模的接入。
  • 除此以外,整體的依賴少,維護(hù)成本低。
  • 最后,二次開發(fā)友好,每一個(gè)主機(jī)上的 Agent 都支持不同的插件,從而實(shí)現(xiàn)一些定制化的能力。

我們?yōu)槭裁匆ラ_源這么一個(gè)項(xiàng)目呢?其實(shí)最早我們也是基于一些已有的主流主機(jī)安全方案來提升我們自身的業(yè)務(wù)系統(tǒng)的安全性。

但是隨著我們業(yè)務(wù)體量、規(guī)模和需求不斷地增多,我們也逐漸看到傳統(tǒng)的方案在應(yīng)對(duì)我們的場景之下越來越暴露出了瓶頸。

隨后,基于我們前面所提到的內(nèi)核態(tài)的這么一個(gè)開源主機(jī)方案,我們自研了 Elkeid,并且為行業(yè)里面去證明了該方案的可行性和價(jià)值。

進(jìn)一步隨著混合云和云原生發(fā)展的越來越快,傳統(tǒng)的主機(jī)方案也很難適應(yīng)新的容器化和云原生化的這樣一種新的應(yīng)用形態(tài)。

當(dāng)我們看到這樣一個(gè)趨勢(shì)以后,我們也希望能夠把自研的 Elkeid 開源出來,和領(lǐng)域去進(jìn)行共建,能夠借助更多的力量,我們?nèi)ズw更多的場景,去開發(fā)更多的策略,進(jìn)而提升整個(gè)我們項(xiàng)目的有效性。

4、ByteHouse:賦能下一代技術(shù)架構(gòu)

今天最后一個(gè)案例,是一個(gè)非常重要的領(lǐng)域,數(shù)據(jù)倉庫、數(shù)據(jù)分析。在這個(gè)領(lǐng)域會(huì)跟大家介紹我們從開源演化出來的一個(gè)技術(shù),叫做 ByteHouse。

從 2019 年之后,字節(jié)跳動(dòng)開始廣泛使用 ClickHouse。目前,ClickHouse 在字節(jié)跳動(dòng)內(nèi)部的總節(jié)點(diǎn)數(shù)已經(jīng)超過了 1.5 萬個(gè),管理的數(shù)據(jù)總量也達(dá)到了 600PB 之多,每日查詢的請(qǐng)求也有超過上億次,它的應(yīng)用場景也非常多。

ClickHouse 本身有很多的優(yōu)勢(shì),如果總結(jié)下來就是多快好省。當(dāng)然,ClickHouse 本身也有不適合的場景。

比如說對(duì)于 KV 的支持,對(duì)于 Blog 或者文檔存儲(chǔ)的支持,或者在查詢中如果使用大量的 Drive,也不能夠支持得特別好。

當(dāng)然除了這些局限以外,隨著字節(jié)跳動(dòng)深度使用,在第二階段我們也開始遇到了一些問題,很多問題的根源其實(shí)都是來自于 ClickHouse 的架構(gòu)。

隨著我們業(yè)務(wù)的發(fā)展和擴(kuò)張,ClickHouse 集群的算力會(huì)逐漸成為瓶頸,這時(shí)候我們就要對(duì)集群進(jìn)行擴(kuò)容。

但是一旦我們進(jìn)行擴(kuò)容,數(shù)據(jù)其實(shí)也要相應(yīng)的去進(jìn)行移動(dòng),去做所謂的重新平衡。

但是在重新平衡的過程中,我們又有很多其他的開銷,有很多運(yùn)維的準(zhǔn)備工作。

包括我們要去應(yīng)對(duì)數(shù)據(jù)丟失的風(fēng)險(xiǎn),要保證原數(shù)據(jù)的一致性和正確性。所以這樣也會(huì)導(dǎo)致我們錯(cuò)失了很多去進(jìn)行集群擴(kuò)展的最佳時(shí)間。

基于 ClickHouse 這些問題,在第三個(gè)階段,我們就開始進(jìn)行對(duì)應(yīng)的技術(shù)優(yōu)化。

最主要的一個(gè)技術(shù)優(yōu)化點(diǎn),就是我們使用了計(jì)算和存儲(chǔ)分離的架構(gòu),我們也管它叫做分解式的基礎(chǔ)架構(gòu)。

大家如果看下邊架構(gòu)圖就可以看得比較清楚:

字節(jié)跳動(dòng)如何從0到1打造一個(gè)開源項(xiàng)目?-開源基礎(chǔ)軟件社區(qū)

原來在一臺(tái)的節(jié)點(diǎn)之上,我們既做存儲(chǔ)又做計(jì)算,但是在我們的分解式的基礎(chǔ)架構(gòu)或者存算分離的架構(gòu)里,我們會(huì)提供一個(gè)通用存儲(chǔ)層。

計(jì)算層可以自由地去進(jìn)行靈活的彈性伸縮,這個(gè)時(shí)候當(dāng)我們需要更多算力的時(shí)候,我們只需要添加更多的計(jì)算節(jié)點(diǎn),如果我們需要更多的存儲(chǔ)空間,我們就可以擴(kuò)展存儲(chǔ)層所需要的容量。

當(dāng)然,彈性的伸縮還帶來了無盡的擴(kuò)展性,因?yàn)閿?shù)據(jù)是在存儲(chǔ)層中共享的,所以理論上我們可以橫向地?cái)U(kuò)展,以盡可能的利用更多的計(jì)算資源。這樣最終帶來一個(gè)好處,就是對(duì)于集群管理者來講也更加友好。

當(dāng)然這個(gè)新架構(gòu)也會(huì)帶來一些挑戰(zhàn),我們也設(shè)計(jì)了對(duì)應(yīng)的解決方案。比如我們能想到的就是性能,共享存儲(chǔ)的架構(gòu)是否會(huì)引發(fā)一些性能的妥協(xié)。

當(dāng)進(jìn)行 ByteHouse 研發(fā)的時(shí)候,我們會(huì)通過增加數(shù)據(jù)的緩存層來彌補(bǔ)遠(yuǎn)程讀寫的性能損耗。

第二個(gè)挑戰(zhàn)就是 ByteHouse 引擎在讀寫分離的架構(gòu)下,數(shù)據(jù)存儲(chǔ)的系統(tǒng)我們希望可以適配使用不同的場景和不同的實(shí)現(xiàn)方案。

比如說如果是做本地存儲(chǔ),我們就會(huì)適配 HDFS,原始數(shù)據(jù)文件就不需要做大量的遷移。當(dāng)我們部署在不同的公有云的時(shí)候,我們也希望能夠快速地適配不同的云存儲(chǔ)。

因此,在整個(gè)的物理存儲(chǔ)系統(tǒng)之下,我們就需要構(gòu)建一個(gè)抽象層,這一層我們內(nèi)部管它叫 VFS,Virtual Filesystem,就是虛擬文件系統(tǒng),來提供面向不同存儲(chǔ)系統(tǒng)的訪問接口。這是第三個(gè)階段,我們做了一系列的技術(shù)優(yōu)化。

到了第四階段,當(dāng)我們實(shí)現(xiàn)了一些自身的業(yè)務(wù)優(yōu)化或者是功能創(chuàng)新的時(shí)候,我們也希望能夠反哺社區(qū)。

ByteHouse 作為基于容器化和云時(shí)代的一個(gè)計(jì)算引擎,一個(gè)很大的亮點(diǎn)就是架構(gòu)上實(shí)現(xiàn)了計(jì)算和存儲(chǔ)的分離,允許兩者去做獨(dú)立的擴(kuò)展和彈性的伸縮。

同時(shí),我們可以方便用戶根據(jù)不同的業(yè)務(wù)工作負(fù)載特點(diǎn),來實(shí)現(xiàn)實(shí)時(shí)的計(jì)算和存儲(chǔ)的資源配比,來達(dá)到最高的 TCO。

基于這樣的一些架構(gòu)的設(shè)計(jì)和技術(shù)創(chuàng)新,我們開始不斷地把 ByteHouse 再進(jìn)行產(chǎn)品化,并且把它定位成一站式輕量的云數(shù)倉。

除了 ByteHouse 以外,周邊我們也補(bǔ)充了大量的工具和能力,來方便開發(fā)者更好的使用這項(xiàng)技術(shù),包括獲得多種數(shù)據(jù)源的導(dǎo)入,包括提高查詢的這種可觀測(cè)的能力和診斷能力,以及在多租戶下去進(jìn)行數(shù)據(jù)權(quán)限的多級(jí)管控等等。?

??想了解更多關(guān)于開源的內(nèi)容,請(qǐng)?jiān)L問:??

??51CTO 開源基礎(chǔ)軟件社區(qū)??

??https://ost.51cto.com。

責(zé)任編輯:jianghua 來源: 鴻蒙社區(qū)
相關(guān)推薦

2019-01-03 11:49:11

華為云

2025-02-24 13:46:40

2019-10-22 08:12:49

消息隊(duì)列分布式系統(tǒng)

2020-02-25 22:00:22

機(jī)器人人工智能系統(tǒng)

2024-02-19 00:00:00

前端開源項(xiàng)目

2021-08-03 09:07:39

GolangGrpc服務(wù)

2017-06-27 09:26:53

運(yùn)維app開發(fā)

2021-03-10 09:52:38

開發(fā)技能架構(gòu)

2019-10-29 15:46:07

區(qū)塊鏈區(qū)塊鏈技術(shù)

2015-07-29 10:00:16

開源項(xiàng)目

2014-10-21 10:25:50

程序員

2024-12-02 11:24:30

Docker編排技術(shù)

2023-03-08 17:33:36

KubernetesJava

2022-08-09 10:00:57

ViteTypeScripVue3

2012-05-21 09:31:56

HTML5

2021-02-04 08:11:25

Redis集群架構(gòu)

2016-11-28 16:23:23

戴爾

2022-05-09 08:35:43

面試產(chǎn)品互聯(lián)網(wǎng)

2023-10-18 11:56:17

開源AI

2022-02-12 00:00:00

架構(gòu)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)