《CCF開源高校行第一期》觀后感

??想了解更多內(nèi)容,請(qǐng)?jiān)L問:??
??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??
前言
本次《開源高校行第一期》直播活動(dòng)由CCF主辦、三位業(yè)界開源大咖帶來分享,分別是LVS自由軟件項(xiàng)目創(chuàng)始人章文嵩、2022 Apache軟件基金會(huì)董事姜寧、OpenHarmony開源與開發(fā)者運(yùn)營(yíng)總監(jiān)歐建深三位先生。而我們有幸作為OpenHarmony成長(zhǎng)計(jì)劃的學(xué)員參加了本次會(huì)議的直播,完會(huì)后自覺收獲頗豐,有必要作一個(gè)總結(jié)性的梳理思考,因此,希望在投資自己的同時(shí)也具有供他人參考的價(jià)值。
議題分享
1、 從LVS項(xiàng)目說起與一點(diǎn)開源感悟
The Linux Virtual Server Project
分享會(huì)的第一項(xiàng)議題是章文嵩博士的《從LVS項(xiàng)目說起與一點(diǎn)開源感悟》。首先,大部分朋友在日常生活中可能很少聽說過 "LVS" 這個(gè)名詞,它是面向服務(wù)器端的一種負(fù)載均衡調(diào)度器,全稱Linux Virtual Server,字面意思即Linux 虛擬服務(wù)器,類似的項(xiàng)目還有Nginx、HAProxy、F5、Keepalived等。其在官網(wǎng)??The Linux Virtual Server Project??中這樣對(duì)其說明:Linux 虛擬服務(wù)器是一個(gè)高度可擴(kuò)展和高度可用的服務(wù)器,構(gòu)建在真實(shí)服務(wù)器集群上,負(fù)載均衡器在 Linux 操作系統(tǒng)上運(yùn)行。服務(wù)器集群的架構(gòu)對(duì)最終用戶是完全透明的,用戶之間的交互就像一個(gè)高性能的虛擬服務(wù)器一樣。我們所熟知的百度、阿里、騰訊、Google、SourceForge等公司網(wǎng)站都有使用到這項(xiàng)技術(shù),典型的場(chǎng)景就是淘寶雙11上百億購物額的訂單量背后的支撐。

筆者以往也對(duì)LVS沒有過具體了解,但基于以上分析,建立的初步感知是其思想與磁盤陣列技術(shù)有著大體上的異曲同工之妙。磁盤陣列通常稱作RAID,中文意思是獨(dú)立冗余磁盤陣列。RAID可通過軟件或硬件技術(shù)將多個(gè)較小的磁盤整合成為一個(gè)較大的磁盤設(shè)備,而這個(gè)較大的磁盤功能不僅是存儲(chǔ),還具有數(shù)據(jù)保護(hù)功能;LVS是一臺(tái)機(jī)器做網(wǎng)絡(luò)服務(wù)忙不過來,所以拿一組機(jī)器來做,對(duì)外仍然相當(dāng)于一臺(tái)機(jī)器,其logo形象地傳達(dá)出了這樣一種特性。
LVS開源經(jīng)過
章文嵩博士風(fēng)趣地闡述了他從大學(xué)本科階段一路走過來的歷程與趣事,以下是簡(jiǎn)單的概括:
- 1995年底接觸Linux,主要是玩,后在系統(tǒng)集成中應(yīng)用。
- 1998年5月,LVS第一個(gè)版本發(fā)布,Linux kernel 2.0上的一個(gè)patch,只支持VS/NAT,實(shí)現(xiàn)Round-Robin調(diào)度算法,很簡(jiǎn)單。
- 實(shí)現(xiàn)了更多的調(diào)度算法,還有bug fix等。
- 1998年11月實(shí)現(xiàn)了VS/IPTunneling機(jī)制。
- 1999年5月實(shí)現(xiàn)了VS/Direct Routing機(jī)制,移植到Linux kernel 2.2。
- 更多的人參與LVS項(xiàng)目。
- 2000年5月開始移植到Linux kernel 2.4。
- 2002年9月開始移植到Linux kernel 2.5。
- 2003年10月收錄到Linux kernel 2.5開發(fā)版。
- 2003年11月Linux kernel 2.4.23包含LVS。
- 2003年12月Linux kernel 2.6.0包含LVS。
- 2008年11月Google工程師幫忙實(shí)現(xiàn)了IPv6支持。
- 2010年2月實(shí)現(xiàn)了SCTP傳輸層協(xié)議支持。
- …
LVS也算一個(gè)全球協(xié)作的開源項(xiàng)目,匯聚了亞洲、歐洲、澳洲、美洲等全球各地的貢獻(xiàn)者的成果。盡管大多數(shù)貢獻(xiàn)者彼此之間都未曾謀過面,但基于相互的欣賞和共同的熱愛與需求,LVS的能力得到不斷加強(qiáng),為后續(xù)的廣泛應(yīng)用奠定了堅(jiān)實(shí)的基礎(chǔ),既滿足了當(dāng)代也造福了后世。也許,這就是開源精神核心靈魂之所在吧。
LVS既然有諸多優(yōu)勢(shì),那么它在實(shí)際情況中該如何使用呢?
LVS在大型網(wǎng)站的用法
云計(jì)算里有兩個(gè)叫地域和可用區(qū)的概念:地域是指物理的數(shù)據(jù)中心,資源創(chuàng)建成功后不能更換地域;可用區(qū)(Availability Zone,簡(jiǎn)稱AZ)是指在同一地域內(nèi),電力和網(wǎng)絡(luò)互相獨(dú)立的物理區(qū)域。同一可用區(qū)內(nèi)實(shí)例之間的網(wǎng)絡(luò)延時(shí)更小。在同一地域內(nèi)可用區(qū)與可用區(qū)之間內(nèi)網(wǎng)互通,可用區(qū)之間能做到故障隔離。這里引用阿里云的相關(guān)實(shí)例供參考:


一個(gè)地域范圍內(nèi)通常是3個(gè)可用區(qū),相鄰的可用區(qū)之間兩兩相隔大概50-100公里,以應(yīng)對(duì)容災(zāi)能力和網(wǎng)絡(luò)延時(shí)的要求。
在一個(gè)可用區(qū)的結(jié)構(gòu)內(nèi),其最前端是一個(gè)超級(jí)路由器Router,后端數(shù)據(jù)中心設(shè)置百十臺(tái)左右的LVS服務(wù)器,背后再設(shè)置萬臺(tái)的Service Endpoint服務(wù)節(jié)點(diǎn)。然后,Router使用ECMP和Equal Cost Multipath算法,對(duì)源地址和目標(biāo)地址IP做一個(gè)一致性Hash映射,將前端Router投射到后端LVS,以實(shí)現(xiàn)更細(xì)膩化的服務(wù)。
開源文化
章文嵩博士在阿里就職期間引入開源文化,推動(dòng)了阿里的發(fā)展進(jìn)程,2020年阿里發(fā)布了開源10年全景圖:

可見,阿里因開源而受益,同時(shí)也提高了阿里的技術(shù)品牌和影響力。
開源在當(dāng)今的商業(yè)服務(wù)中更是達(dá)成了三項(xiàng)一致性原則:
- 開源是更高效的開發(fā)模式。
- 開源帶貨是獲客最高效的手段之一。
- 基礎(chǔ)軟件必須開源,不開源客戶不敢用。
因此,對(duì)開源項(xiàng)目來說,建立競(jìng)爭(zhēng)優(yōu)勢(shì),就是要構(gòu)建良好的開源開發(fā)者社區(qū)和開源生態(tài)。
最后,章文嵩博士分享了他對(duì)開源的一些感悟。這一部分,前輩一點(diǎn)一滴積攢的經(jīng)歷對(duì)我們小生來說是無比珍貴的滋養(yǎng):
- 通過開源,可以得到更多用戶,用戶會(huì)幫助測(cè)試和反饋,最重要的是收集更多的客戶需求。
- 通過開源,可以得到更多開發(fā)人員和高手的幫助,不斷提高自己的能力。
- 通過開源,可以讓自己的代碼有更長(zhǎng)的生命周期。
- 用戶的用法,會(huì)超出我們自己的想象。
- 不要把開源想得太難,寫了軟件,開源了再說。
- 開源項(xiàng)目文檔很重要,尤其是QuickStart。
- 發(fā)展開源社區(qū),一定要把Credit給別人。
- 做開源項(xiàng)目是很好的經(jīng)歷,未來還有商業(yè)機(jī)會(huì)。
- 把東西做好,回報(bào)自然會(huì)來;平常心,享受過程。
大體上,筆者目前深有體會(huì)的是第2點(diǎn)和第8點(diǎn)——一個(gè)著名的開源項(xiàng)目社區(qū)中通常藏龍臥虎,各個(gè)節(jié)點(diǎn)都潛藏諸多高手,即通俗的“大佬”。例如OpenHarmony社區(qū),簡(jiǎn)單分為運(yùn)營(yíng)崗和技術(shù)崗來說:運(yùn)營(yíng)大佬會(huì)高效地組織我們參與社區(qū)活動(dòng)伴隨相應(yīng)的激勵(lì)政策,激發(fā)學(xué)習(xí)熱情,有時(shí)也會(huì)做一些思政工作的指引,個(gè)人成長(zhǎng)的同時(shí)緊跟行業(yè)前沿;技術(shù)大佬則會(huì)提供硬核的技術(shù)指導(dǎo),不厭其煩地為我們排疑解難,在力所能及的范圍內(nèi)給予幫助。其他幾點(diǎn)還需筆者持續(xù)體會(huì)感悟,參與開源社區(qū)的優(yōu)勢(shì)遠(yuǎn)不止于此,能學(xué)到很多平常學(xué)不到的東西,有投入便會(huì)有回報(bào)。
2、 參與開源 擁抱世界
開源是什么
第二項(xiàng)議題是姜寧先生的《參與開源 擁抱世界》。從開源的源頭說起,有三個(gè)重要人物發(fā)起了三項(xiàng)里程碑式事件,分別是Richard Stallman的 “自由軟件運(yùn)動(dòng)” 、Linus Torvalds的 “Linux興起” 、Eric Steven Raymond的 “開源軟件運(yùn)動(dòng)”。


- Richard Stallman早年在MIT的人工智能實(shí)驗(yàn)室已經(jīng)開發(fā)了許多軟件,為了支撐這些項(xiàng)目的發(fā)展,成立了GNU Free Software Foundation(FSF)基金會(huì)并撰寫了被后續(xù)廣泛使用的GPL協(xié)議,倡導(dǎo)學(xué)習(xí)、使用、修改、分發(fā)軟件的自由。
- 1991年Linux項(xiàng)目初版誕生,同樣使用GPL協(xié)議,真正地把開源推動(dòng)了起來。
- Eric Steven Raymond建立了open source initiative組織、發(fā)起了Debian Free Software Guidelines項(xiàng)目,現(xiàn)今的許多Deb系Linux發(fā)行版都基于Debian維護(hù)得到。
Apache軟件基金會(huì)治理架構(gòu)


Apache之道
- 公開透明。
- 精英之治。
- 共同體。
姜寧先生對(duì)Apache的核心理念作了以上三點(diǎn)概括并進(jìn)行了相關(guān)解析。
精英之治
- 根據(jù)提出的最佳方案做決定方式。
- 才能是選擇的唯一標(biāo)準(zhǔn),而非地位、偏見或特權(quán)。
- 把權(quán)力交給那些具體干活的人。
- 功績(jī)定義為實(shí)現(xiàn)項(xiàng)目目標(biāo)所做的有價(jià)值的工作。
- 通過功績(jī)來贏得相應(yīng)的職位。
共同體
- 共同的興趣、愛好。
- 需要有一定的場(chǎng)所進(jìn)行交流。
- 大家扮演不同的角色:用戶、開發(fā)者、布道師。
為什么要加入開源共同體。
- 可以學(xué)習(xí)到平時(shí)書本里學(xué)不到的知識(shí)。
- 可以幫助我們解決工作上的實(shí)際問題。
- 可以和一群志同道合的人一起成長(zhǎng)。
- 可以和世界級(jí)的開發(fā)者一起工作。
- 工作會(huì)被更多人看到。
- 可以找到更好的工作或者更喜歡的工作。
開源共同體固然有許多理由值得我們加入,但姜寧先生強(qiáng)調(diào)到我們不能忽略阻擋自己的惰性,開源社區(qū)里的許多事物都是開放的,我們尤其需要培養(yǎng)自己的好奇心。
培養(yǎng)好奇心
- 好奇心是對(duì)新的事物有興趣,想要探索、研究與學(xué)習(xí)的特質(zhì)。
- 開源世界阻礙成長(zhǎng)的是你的惰性,好奇心會(huì)幫你克服這樣的惰性。
融入開源共同體
- 找到感興趣的項(xiàng)目,培養(yǎng)好奇心。
- 圍觀開源開發(fā)記錄,看問題是如何解決的。
- 參加開源項(xiàng)目實(shí)習(xí)活動(dòng)。
- 找個(gè)項(xiàng)目做貢獻(xiàn)成為committer。
融入集體是最快的進(jìn)步方式,學(xué)習(xí)從來不是單打獨(dú)斗,別人會(huì)犯的錯(cuò)誤,我們通常也會(huì)犯,實(shí)踐出真知,時(shí)間會(huì)給我們答案。
3、 看透開源 玩轉(zhuǎn)開源項(xiàng)目
第三項(xiàng)議題是歐建深先生的《看透開源 玩轉(zhuǎn)開源項(xiàng)目》。首先,歐建深先生把**“開源”**這一概念看作名詞和動(dòng)詞兩條主線來剖析:名詞上理解開源,它是一種軟件技術(shù)的承載方式(解構(gòu)一個(gè)好產(chǎn)品,看優(yōu)質(zhì)技術(shù)哪里拿);動(dòng)詞上理解開源,它是一種構(gòu)建生態(tài)的方式(起浪人如何掀起浪潮)。
開源從來不是一個(gè)單一的概念。英語中有一類詞叫做動(dòng)名詞,其兼有動(dòng)詞和名詞的特征,這使它能夠在多種場(chǎng)合被應(yīng)用,開源與其類似,強(qiáng)調(diào)的更多是全方位的變革。
名詞
看透:找到頂級(jí)開源技術(shù)
如何找到頂級(jí)開源技術(shù)? 歐建深先生為我們指引了明確的路線:
- 從社區(qū)文章開始,邊看文章,邊建立與大家的共同語言。
- 學(xué)術(shù)池探索,隨便看看,大把寶藏。
學(xué)術(shù)研究大概是下圖這樣一個(gè)過程:

其中,綜述類論文是描述邊界的工具,闡述一個(gè)領(lǐng)域最近正在發(fā)生什么事情、進(jìn)行什么動(dòng)作。
那么,綜述既然這么專業(yè),它是誰寫的,在什么情況下寫的呢?其實(shí),它是一些行業(yè)泰斗為了獲得學(xué)術(shù)上的突破而對(duì)本行業(yè)已知研究方向所做的統(tǒng)籌歸納。
從統(tǒng)籌歸納的全局視角結(jié)構(gòu)切入必定比單點(diǎn)突破要有效的多,綜述是學(xué)術(shù)研究開源技術(shù)的正確打開方式,只需加上關(guān)鍵詞A survey of/on。
為了使大家具有一個(gè)更清晰直觀的認(rèn)識(shí),歐建深先生舉了相關(guān)實(shí)例:
分門別類型

這種是對(duì)各種技術(shù)整體架構(gòu)的分類概括,就像高中一些理科學(xué)科的教輔,經(jīng)常會(huì)有一些思維導(dǎo)圖式的框架,一張圖的背后藏著一本書。因此,順著結(jié)構(gòu)圖走,基本上就能把某個(gè)領(lǐng)域的內(nèi)容和研究方向摸透,達(dá)到與學(xué)術(shù)前沿齊平的水平。
結(jié)構(gòu)原理型


這種是講解各個(gè)技術(shù)配件之間是如何配合的,由于硬件或軟件天生的結(jié)構(gòu)特點(diǎn)造成存在某些問題,例如EROFS文件系統(tǒng)為什么要采用改造的固定輸出大小LZ4算法,而不直接采用已有的LZ4,是因?yàn)镕lash的存儲(chǔ)節(jié)點(diǎn)是4k大小的扇區(qū),為了實(shí)現(xiàn)4k對(duì)齊提高存儲(chǔ)利用率,需要對(duì)原本的LZ4進(jìn)行相應(yīng)優(yōu)化。
玩轉(zhuǎn):科研玩成短途旅程
用 “老子到此一游” 的輕松心情,看待復(fù)雜高難度的啃論文。

學(xué)術(shù)研究誠然平淡無味,但以一種“老子到此一游”的心態(tài)來玩,再冷酷無情的科研,也終將轉(zhuǎn)變成輕松愉快的奮斗日記。
沒有一項(xiàng)任務(wù)是輕易就能完成的,與其糾結(jié)工作難不難,不如調(diào)整自己去適應(yīng),這樣,日積月累的過程中,我們也會(huì)慢慢地進(jìn)步與成長(zhǎng)。
動(dòng)詞
數(shù)學(xué)模型中的開源社區(qū)運(yùn)營(yíng)
開源社區(qū)運(yùn)營(yíng)體系中同樣蘊(yùn)涵著數(shù)學(xué)模型的對(duì)應(yīng),歐建深先生用了兩本著作進(jìn)行解析,感興趣的讀者可參考下方相關(guān)鏈接,具體內(nèi)容這里不再展開。



萬物皆數(shù)學(xué),數(shù)學(xué)原理是自然界中潛藏的最大秘密,任何事物都能找到對(duì)應(yīng)的數(shù)學(xué)模型去解釋,搞懂了數(shù)學(xué),就搞懂了萬物。
總結(jié)
我們回顧了活動(dòng)的絕大部分主體分享內(nèi)容,從LVS項(xiàng)目到數(shù)學(xué)模型的應(yīng)用,無不傳達(dá)出巨大的信息量。溫故而知新,筆者自己也有了新的認(rèn)識(shí)。
??想了解更多內(nèi)容,請(qǐng)?jiān)L問:??
??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??

























