偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

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

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

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

?

Apache DolphinScheduler

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

圖片

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

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

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


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

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

圖片

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

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

圖片

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

圖片

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

圖片?

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


如何做一個(gè)開(kāi)源項(xiàng)目 

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

圖片

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

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

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

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


如何參與一個(gè)開(kāi)源項(xiàng)目 

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

圖片

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

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

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

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

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

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

圖片?

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

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


思考與前瞻

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

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

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

2022-11-24 14:55:25

2023-01-17 13:48:54

2017-05-05 09:35:59

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

2010-06-01 15:29:15

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

2022-03-31 06:23:43

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

2016-11-29 13:44:17

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

2015-06-25 14:59:32

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

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)移動(dòng)端

2013-03-26 10:48:22

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

2009-07-30 14:58:26

BSM落地北塔

2025-04-18 04:05:00

2021-06-17 16:24:49

云計(jì)算軟件開(kāi)發(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ì)算

2016-07-08 23:05:31

醫(yī)療安全
點(diǎn)贊
收藏

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