《CCF開源高校行第一期》觀后感
??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??
前言
本次《開源高校行第一期》直播活動由CCF主辦、三位業(yè)界開源大咖帶來分享,分別是LVS自由軟件項目創(chuàng)始人章文嵩、2022 Apache軟件基金會董事姜寧、OpenHarmony開源與開發(fā)者運營總監(jiān)歐建深三位先生。而我們有幸作為OpenHarmony成長計劃的學(xué)員參加了本次會議的直播,完會后自覺收獲頗豐,有必要作一個總結(jié)性的梳理思考,因此,希望在投資自己的同時也具有供他人參考的價值。
議題分享
1、 從LVS項目說起與一點開源感悟
The Linux Virtual Server Project
分享會的第一項議題是章文嵩博士的《從LVS項目說起與一點開源感悟》。首先,大部分朋友在日常生活中可能很少聽說過 "LVS" 這個名詞,它是面向服務(wù)器端的一種負(fù)載均衡調(diào)度器,全稱Linux Virtual Server,字面意思即Linux 虛擬服務(wù)器,類似的項目還有Nginx、HAProxy、F5、Keepalived等。其在官網(wǎng)??The Linux Virtual Server Project??中這樣對其說明:Linux 虛擬服務(wù)器是一個高度可擴展和高度可用的服務(wù)器,構(gòu)建在真實服務(wù)器集群上,負(fù)載均衡器在 Linux 操作系統(tǒng)上運行。服務(wù)器集群的架構(gòu)對最終用戶是完全透明的,用戶之間的交互就像一個高性能的虛擬服務(wù)器一樣。我們所熟知的百度、阿里、騰訊、Google、SourceForge等公司網(wǎng)站都有使用到這項技術(shù),典型的場景就是淘寶雙11上百億購物額的訂單量背后的支撐。
筆者以往也對LVS沒有過具體了解,但基于以上分析,建立的初步感知是其思想與磁盤陣列技術(shù)有著大體上的異曲同工之妙。磁盤陣列通常稱作RAID,中文意思是獨立冗余磁盤陣列。RAID可通過軟件或硬件技術(shù)將多個較小的磁盤整合成為一個較大的磁盤設(shè)備,而這個較大的磁盤功能不僅是存儲,還具有數(shù)據(jù)保護功能;LVS是一臺機器做網(wǎng)絡(luò)服務(wù)忙不過來,所以拿一組機器來做,對外仍然相當(dāng)于一臺機器,其logo形象地傳達出了這樣一種特性。
LVS開源經(jīng)過
章文嵩博士風(fēng)趣地闡述了他從大學(xué)本科階段一路走過來的歷程與趣事,以下是簡單的概括:
- 1995年底接觸Linux,主要是玩,后在系統(tǒng)集成中應(yīng)用。
- 1998年5月,LVS第一個版本發(fā)布,Linux kernel 2.0上的一個patch,只支持VS/NAT,實現(xiàn)Round-Robin調(diào)度算法,很簡單。
- 實現(xiàn)了更多的調(diào)度算法,還有bug fix等。
- 1998年11月實現(xiàn)了VS/IPTunneling機制。
- 1999年5月實現(xiàn)了VS/Direct Routing機制,移植到Linux kernel 2.2。
- 更多的人參與LVS項目。
- 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工程師幫忙實現(xiàn)了IPv6支持。
- 2010年2月實現(xiàn)了SCTP傳輸層協(xié)議支持。
- …
LVS也算一個全球協(xié)作的開源項目,匯聚了亞洲、歐洲、澳洲、美洲等全球各地的貢獻者的成果。盡管大多數(shù)貢獻者彼此之間都未曾謀過面,但基于相互的欣賞和共同的熱愛與需求,LVS的能力得到不斷加強,為后續(xù)的廣泛應(yīng)用奠定了堅實的基礎(chǔ),既滿足了當(dāng)代也造福了后世。也許,這就是開源精神核心靈魂之所在吧。
LVS既然有諸多優(yōu)勢,那么它在實際情況中該如何使用呢?
LVS在大型網(wǎng)站的用法
云計算里有兩個叫地域和可用區(qū)的概念:地域是指物理的數(shù)據(jù)中心,資源創(chuàng)建成功后不能更換地域;可用區(qū)(Availability Zone,簡稱AZ)是指在同一地域內(nèi),電力和網(wǎng)絡(luò)互相獨立的物理區(qū)域。同一可用區(qū)內(nèi)實例之間的網(wǎng)絡(luò)延時更小。在同一地域內(nèi)可用區(qū)與可用區(qū)之間內(nèi)網(wǎng)互通,可用區(qū)之間能做到故障隔離。這里引用阿里云的相關(guān)實例供參考:
一個地域范圍內(nèi)通常是3個可用區(qū),相鄰的可用區(qū)之間兩兩相隔大概50-100公里,以應(yīng)對容災(zāi)能力和網(wǎng)絡(luò)延時的要求。
在一個可用區(qū)的結(jié)構(gòu)內(nèi),其最前端是一個超級路由器Router,后端數(shù)據(jù)中心設(shè)置百十臺左右的LVS服務(wù)器,背后再設(shè)置萬臺的Service Endpoint服務(wù)節(jié)點。然后,Router使用ECMP和Equal Cost Multipath算法,對源地址和目標(biāo)地址IP做一個一致性Hash映射,將前端Router投射到后端LVS,以實現(xiàn)更細膩化的服務(wù)。
開源文化
章文嵩博士在阿里就職期間引入開源文化,推動了阿里的發(fā)展進程,2020年阿里發(fā)布了開源10年全景圖:
可見,阿里因開源而受益,同時也提高了阿里的技術(shù)品牌和影響力。
開源在當(dāng)今的商業(yè)服務(wù)中更是達成了三項一致性原則:
- 開源是更高效的開發(fā)模式。
- 開源帶貨是獲客最高效的手段之一。
- 基礎(chǔ)軟件必須開源,不開源客戶不敢用。
因此,對開源項目來說,建立競爭優(yōu)勢,就是要構(gòu)建良好的開源開發(fā)者社區(qū)和開源生態(tài)。
最后,章文嵩博士分享了他對開源的一些感悟。這一部分,前輩一點一滴積攢的經(jīng)歷對我們小生來說是無比珍貴的滋養(yǎng):
- 通過開源,可以得到更多用戶,用戶會幫助測試和反饋,最重要的是收集更多的客戶需求。
- 通過開源,可以得到更多開發(fā)人員和高手的幫助,不斷提高自己的能力。
- 通過開源,可以讓自己的代碼有更長的生命周期。
- 用戶的用法,會超出我們自己的想象。
- 不要把開源想得太難,寫了軟件,開源了再說。
- 開源項目文檔很重要,尤其是QuickStart。
- 發(fā)展開源社區(qū),一定要把Credit給別人。
- 做開源項目是很好的經(jīng)歷,未來還有商業(yè)機會。
- 把東西做好,回報自然會來;平常心,享受過程。
大體上,筆者目前深有體會的是第2點和第8點——一個著名的開源項目社區(qū)中通常藏龍臥虎,各個節(jié)點都潛藏諸多高手,即通俗的“大佬”。例如OpenHarmony社區(qū),簡單分為運營崗和技術(shù)崗來說:運營大佬會高效地組織我們參與社區(qū)活動伴隨相應(yīng)的激勵政策,激發(fā)學(xué)習(xí)熱情,有時也會做一些思政工作的指引,個人成長的同時緊跟行業(yè)前沿;技術(shù)大佬則會提供硬核的技術(shù)指導(dǎo),不厭其煩地為我們排疑解難,在力所能及的范圍內(nèi)給予幫助。其他幾點還需筆者持續(xù)體會感悟,參與開源社區(qū)的優(yōu)勢遠不止于此,能學(xué)到很多平常學(xué)不到的東西,有投入便會有回報。
2、 參與開源 擁抱世界
開源是什么
第二項議題是姜寧先生的《參與開源 擁抱世界》。從開源的源頭說起,有三個重要人物發(fā)起了三項里程碑式事件,分別是Richard Stallman的 “自由軟件運動” 、Linus Torvalds的 “Linux興起” 、Eric Steven Raymond的 “開源軟件運動”。
- Richard Stallman早年在MIT的人工智能實驗室已經(jīng)開發(fā)了許多軟件,為了支撐這些項目的發(fā)展,成立了GNU Free Software Foundation(FSF)基金會并撰寫了被后續(xù)廣泛使用的GPL協(xié)議,倡導(dǎo)學(xué)習(xí)、使用、修改、分發(fā)軟件的自由。
- 1991年Linux項目初版誕生,同樣使用GPL協(xié)議,真正地把開源推動了起來。
- Eric Steven Raymond建立了open source initiative組織、發(fā)起了Debian Free Software Guidelines項目,現(xiàn)今的許多Deb系Linux發(fā)行版都基于Debian維護得到。
Apache軟件基金會治理架構(gòu)
Apache之道
- 公開透明。
- 精英之治。
- 共同體。
姜寧先生對Apache的核心理念作了以上三點概括并進行了相關(guān)解析。
精英之治
- 根據(jù)提出的最佳方案做決定方式。
- 才能是選擇的唯一標(biāo)準(zhǔn),而非地位、偏見或特權(quán)。
- 把權(quán)力交給那些具體干活的人。
- 功績定義為實現(xiàn)項目目標(biāo)所做的有價值的工作。
- 通過功績來贏得相應(yīng)的職位。
共同體
- 共同的興趣、愛好。
- 需要有一定的場所進行交流。
- 大家扮演不同的角色:用戶、開發(fā)者、布道師。
為什么要加入開源共同體。
- 可以學(xué)習(xí)到平時書本里學(xué)不到的知識。
- 可以幫助我們解決工作上的實際問題。
- 可以和一群志同道合的人一起成長。
- 可以和世界級的開發(fā)者一起工作。
- 工作會被更多人看到。
- 可以找到更好的工作或者更喜歡的工作。
開源共同體固然有許多理由值得我們加入,但姜寧先生強調(diào)到我們不能忽略阻擋自己的惰性,開源社區(qū)里的許多事物都是開放的,我們尤其需要培養(yǎng)自己的好奇心。
培養(yǎng)好奇心
- 好奇心是對新的事物有興趣,想要探索、研究與學(xué)習(xí)的特質(zhì)。
- 開源世界阻礙成長的是你的惰性,好奇心會幫你克服這樣的惰性。
融入開源共同體
- 找到感興趣的項目,培養(yǎng)好奇心。
- 圍觀開源開發(fā)記錄,看問題是如何解決的。
- 參加開源項目實習(xí)活動。
- 找個項目做貢獻成為committer。
融入集體是最快的進步方式,學(xué)習(xí)從來不是單打獨斗,別人會犯的錯誤,我們通常也會犯,實踐出真知,時間會給我們答案。
3、 看透開源 玩轉(zhuǎn)開源項目
第三項議題是歐建深先生的《看透開源 玩轉(zhuǎn)開源項目》。首先,歐建深先生把**“開源”**這一概念看作名詞和動詞兩條主線來剖析:名詞上理解開源,它是一種軟件技術(shù)的承載方式(解構(gòu)一個好產(chǎn)品,看優(yōu)質(zhì)技術(shù)哪里拿);動詞上理解開源,它是一種構(gòu)建生態(tài)的方式(起浪人如何掀起浪潮)。
開源從來不是一個單一的概念。英語中有一類詞叫做動名詞,其兼有動詞和名詞的特征,這使它能夠在多種場合被應(yīng)用,開源與其類似,強調(diào)的更多是全方位的變革。
名詞
看透:找到頂級開源技術(shù)
如何找到頂級開源技術(shù)? 歐建深先生為我們指引了明確的路線:
- 從社區(qū)文章開始,邊看文章,邊建立與大家的共同語言。
- 學(xué)術(shù)池探索,隨便看看,大把寶藏。
學(xué)術(shù)研究大概是下圖這樣一個過程:
其中,綜述類論文是描述邊界的工具,闡述一個領(lǐng)域最近正在發(fā)生什么事情、進行什么動作。
那么,綜述既然這么專業(yè),它是誰寫的,在什么情況下寫的呢?其實,它是一些行業(yè)泰斗為了獲得學(xué)術(shù)上的突破而對本行業(yè)已知研究方向所做的統(tǒng)籌歸納。
從統(tǒng)籌歸納的全局視角結(jié)構(gòu)切入必定比單點突破要有效的多,綜述是學(xué)術(shù)研究開源技術(shù)的正確打開方式,只需加上關(guān)鍵詞A survey of/on。
為了使大家具有一個更清晰直觀的認(rèn)識,歐建深先生舉了相關(guān)實例:
分門別類型
這種是對各種技術(shù)整體架構(gòu)的分類概括,就像高中一些理科學(xué)科的教輔,經(jīng)常會有一些思維導(dǎo)圖式的框架,一張圖的背后藏著一本書。因此,順著結(jié)構(gòu)圖走,基本上就能把某個領(lǐng)域的內(nèi)容和研究方向摸透,達到與學(xué)術(shù)前沿齊平的水平。
結(jié)構(gòu)原理型
這種是講解各個技術(shù)配件之間是如何配合的,由于硬件或軟件天生的結(jié)構(gòu)特點造成存在某些問題,例如EROFS文件系統(tǒng)為什么要采用改造的固定輸出大小LZ4算法,而不直接采用已有的LZ4,是因為Flash的存儲節(jié)點是4k大小的扇區(qū),為了實現(xiàn)4k對齊提高存儲利用率,需要對原本的LZ4進行相應(yīng)優(yōu)化。
玩轉(zhuǎn):科研玩成短途旅程
用 “老子到此一游” 的輕松心情,看待復(fù)雜高難度的啃論文。
學(xué)術(shù)研究誠然平淡無味,但以一種“老子到此一游”的心態(tài)來玩,再冷酷無情的科研,也終將轉(zhuǎn)變成輕松愉快的奮斗日記。
沒有一項任務(wù)是輕易就能完成的,與其糾結(jié)工作難不難,不如調(diào)整自己去適應(yīng),這樣,日積月累的過程中,我們也會慢慢地進步與成長。
動詞
數(shù)學(xué)模型中的開源社區(qū)運營
開源社區(qū)運營體系中同樣蘊涵著數(shù)學(xué)模型的對應(yīng),歐建深先生用了兩本著作進行解析,感興趣的讀者可參考下方相關(guān)鏈接,具體內(nèi)容這里不再展開。
萬物皆數(shù)學(xué),數(shù)學(xué)原理是自然界中潛藏的最大秘密,任何事物都能找到對應(yīng)的數(shù)學(xué)模型去解釋,搞懂了數(shù)學(xué),就搞懂了萬物。
總結(jié)
我們回顧了活動的絕大部分主體分享內(nèi)容,從LVS項目到數(shù)學(xué)模型的應(yīng)用,無不傳達出巨大的信息量。溫故而知新,筆者自己也有了新的認(rèn)識。
??51CTO和華為官方合作共建的鴻蒙技術(shù)社區(qū)??