- 分布式實(shí)時(shí)處理系統(tǒng):原理、架構(gòu)與實(shí)現(xiàn)
- 盧譽(yù)聲
- 3191字
- 2019-01-03 10:50:19
序一
2016年春節(jié)剛過,此時(shí)距離我出版《騰云》已經(jīng)過去三年,而寫作一本技術(shù)書籍的艱辛仍然歷歷在目。我身邊有不少大拿級(jí)別的牛人,不少都被出版社試探過,但真正動(dòng)筆的寥寥可數(shù),主要原因是寫書實(shí)在不是一件吃飯喝酒般輕描淡寫的事情。在被本職工作和家庭瑣事折騰得死去活來(lái)的間隙,強(qiáng)打起精神一磚一瓦地堆砌出幾十萬(wàn)字,想想就讓人卻步,而這個(gè)過程往往歷時(shí)數(shù)月,這意味著你要過上小一年的苦行僧式生活。若不是對(duì)書中主題保持著異乎尋常的興趣和堅(jiān)定不移的信念,一般人不會(huì)輕易開始這段苦旅。正是因?yàn)檫@個(gè)原因,我相信盧譽(yù)聲的這本書一定是個(gè)干貨滿滿的好東西。
優(yōu)秀的技術(shù)書籍都有一個(gè)特點(diǎn),那就是自下而上的闡述方式,從最底層、最實(shí)際的操作層面入手,而不是形而上的口號(hào)式概念,而本書則正是這樣一本書。讀者從第1章就能實(shí)際觸摸到實(shí)操的快感,書中講解了大量實(shí)例,我常說(shuō)“一百字的定義,不如一句話的實(shí)例”,通過這些范例,讀者可以快速獲得感性認(rèn)識(shí),進(jìn)而隨著章節(jié)的推進(jìn)把這些認(rèn)知?dú)w納總結(jié)為自己能夠掌握的方法論。在游泳中學(xué)習(xí)游泳,說(shuō)的就是這種簡(jiǎn)單、實(shí)用的學(xué)習(xí)思路。而考驗(yàn)一個(gè)作者功力的地方,就是他能否針對(duì)每個(gè)關(guān)鍵概念提出恰當(dāng)清晰的例子,并闡述清楚。從我讀到的篇章來(lái)看,盧譽(yù)聲的這個(gè)工作完成得相當(dāng)不錯(cuò)。這樣一本樸實(shí)而扎實(shí)的技術(shù)書籍反映的是作者的態(tài)度,作為讀者,在閱讀過程中我可以感受到字面下作者熱切希望跟廣大同行分享的激情,那種把自己的認(rèn)識(shí)和盤托出的誠(chéng)懇是每一個(gè)癡迷于技術(shù)的工程師都有過的感受,盧譽(yù)聲體會(huì)過,我體會(huì)過,這本書未來(lái)的大多數(shù)讀者都體會(huì)過。正是這種對(duì)技術(shù)的誠(chéng)懇讓我相信本書值得一讀。
回過頭來(lái)我想說(shuō)說(shuō)對(duì)開源的認(rèn)識(shí)。本書由Apache Storm說(shuō)開,Apache Storm作為一個(gè)頂級(jí)開源項(xiàng)目在業(yè)界的影響力無(wú)需多言,為了了解項(xiàng)目的背景,我特意讀了Storm項(xiàng)目的孕育者Nathan Marz的長(zhǎng)文《History of Apache Storm and lessons learned》。我發(fā)現(xiàn),雖然Nathan充分認(rèn)識(shí)到Storm能夠帶來(lái)的商業(yè)潛力(趕在Twitter收購(gòu)前公開展示Storm的效果),但他從來(lái)沒有動(dòng)搖過將這個(gè)項(xiàng)目完全開源的打算,甚至應(yīng)該反過來(lái)說(shuō),他從來(lái)沒想過要將Storm作為一個(gè)私有計(jì)劃保持下去。2011年7月,Nathan所在的BackType正式被Twitter收購(gòu),幾乎毫不猶豫的,他旋即開始著手將Storm開源,這之后便是大家熟悉的故事,Storm以令人炫目的速度吸收開發(fā)者,并在短短三年后,于2014年9月17日正式成為Apache頂級(jí)項(xiàng)目。
為什么會(huì)有開源運(yùn)動(dòng)?這已經(jīng)是一個(gè)無(wú)法再吸引注意力的老舊話題,無(wú)數(shù)人從商業(yè)、技術(shù)、社會(huì)等領(lǐng)域給出了無(wú)數(shù)嚴(yán)密的解答,但我們真的從心里認(rèn)可這種行為了嗎?特別是在國(guó)內(nèi)的商業(yè)環(huán)境下,廣大工程師每天享受開源項(xiàng)目的成果之余,真的理解開源運(yùn)動(dòng)的深意了嗎?至少對(duì)我來(lái)說(shuō),花了很長(zhǎng)一段時(shí)間才得出能夠說(shuō)服自己的解釋。
第一個(gè)我無(wú)法理解的現(xiàn)象就是,開源并沒有帶來(lái)可量化的商業(yè)價(jià)值。作為開源世界的老大哥,Red Hat的管理層向股東保證在2016財(cái)年達(dá)到20億美元銷售額,此時(shí)距離Red Hat成立已經(jīng)超過20年。作為對(duì)比,2015財(cái)年Microsoft的銷售額超過930億美元,如果說(shuō)今日的微軟已經(jīng)包括了游戲機(jī)硬件、搜索等與軟件不相關(guān)的業(yè)務(wù),那么另一個(gè)傳統(tǒng)軟件領(lǐng)域的代表Oracle在2015年?duì)I收達(dá)到382億美元,而SAP也有200億美元。這些被嘲笑成“史前恐龍”的傳統(tǒng)軟件廠商在不同場(chǎng)合被描述為落后生產(chǎn)力的代表,它們站在開源潮流的對(duì)立面,出于狹隘的商業(yè)利益,沿著封閉、自我的路線一意孤行。可事實(shí)是,軟件產(chǎn)業(yè)說(shuō)到底同賣手機(jī)、賣汽車一樣,仍然是一門生意,遵循用戶用腳投票的商業(yè)規(guī)律,既然開源這么美好,為什么沒有像蘋果手機(jī)一樣,通過巨大的商業(yè)成功快速顛覆原有模式呢?
另一個(gè)一直以來(lái)我沒想明白的問題是,作為最終用戶的工程師為什么要擁抱開源呢?開源固然可以給程序員帶來(lái)莫大的快感,不管是個(gè)人成就還是物質(zhì)回報(bào),以往依附于大型軟件公司的獨(dú)立程序員現(xiàn)在有機(jī)會(huì)在社區(qū)通過個(gè)人貢獻(xiàn)樹立更大的影響力;可是對(duì)于絕大使用這些產(chǎn)品的工程師來(lái)說(shuō),開源和商業(yè)產(chǎn)品的區(qū)別就沒有那么大了,而使用開源還伴隨著學(xué)習(xí)成本和不穩(wěn)定的后期支持。即使如此,我們周圍抵觸開源的聲音卻越來(lái)越小,即使那些最老資歷、最忠誠(chéng)的Oracle DBA也開始接觸MySQL,很有意思?
把時(shí)間拉回20世紀(jì)90年代,彼時(shí)個(gè)人電腦還是黑科技代表之一,學(xué)校還會(huì)開設(shè)“電腦課”教授基本操作,這類課程中往往很重要的一個(gè)章節(jié)就是“五筆打字”法。打字這個(gè)技巧放在今天幾乎是跟走路、吃飯一樣的基本生存技能,90后一代已經(jīng)很難回憶起來(lái)自己是在哪個(gè)時(shí)刻“學(xué)”會(huì)了打字,大多數(shù)都是自然而然在日常生活中磨練出來(lái)的。20年前的一門專業(yè)技巧現(xiàn)在已經(jīng)完全融入大眾生活,這其中蘊(yùn)含了一個(gè)有意思的規(guī)律,即任何一種技能都會(huì)隨著時(shí)間的推移失去門檻,同時(shí)在這個(gè)過程中經(jīng)過無(wú)數(shù)人的實(shí)踐和磨練,這項(xiàng)技能已經(jīng)進(jìn)化出一套最有效率的模式,后來(lái)者可以跳過探索、試驗(yàn)的過程,用最短的時(shí)間直接掌握這套模式就能實(shí)現(xiàn)之前高手級(jí)別才能達(dá)到的效果。在打字這個(gè)例子中,對(duì)于中國(guó)人來(lái)說(shuō)目前在高效與易學(xué)間取得最佳平衡的是具備聯(lián)想功能的拼音輸入法,因此年輕的電腦用戶只需聽從朋友推薦下載正確的軟件,兩三天內(nèi)就能練就足夠應(yīng)付日常交流的打字能力。
如果把視線拉遠(yuǎn),欣欣向榮的新型操作系統(tǒng)和數(shù)據(jù)庫(kù)正是這種技能門檻不斷拉低的現(xiàn)象在軟件領(lǐng)域的投射。操作系統(tǒng)、大型數(shù)據(jù)庫(kù)這些領(lǐng)域在20世紀(jì)90年代是皇冠頂上的寶石,全世界也只有那么一小簇頂尖專家能夠弄明白其中的奧妙,而時(shí)間過去20年,Microsoft們已經(jīng)培養(yǎng)出一大群熟悉這些大型系統(tǒng)的專家,人力門檻不復(fù)存在,而搭建一個(gè)操作系統(tǒng)或數(shù)據(jù)庫(kù)的基本方法論現(xiàn)在已經(jīng)非常成熟,因此開發(fā)操作系統(tǒng)不再有那么耀眼的光環(huán),越來(lái)越多的政府機(jī)構(gòu)、企業(yè)、科研機(jī)構(gòu)甚至個(gè)人進(jìn)入這個(gè)領(lǐng)域,并且取得不錯(cuò)的成果。這完全是因?yàn)樽畛醯哪且慌⒁呀?jīng)填平了這條路上的大坑,并將他們提煉出來(lái)的最優(yōu)方法論形成“可復(fù)制的經(jīng)驗(yàn)”,而后來(lái)人能夠直接利用這些“可復(fù)制的經(jīng)驗(yàn)”,快速經(jīng)過基礎(chǔ)知識(shí)積累階段,直接針對(duì)當(dāng)下的難點(diǎn)攻堅(jiān),從而令一些出色的后來(lái)者能夠進(jìn)一步推高整個(gè)領(lǐng)域的高度。
在沒有開源運(yùn)動(dòng)的時(shí)代,“可復(fù)制的經(jīng)驗(yàn)”的傳承是受到嚴(yán)格限制的,要么在企業(yè)內(nèi)部形成專利,只有技術(shù)團(tuán)隊(duì)的核心成員能夠接觸到,要么在科研機(jī)構(gòu)的高墻后,少部分有能力進(jìn)入高墻后的精英得以一窺究竟。開源幾乎是以幾何倍數(shù)放大了“可復(fù)制的經(jīng)驗(yàn)”的傳播速度,這種方式在技術(shù)領(lǐng)域帶來(lái)的后果是極大地加快了技術(shù)本身的演進(jìn),這很好理解,因?yàn)閰⑴c的人多了,眾人拾柴火焰高,自然比小團(tuán)體的做法有效率。而在商業(yè)領(lǐng)域,開源則令資源配置更有效率,開源行為本身會(huì)大量產(chǎn)生“可復(fù)制的經(jīng)驗(yàn)”,從而反過來(lái)進(jìn)一步拉低特定技術(shù)領(lǐng)域的門檻,加速技術(shù)的演進(jìn),企業(yè)的決策者發(fā)現(xiàn)新技術(shù)的成熟速度大大加快,因此他們必須更加積極地把資源配置到更前沿的領(lǐng)域以保持競(jìng)爭(zhēng)力。回到Red Hat的例子,雖然這家公司本身的銷售額永遠(yuǎn)不可能達(dá)到Microsoft或Oracle的高度,但Red Hat以遠(yuǎn)比Microsoft小得多的規(guī)模提供了一個(gè)同樣可靠并更加靈活的操作系統(tǒng),為整個(gè)行業(yè)釋放出大量?jī)?yōu)秀工程師資源,這些人才將進(jìn)入云計(jì)算、大數(shù)據(jù)等新興行業(yè),在新的山頭攻堅(jiān)。如果沒有Red Hat這樣的企業(yè)以最有效率的方式為行業(yè)提供基礎(chǔ)設(shè)施,新的技術(shù)領(lǐng)域很難建立足夠的人才隊(duì)伍,整個(gè)行業(yè)的發(fā)展速度也會(huì)緩慢下來(lái)。因此,我們不能只看Red Hat的銷售額,還應(yīng)該看看AWS、Salesforce這樣的新興玩家,正是因?yàn)橛辛薘ed Hat,才有后者的高速發(fā)展。對(duì)于個(gè)人而言,這種大趨勢(shì)是不可阻擋的,聰明的老專家們自然會(huì)即時(shí)調(diào)整方向,擁抱開源。
開源運(yùn)動(dòng)近年來(lái)已經(jīng)逐漸突破計(jì)算機(jī)軟件領(lǐng)域,開始向其他行業(yè)擴(kuò)展,例如開源服務(wù)器硬件、開源網(wǎng)絡(luò)設(shè)備,甚至開源的IT管理流程。說(shuō)白了,開源是一種新時(shí)代的知識(shí)傳承模式,未來(lái)的世界將處處開源,競(jìng)爭(zhēng)的壁壘將體現(xiàn)在高效協(xié)調(diào)資源的能力,而不是對(duì)特定知識(shí)的獨(dú)占。當(dāng)我知道盧譽(yù)聲將把書中提到的Hurricane完全開源時(shí),我非常贊同他的做法。因?yàn)檫@個(gè)動(dòng)作,本書不僅僅是一部講授代碼編寫的書籍,還是一個(gè)開源社區(qū)的星星火種,我特別推薦所有對(duì)實(shí)時(shí)大數(shù)據(jù)分析感興趣的同業(yè)中人閱讀此書,并以此作為邁入下一個(gè)開源大時(shí)代的第一步。
- Getting Started with oVirt 3.3
- Hands-On DevOps with Vagrant
- VMware Horizon View 6 Desktop Virtualization Cookbook
- Linux網(wǎng)絡(luò)內(nèi)核分析與開發(fā)
- 混沌工程:復(fù)雜系統(tǒng)韌性實(shí)現(xiàn)之道
- Linux就該這么學(xué)
- Windows Phone 8 Application Development Essentials
- Windows Server 2019 Administration Fundamentals
- Windows 7中文版從入門到精通(修訂版)
- 無(wú)蘋果不生活 The New iPad隨身寶典
- Windows Server 2012網(wǎng)絡(luò)操作系統(tǒng)項(xiàng)目教程(第4版)
- Hands-On GPU Programming with Python and CUDA
- Linux應(yīng)用大全 基礎(chǔ)與管理
- 鴻蒙HarmonyOS手機(jī)應(yīng)用開發(fā)實(shí)戰(zhàn)
- Raspberry Pi入門指南