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