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

架構(gòu)迭代無法一蹴而就,做開源亦是如此

原創(chuàng) 精選
大數(shù)據(jù) 架構(gòu)
代立冬:做開源當(dāng)追求立足中國,貢獻(xiàn)世界

Apache DolphinScheduler是基于Apache開源社區(qū)理念打造的知名DataOps 領(lǐng)域開源項(xiàng)目。作為一個分布式去中心化,易擴(kuò)展的可視化工作流任務(wù)調(diào)度平臺,Apache DolphinScheduler目前已累計(jì)在1000多家公司生產(chǎn)環(huán)境中作為企業(yè)的核心調(diào)度系統(tǒng)。在近日的【T·Talk】系列技術(shù)分享活動中,Apache Member、Apache DolphinScheduler PMC Chair、白鯨開源聯(lián)合創(chuàng)始人代立冬老師詳細(xì)介紹了Apache DolphinScheduler架構(gòu)迭代中的經(jīng)驗(yàn)與教訓(xùn),并分享了自己對開源的理解與思考?!綯·Talk】也將本次分享的精彩內(nèi)容進(jìn)行了整理,希望大家喜歡。

?

Apache DolphinScheduler

Apache DolphinScheduler是一個云原生的分布式的工作流調(diào)度系統(tǒng),也是首個由國人主導(dǎo)并貢獻(xiàn)到Apache基金會的大數(shù)據(jù)工作流調(diào)度領(lǐng)域的頂級項(xiàng)目,擁有著每日支持千萬級任務(wù)調(diào)度的能力。據(jù)不完全統(tǒng)計(jì),目前已有一千多家不同領(lǐng)域企業(yè)在生產(chǎn)環(huán)境上使用Apache DolphinScheduler。

圖片

能夠擁有如此多的用戶群體,主要由于Apache DolphinScheduler擁有著以下幾個關(guān)鍵優(yōu)勢:

  • 高可靠性:調(diào)度最重要的能力是可靠性。Apache DolphinScheduler在架構(gòu)上采用了去中心化的多Master和多Worker的設(shè)計(jì)。所有的Master Server都會同時工作,包括Worker也是無中心的。且在這樣的架構(gòu)下采用了任務(wù)隊(duì)列機(jī)制去避免過負(fù)載,這樣可以有效避免機(jī)器卡死。
  • 簡單易上手:ApacheDolphinScheduler的前身是EasyScheduler,Easy和Simple一直是我們的核心理念。ApacheDolphinScheduler擁有可視化的拖拉拽界面,所有的定義都是通過拖拉拽形成的,同時也有OpenAPI與第三方系統(tǒng)對接。有一些習(xí)慣于使用Python的小伙伴,也可以使用PY DolphinScheduler去創(chuàng)建工作流定義。
  • 使用場景豐富:ApacheDolphinScheduler能夠支持多租戶、權(quán)限管理以及超過20種的常用任務(wù)。這一能力是目前很多開源項(xiàng)目,包括一些商業(yè)調(diào)度系統(tǒng)所不具備的。ApacheDolphinScheduler設(shè)計(jì)之初的目標(biāo)就是超越一些商業(yè)公司的調(diào)度系統(tǒng)。如果開源項(xiàng)目有足夠的價值,足以代替一些商業(yè)公司產(chǎn)品。
  • 高擴(kuò)展性:我們希望ApacheDolphinScheduler支持自定義任務(wù)類型,目前已實(shí)現(xiàn)了SPI化,未來還會使其擁有更好的熱加載能力。Apache DolphinScheduler分布式調(diào)度的特性將得到強(qiáng)化,例如擁有更多K8S能力,隨著集群的能力而實(shí)現(xiàn)線性增長。擴(kuò)展性方面,應(yīng)當(dāng)具備彈性伸縮的能力,未來也會實(shí)現(xiàn)K8S的Operator,Serverless以加大Master的伸縮容。

當(dāng)然,作為一款開源項(xiàng)目,ApacheDolphinScheduler的每一步發(fā)展與成長都離不開社區(qū)的貢獻(xiàn),開源社區(qū)的力量是非常強(qiáng)大的。為了能夠讓大家更好地記住ApacheDolphinScheduler,這里也介紹一個社區(qū)所貢獻(xiàn)的slogan,那就是“工具選的好,下班回家早。調(diào)度用的對,半夜安心睡。"


架構(gòu)迭代中的經(jīng)驗(yàn)與教訓(xùn) 

"優(yōu)秀的架構(gòu)不是設(shè)計(jì)出來的,而是迭代出來的。“這句話在ApacheDolphinScheduler中體現(xiàn)得淋漓盡致。以下是ApacheDolphinScheduler最新的架構(gòu)。最上端能夠直觀可感知的是UI,UI界面下面則承載著APIServer,如果通過OpenAPI去調(diào)ApacheDolphinScheduler,也是通過這樣一個服務(wù)接口來調(diào)起的。

圖片

在此之下還有數(shù)個對等的Master Server,Master Server會根據(jù)一些算法,例如隨機(jī)、輪詢或是基于CPU和內(nèi)存的線性加權(quán)等給Worker分任務(wù),WorkerServer則會在接收任務(wù)時響應(yīng),并在完成任務(wù)時回應(yīng)Response。大數(shù)據(jù)調(diào)度很重要的特點(diǎn)是很多任務(wù)是離線的,任務(wù)的運(yùn)行時間較長,大部分任務(wù)都會超過30分鐘甚至幾個小時,所以需要分響應(yīng)和Response。Master Server和Worker Server都會注冊ZK集群,主要負(fù)責(zé)服務(wù)的注冊、監(jiān)聽。如果Master或Worker Server掛了,需要恢復(fù),包括一些容錯的機(jī)制,以及極個別情況下,會用到分布式鎖。去分布式鎖、減少數(shù)據(jù)庫輪詢是架構(gòu)改造的核心目標(biāo)之一。Master Server在工作時,先搶一把鎖,誰搶到鎖誰工作。這時ZK在充當(dāng)分布式鎖的過程中,性能是比較低的,對此我們做了去分布式鎖的優(yōu)化,大幅減少線程的使用。

1.3架構(gòu)與1.2架構(gòu)也存在一個明顯的區(qū)別,1.3架構(gòu)在1.2架構(gòu)的基礎(chǔ)上刪除了TaskQueue。之所以如此設(shè)計(jì),是因?yàn)樵絹碓蕉嗟挠脩舭l(fā)現(xiàn),在任務(wù)較多的時候,Worker Server能夠到達(dá)上百臺。由于其用TaskQueue做了緩沖,因此會給數(shù)據(jù)庫造成極大的壓力,僅是維護(hù)一個數(shù)據(jù)庫連接池就有可能都會把數(shù)據(jù)庫的連接池耗盡。

圖片

無論是去分布式鎖還是去TaskQueue,其實(shí)都符合架構(gòu)發(fā)展的趨勢。寫代碼是一件很有趣的事情,有時你會發(fā)現(xiàn)我們能夠通過寫出新的代碼創(chuàng)造價值,但后來又發(fā)現(xiàn)一些不合理的地方,因此要將此前寫出的東西刪掉、優(yōu)化掉,這其實(shí)也是一種價值的體現(xiàn)。架構(gòu)的迭代、演進(jìn)亦是如此,是一個不斷做取舍的過程。

圖片

在做去分布式鎖時,我們的第一感覺是需要加一個Scheduler,用API去與Scheduler交互,Scheduler接到任務(wù)或定時任務(wù)后,去分發(fā)到每一個Master上。但隨后又考慮到,如果后續(xù)的任務(wù)較多,其一定會受限于當(dāng)前的Active的節(jié)點(diǎn)本身,例如CPU、內(nèi)存等一些硬件的設(shè)施,就像Hadoop的NameNode、Active的NameNode一樣,會有這樣的壓力。最終我們還是放棄了這樣的架構(gòu),雖然當(dāng)時已經(jīng)實(shí)現(xiàn)了代碼,但依然選擇了進(jìn)行改進(jìn)。對每一個Master去做編號,并使其按照哈希的方式獲取任務(wù),這是當(dāng)時最終選擇的方式,也是去分布式鎖當(dāng)前的實(shí)現(xiàn)方式。查詢到任務(wù),而后再去構(gòu)建有向無環(huán)圖,去生成任務(wù)實(shí)例,并進(jìn)行分配任務(wù)。

圖片?

云原生時代調(diào)度的發(fā)展方向其實(shí)還有很多,我們希望調(diào)度能夠Serverless化、能夠更加容器化、更加彈性化。在架構(gòu)方面,要去ZK,使其更加穩(wěn)定、更加健壯。包括支持多云的能力,現(xiàn)在已經(jīng)有越來越多的公司使用不止一朵云,因此Apache DolphinScheduler也需要有跨云、多云的能力,這方面后續(xù)會有更多的支持。彈性的伸縮,任務(wù)的隔離性等,都是需要考慮的能力。


如何做一個開源項(xiàng)目 

做開源項(xiàng)目的第一要素,是要考慮定位。首先需要了解目前是否有競品或可參考的項(xiàng)目,明確想要做的項(xiàng)目能否解決現(xiàn)有產(chǎn)品沒有解決的痛點(diǎn)。其次是產(chǎn)品定位,這將直接決定項(xiàng)目的天花板。最后,一定要有創(chuàng)新,而不是重復(fù)造個輪子。很多用戶以及貢獻(xiàn)者是會去對同類型項(xiàng)目進(jìn)行比較選擇的,沒有創(chuàng)新將很難得到支持。

圖片

第二點(diǎn),做項(xiàng)目時也要從用戶角度考慮。一定要明確你要解決什么樣的用戶痛點(diǎn),以及它與其他開源項(xiàng)目有何不同,將這些問題想清楚再動手是不遲的,不走彎路即是快。此外,也需要考慮這一領(lǐng)域的商業(yè)公司,我們能否通過開源的方式超越這些商業(yè)公司,對方用戶的替換代價有多大,為什么要從其他項(xiàng)目替換到你的項(xiàng)目,這都是需要考慮的。

第三點(diǎn),一個開源項(xiàng)目有持久的生命力這一點(diǎn)非常重要,簡單來說就是能否解決貢獻(xiàn)者吃飯的問題。目前已經(jīng)有越來越多的企業(yè)將ApacheDolphinScheduler寫在招聘需求中,例如熟悉ApacheDolphinScheduler者優(yōu)先、貢獻(xiàn)者優(yōu)先等,這些都是能夠給貢獻(xiàn)者的加分項(xiàng)。貢獻(xiàn)者也是要吃飯的,也有各種各樣訴求,能夠讓貢獻(xiàn)者通過參與開源獲得收益,這非常重要。

當(dāng)項(xiàng)目初步完成后,則需要去尋找種子用戶,讓用戶作出評價,再去改進(jìn),千萬不要閉門造車。在ApacheDolphinScheduler發(fā)展的早期,我們真的會手把手教用戶操作,能去企業(yè)拜訪就去拜訪,不能拜訪就遠(yuǎn)程教學(xué),這樣才找到了第一批種子用戶,大家才愿意去“吃這只螃蟹”。有了種子用戶,才能夠形成口碑,口碑傳播雖然是一個極慢的過程,但卻十分有效。

堅(jiān)持,也是做開源過程中非常重要的一件事。很多開源項(xiàng)目做不過兩年,這與它的項(xiàng)目作者、創(chuàng)始團(tuán)隊(duì)有很大的關(guān)系,但凡有一些雜念,沒有堅(jiān)持下去,都是非??上У摹H绻阌X得自己的項(xiàng)目很好,一定要堅(jiān)持下去,在中國做開源很難,要花大量的業(yè)余時間與精力在項(xiàng)目上,所需要付出的努力甚至?xí)哂谝恍┥虡I(yè)項(xiàng)目。最后一點(diǎn),酒香也怕巷子深。大多數(shù)開源項(xiàng)目都是開發(fā)者做起來的,但很多開發(fā)者其實(shí)并不是很愿意去宣傳自己的項(xiàng)目,也有一些可能由于表達(dá)能力弱一些,不擅長分享。對此的建議是一定要抓住一切機(jī)會去推廣、宣傳自己的項(xiàng)目。例如在群中分享,或與別的項(xiàng)目聯(lián)合舉辦meetup、去公司試講。這些宣傳與推廣能幫助你的項(xiàng)目收獲更多的用戶與貢獻(xiàn)者。


如何參與一個開源項(xiàng)目 

參與開源項(xiàng)目首先是一個很好的提升技術(shù)能力的方式,越是頂級的、知名的開源項(xiàng)目,參與的高手越多。通過參與開源我們能夠快速得到技術(shù)能力的提升,通過與高手的交流,也能夠收獲更多的技術(shù)經(jīng)驗(yàn)。

圖片

第二點(diǎn),參與開源,一旦你的代碼被使用,它就會運(yùn)行在成千上萬的服務(wù)器之上,被不同的人、不同的企業(yè)使用,這是一件非常令人驕傲的事,會很直接地提升你的自信心與獲得感。

第三點(diǎn),大家會認(rèn)可你的貢獻(xiàn),開源中的一條規(guī)則就是"英雄不問出處"。無論你的職位高低、資歷深淺,貢獻(xiàn)多的人,就會被社區(qū)認(rèn)可,就會有影響力,你的聲望就會比較大。

第四點(diǎn),豐富閱歷。中國是世界上唯一能夠把參與開源寫進(jìn)簡歷并且會在招聘中作為一個加分項(xiàng)的國家。中國的很多企業(yè)為開源人提供了這樣的機(jī)會,例如你研究了某一個項(xiàng)目的源碼、對其熟悉,或認(rèn)識一些項(xiàng)目的貢獻(xiàn)者,遇到問題能夠聯(lián)系他們尋求幫助,這會非常有用,這些經(jīng)歷能夠?yàn)槟愕暮啔v加分。

第五點(diǎn),結(jié)交高手。公司畢竟還是一個小圈子,你能夠在公司中認(rèn)識的人是比較有限的,但是通過開源,你能夠認(rèn)識全世界的高手。無論對技術(shù)發(fā)展還是職業(yè)發(fā)展,這都是有幫助的。

第六點(diǎn),收獲創(chuàng)新性。參與一些新型的開源項(xiàng)目,能夠了解到目前這一領(lǐng)域可能的創(chuàng)新機(jī)會及思路。開源是可以通過創(chuàng)新等力量打破壟斷的,這是已經(jīng)多次得到過驗(yàn)證的道理。

關(guān)于如何找到一個適合自己的開源項(xiàng)目,很多情況是工作需要,另外個人興趣也是很重要的一點(diǎn)。開源項(xiàng)目的評價標(biāo)準(zhǔn)有很多,但是比較直觀的參考因素就是社區(qū)的活躍度。Apache的理念中有一條是“社區(qū)大于代碼”,獨(dú)行者快,眾行者遠(yuǎn),社區(qū)的活躍度代表了這個開源項(xiàng)目到底能走多遠(yuǎn)。對開源感興趣的同學(xué),首先可以通過郵件列表訂閱user,若是貢獻(xiàn)者則可以訂閱DEV。做一些非技術(shù)性的討論,參加一些meetup,都是參與開源的機(jī)會。通過這些渠道你能夠充分了解到這個項(xiàng)目的各個方面信息,也可以確定這個項(xiàng)目是否靠譜。

圖片?

第二點(diǎn),先在本地使用開源項(xiàng)目,例如SeaTunnel這樣的項(xiàng)目,它是一個Apache基金會孵化的項(xiàng)目,其貢獻(xiàn)者群體也是非?;钴S的,這就是一個比較優(yōu)質(zhì)的項(xiàng)目。我們?nèi)⑴c其中時,應(yīng)該先把它先運(yùn)轉(zhuǎn)起來、運(yùn)行起來,去直觀地感受項(xiàng)目的用途以及功能。

第三點(diǎn),不要憋大招。尤其是在做第一次貢獻(xiàn)的時候,good first issue都是比較簡單的,大家可以通過這個練手。找一些小的issue去fix,然后再慢慢從提交小PR到提交大PR。對于不了解流程的同學(xué),可以去學(xué)習(xí)貢獻(xiàn)規(guī)范,尤其像Apache中的項(xiàng)目,都有非常詳細(xì)的指導(dǎo)貢獻(xiàn)的流程文檔。此外,貢獻(xiàn)新生項(xiàng)目,更容易成為Committer,這也是很多小伙伴會去考慮的一點(diǎn)。如果你的目標(biāo)是成為一個項(xiàng)目的Committer,那么參與一個新的開源的項(xiàng)目,實(shí)現(xiàn)這個目標(biāo)的難度會小很多。例如像SeaTunnel這樣的云原生做數(shù)據(jù)遷移、數(shù)據(jù)備份、數(shù)據(jù)集成的項(xiàng)目,貢獻(xiàn)幾種數(shù)據(jù)源,成為一個Committer也是有可能的。


思考與前瞻

"社區(qū)是一群為了共同利益而聚集到一起的人,做著有意義的事情。"這是《用戶共創(chuàng)》的作者喬諾給大家分享的。開源最佳狀態(tài)其實(shí)是邊用邊貢獻(xiàn)邊吐槽,這是參與開源的最佳狀態(tài)。大家用的過程中吐吐槽,然后再提一個PR,發(fā)現(xiàn)項(xiàng)目中不好的地方,再把它fix一下,這才是開源最佳的狀態(tài)。

目前有大量的企業(yè)都在使用開源,未來很多的基礎(chǔ)軟件,包括一些中間件,都會以開源的形態(tài)存在,因此也希望大家能夠更多地參與開源。思考在開源之中自己能夠做哪些事情,是否能夠做更多的貢獻(xiàn)。將開源當(dāng)成自己職業(yè)生涯、自己青春的一部分,去豐富自己的閱歷,為中國的開源軟件事業(yè)做出一些貢獻(xiàn),這是當(dāng)代青年尤其是程序員應(yīng)該追求的事情。我們共同的目標(biāo)應(yīng)當(dāng)是立足中國、貢獻(xiàn)全球。

責(zé)任編輯:徐杰承 來源: 51CTO技術(shù)棧
相關(guān)推薦

2022-11-24 14:55:25

2023-01-17 13:48:54

2016-11-29 13:44:17

網(wǎng)絡(luò)建設(shè)VoLTE運(yùn)營商

2017-05-05 09:35:59

NB-IoT運(yùn)營商TD-LTE

2010-06-01 15:29:15

IPv6網(wǎng)絡(luò)環(huán)境

2022-03-31 06:23:43

自動化響應(yīng)網(wǎng)絡(luò)安全

2015-06-25 14:59:32

提速降費(fèi)運(yùn)營商

2025-03-17 12:18:42

2022-08-03 14:40:55

數(shù)字化轉(zhuǎn)型數(shù)字經(jīng)濟(jì)銀行

2016-09-23 09:55:56

網(wǎng)關(guān)架構(gòu)移動端

2013-03-26 10:48:22

創(chuàng)業(yè)降級論

2009-07-30 14:58:26

BSM落地北塔

2025-04-18 04:05:00

2020-08-05 08:31:13

物聯(lián)網(wǎng)2G技術(shù)

2021-06-17 16:24:49

云計(jì)算軟件開發(fā)

2019-03-11 14:17:07

Oracle NetS轉(zhuǎn)型內(nèi)核

2021-03-03 08:29:54

MySQL查詢優(yōu)化

2021-09-10 10:24:33

數(shù)字化

2025-04-08 09:33:19

2024-10-22 09:40:00

飛輪數(shù)據(jù)計(jì)算
點(diǎn)贊
收藏

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