關(guān)于我們
書(shū)單推薦
新書(shū)推薦
|
云原生模式(博文視點(diǎn)出品) 擁抱“云”,更多指的是如何設(shè)計(jì)你的應(yīng)用程序,而不是你在哪里部署它們。本書(shū)是一本架構(gòu)指南,指導(dǎo)你如何讓?xiě)?yīng)用程序在動(dòng)態(tài)的、分布式的、虛擬的云世界中茁壯成長(zhǎng)。本書(shū)介紹了云原生應(yīng)用程序的多種思維模型,以及支持其構(gòu)建的模式、實(shí)踐和工具,同時(shí)提供了一些實(shí)際案例和專(zhuān)家建議,幫助你更好地開(kāi)發(fā)和使用應(yīng)用程序、數(shù)據(jù)、服務(wù)、路由等。本書(shū)分為兩部分。第 1 部分定義了云原生的上下文環(huán)境,并展示了軟件部署環(huán)境的特點(diǎn)。第2 部分深入探討了云原生模式,包括請(qǐng)求 / 響應(yīng)、事件驅(qū)動(dòng)、斷路器等。無(wú)論你是否有云原生的開(kāi)發(fā)經(jīng)驗(yàn),通過(guò)本書(shū)提供的眾多模式,一定可以更好地理解和掌握云原生開(kāi)發(fā)。 適讀人群 :那些需要Java或類(lèi)似語(yǔ)言的中級(jí)編程技能的,或是需要一些服務(wù)器端開(kāi)發(fā)經(jīng)驗(yàn)的人。 云平臺(tái)帶來(lái)了強(qiáng)大的功能:幾乎不存在停機(jī)時(shí)間、無(wú)限的可伸縮性、反饋周期短、高容錯(cuò)性及成本可控。但是如何使用這些功能呢?通過(guò)采用云原生設(shè)計(jì),開(kāi)發(fā)人員可以構(gòu)建具有彈性、高可適應(yīng)性的大規(guī)模分布式應(yīng)用程序,從而處理大量的用戶(hù)流量和數(shù)據(jù)負(fù)載。通過(guò)學(xué)習(xí)這些基本模式和實(shí)踐,你可以在動(dòng)態(tài)的、分布式的、虛擬的云計(jì)算世界中茁壯成長(zhǎng)。 Comelia Davis擁有三十年相關(guān)開(kāi)發(fā)經(jīng)驗(yàn),她將向你介紹云原生應(yīng)用程序獨(dú)特的實(shí)踐方式和應(yīng)用模式。通過(guò)介紹應(yīng)用程序、數(shù)據(jù)、服務(wù)、路由等問(wèn)題的實(shí)際案例和專(zhuān)家建議,她會(huì)向你展示如何在現(xiàn)代云平臺(tái)上設(shè)計(jì)和構(gòu)建運(yùn)行良好的軟件。當(dāng)你閱讀本書(shū)時(shí),你將開(kāi)始意識(shí)到,云原生計(jì)算更多是關(guān)于如何做和為什么這樣做的,而不是在哪里進(jìn)行計(jì)算。本書(shū)包括: · 云原生應(yīng)用程序的生命周期 · 云計(jì)算的配置管理 · 零停機(jī)時(shí)間升級(jí)、版本化服務(wù)和并行部署 · 服務(wù)發(fā)現(xiàn)和動(dòng)態(tài)路由 · 如何管理服務(wù)之間的交互,包括重試和斷路器 譯者序 當(dāng)我們討論云原生時(shí),究竟在討論什么?這些年來(lái)我一直在思索這個(gè)問(wèn)題,大家的觀(guān)點(diǎn)可能不盡相同。三年前從我翻譯了第一本云原生領(lǐng)域的圖書(shū)開(kāi)始,陸續(xù)參與翻譯和創(chuàng)作了一系列云原生作品,同時(shí)通過(guò)對(duì)云原生領(lǐng)域的開(kāi)源項(xiàng)目、社區(qū)、基金會(huì)、應(yīng)用云化過(guò)程的參與和觀(guān)察,我得出了下面的結(jié)論 :云原生是一種行為方式和設(shè)計(jì)理念,究其本質(zhì),凡是能夠提高云上資源利用率和應(yīng)用交付效率的行為或方式都是云原生的。云計(jì)算的發(fā)展史就是一部云原生化的歷史。云原生是云計(jì)算適應(yīng)社會(huì)分工的必然結(jié)果,將系統(tǒng)資源、底層基礎(chǔ)設(shè)施和應(yīng)用編排交由云平臺(tái)管理,讓 開(kāi)發(fā)者專(zhuān)注于業(yè)務(wù)邏輯,這不正是云計(jì)算長(zhǎng)久以來(lái)孜孜以求的嗎?云原生應(yīng)用追求的是快速構(gòu)建高容錯(cuò)性、彈性的分布式應(yīng)用,追求極致的研發(fā)效率和友好的上線(xiàn)與運(yùn)維體驗(yàn),隨之云原生的理念應(yīng)運(yùn)而生,它們天生適合部署在云上,可以最大限度地利用云計(jì)算帶來(lái)的紅利。 在此之前我曾翻譯過(guò)幾本云原生主題的圖書(shū),其中 Cloud Native Go 的作者 Kevin Hoffman,《云原生 Java》的作者 Josh Long,他們都來(lái)自 Pivotal 或曾在Pivotal 工作多年,當(dāng)看到此書(shū)時(shí),我驚奇地發(fā)現(xiàn),作者 Cornelia Davis 同樣來(lái)自這家公司,Pivotal 真可謂是云原生的“黃埔軍校”。此書(shū)的內(nèi)容跟以往的云原生圖書(shū)有所不同,對(duì)于模式的梳理標(biāo)新立異,因此我立即聯(lián)系了電子工業(yè)出版社的張春雨編輯。經(jīng)他了解到張若飛正在翻譯此書(shū),此前我與他合作翻譯了《云原生 Java》,本書(shū)算是我跟他的第二次合作,他翻譯圖書(shū)的精準(zhǔn)和高效著實(shí)讓我佩服,我們各自 翻譯了本書(shū)一半的內(nèi)容。 人人都在討論云原生,但是究竟如何實(shí)現(xiàn)卻莫衷一是。本書(shū)主要關(guān)注的是云原生應(yīng)用的數(shù)據(jù)、服務(wù)與交互,即應(yīng)用層面的設(shè)計(jì)模式,這些模式穿插于本書(shū)第 2 部分的各個(gè)章節(jié)中,基本覆蓋了云原生應(yīng)用的各個(gè)方面,并將理論與實(shí)踐結(jié)合,帶領(lǐng)讀者使用 Java 實(shí)現(xiàn)了一個(gè)云原生應(yīng)用。 同時(shí)還要感謝 ServiceMesher 社區(qū)、云原生社區(qū)的成員及志愿者們對(duì)于云原生在中國(guó)的發(fā)展做出的貢獻(xiàn),你們的鼓勵(lì)和支持是我在云原生領(lǐng)域不斷努力和探索的動(dòng)力。本書(shū)的翻譯難免有一些紕漏,還望讀者指正。 宋凈超 2020 年 7 月 4 日于北京 序 六年來(lái),我有幸與 Nicole Forsgren 和 Jez Humble 合作編寫(xiě)了《DevOps 現(xiàn)狀報(bào)告》(State of DevOps Report),該報(bào)告收集了來(lái)自三萬(wàn)多名受訪(fǎng)者的數(shù)據(jù)。這份報(bào)告給我的最大啟示之一就是軟件架構(gòu)的重要性 :高效能團(tuán)隊(duì)的架構(gòu)能夠使開(kāi)發(fā)人員快速、獨(dú)立、安全、可靠地開(kāi)發(fā)、測(cè)試和部署軟件,從而為客戶(hù)不斷創(chuàng)造價(jià)值。 幾十年前,我們可以開(kāi)玩笑地說(shuō),軟件架構(gòu)師只擅長(zhǎng)使用 Visio、繪制 UML 圖表以及制作沒(méi)人看的 PowerPoint 幻燈片,但今非昔比,大量企業(yè)在市場(chǎng)上的成敗取決于它們所開(kāi)發(fā)的軟件。應(yīng)該說(shuō),沒(méi)有什么比它們每天必須使用的架構(gòu)更能影響開(kāi)發(fā)人員的日常工作了。 本書(shū)填補(bǔ)了理論與實(shí)踐之間的一段空白。事實(shí)上,我認(rèn)為只有少數(shù)人可以將它寫(xiě)出來(lái)。Cornelia Davis 是極其合適的人選,她曾在攻讀博士學(xué)位時(shí)學(xué)習(xí)了編程語(yǔ)言,對(duì)函數(shù)式編程和不可變性產(chǎn)生了濃厚的興趣,擁有數(shù)十年大型軟件系統(tǒng)的開(kāi)發(fā)經(jīng)驗(yàn),并且?guī)椭笮蛙浖髽I(yè)獲得過(guò)巨大的成功。 在過(guò)去的五年中,我多次聯(lián)系她尋求幫助和建議,我們經(jīng)常討論有關(guān)諸如CQRS 和事件源模式、LISP 和 Clojure 語(yǔ)言(我最喜歡的編程語(yǔ)言)、命令式編程和狀態(tài)的危險(xiǎn)性,甚至像遞歸這樣簡(jiǎn)單的事情。 本書(shū)的亮點(diǎn)在于 Cornelia 不僅僅從模式入手。她從模式的基本理論開(kāi)始,然后通過(guò)論證(有時(shí)通過(guò)邏輯或者流程圖)來(lái)證明它們的有效性。除了理論本身,她還通過(guò) Java Spring 框架一個(gè)一個(gè)地實(shí)現(xiàn)了這些模式,以便讓你更好地理解這些知識(shí)。 我發(fā)現(xiàn),這本書(shū)兼具娛樂(lè)性和教育性,并且使我對(duì)大量以前只是略知皮毛的知識(shí)有了更深入的了解。我現(xiàn)在致力于通過(guò) Clojure 語(yǔ)言來(lái)實(shí)現(xiàn)她的示例,以證明我可以將這些知識(shí)付諸實(shí)踐。 本書(shū)可能會(huì)讓你聯(lián)系起一些令人感到興奮甚至驚訝的概念。對(duì)我而言,其中一個(gè)概念就是無(wú)論是面向切面的編程(AOP)、Kubernetes 的挎斗(sidecar)模式,還是 Spring Retry 注入,都是為了統(tǒng)一處理橫切關(guān)注點(diǎn)(cross-cutting concerns)。 希望你能像我一樣喜歡這本書(shū)! — Gene Kim,研究員以及 The Phoenix Project、The Devops Handbook 和 Accelerate 的聯(lián)合作者 前言 我的職業(yè)生涯始于圖像處理。我曾在休斯飛機(jī)公司(Hughes Aircraft)的導(dǎo)彈系統(tǒng)部工作,研究紅外圖像處理,處理邊緣檢測(cè)和幀與幀之間的關(guān)聯(lián)。(這些功能在如今的手機(jī)應(yīng)用上無(wú)處不見(jiàn),這都要?dú)w功于 20 世紀(jì) 80 年代的研究。 我們?cè)趫D像處理中常用的計(jì)算之一是標(biāo)準(zhǔn)差。我從來(lái)不羞怯于提出問(wèn)題,而我早年經(jīng)常問(wèn)的一個(gè)問(wèn)題就是關(guān)于標(biāo)準(zhǔn)差的。我的一個(gè)同事總是會(huì)寫(xiě)下標(biāo)準(zhǔn)差的公式。真見(jiàn)鬼,三個(gè)月過(guò)去了,這個(gè)公式我大概已經(jīng)寫(xiě)了六遍。 我真正想問(wèn)的是 :“在這種情況下,標(biāo)準(zhǔn)差究竟意味著什么?”實(shí)際上,標(biāo)準(zhǔn)差是用來(lái)定義什么是“正常的”,這樣我們可以尋找離群值。如果我正在計(jì)算標(biāo)準(zhǔn)差,然后發(fā)現(xiàn)了超出正常值范圍的情況,那么是否表示我的傳感器可能出現(xiàn)了故障,并且我需要舍棄這一幀圖像,還是表示它暴露了潛在敵人的行動(dòng)? 所有這些與云原生有什么關(guān)系?沒(méi)有。但這一切與模式有關(guān)。正如你所見(jiàn),我雖然知道這個(gè)模式(標(biāo)準(zhǔn)差計(jì)算),但是由于當(dāng)時(shí)缺乏經(jīng)驗(yàn),所以不知道何時(shí)以及為什么要使用它。 在本書(shū)中,我將向你介紹云原生應(yīng)用程序的多種架構(gòu)模式,是的,我將向你展示許多的“公式”,但是為了說(shuō)明何時(shí)及為何使用這些模式,我會(huì)在介紹上下文環(huán)境上花費(fèi)更多的時(shí)間。實(shí)際上,模式通常并不那么困難(例如,第 9 章介紹的請(qǐng)求重試模式很容易實(shí)現(xiàn)),困難的是決定何時(shí)應(yīng)用某個(gè)模式,以及如何正確地應(yīng)用該模式。 在應(yīng)用這些模式時(shí),你需要了解很多的上下文環(huán)境,并且坦率地說(shuō),這些環(huán)境有可能很復(fù)雜。 那么上下文環(huán)境是什么呢?從根本上來(lái)說(shuō),它是一個(gè)分布式系統(tǒng)。當(dāng)我三十多年前開(kāi)始工作時(shí),并不認(rèn)識(shí)很多從事分布式系統(tǒng)工作的人,在大學(xué)也沒(méi)有學(xué)過(guò)分布式系統(tǒng)的課程。沒(méi)錯(cuò),雖然人們?cè)谶@個(gè)領(lǐng)域中工作,但說(shuō)實(shí)話(huà),這是一個(gè)非常小的領(lǐng)域。 如今,絕大多數(shù)軟件都是分布式系統(tǒng)。軟件的某些部分在瀏覽器中運(yùn)行,而另一些部分在服務(wù)器上運(yùn)行,或者我敢說(shuō),在一大堆服務(wù)器上運(yùn)行。這些服務(wù)器可能在你公司的數(shù)據(jù)中心運(yùn)行,也可能在俄勒岡州普萊恩維爾的一個(gè)數(shù)據(jù)中心運(yùn)行,或者同時(shí)在兩地運(yùn)行。所有這些都是通過(guò)網(wǎng)絡(luò)(可能是互聯(lián)網(wǎng))進(jìn)行通信的,而且軟件的數(shù)據(jù)也很可能是分布式的。簡(jiǎn)單地說(shuō),云原生軟件是一個(gè)分布式的系統(tǒng)。此外,事情在不斷變化 — 服務(wù)器正在不斷下架,網(wǎng)絡(luò)經(jīng)常中斷(即便是非常短暫的中斷),存儲(chǔ)設(shè)備可能會(huì)在沒(méi)有任何警告的情況下崩潰 — 即使是這樣,我們依然希望軟件能夠繼續(xù)正常運(yùn)行。這是一個(gè)非常具有挑戰(zhàn)性的環(huán)境。 但是這完全是可控制的!本書(shū)的目的就是幫助你理解這種上下文環(huán)境,并為你提供一些工具,讓你成為一名精通云原生的架構(gòu)師和開(kāi)發(fā)人員。 我從來(lái)沒(méi)有像現(xiàn)在這樣感受到如此劇烈的腦力激蕩。這在很大程度上是因?yàn)榧夹g(shù)領(lǐng)域正在發(fā)生重大變化,而云原生就是這個(gè)變化的核心。我絕對(duì)熱愛(ài)我所從事的工作,我希望每個(gè)人,尤其是你,也能像我一樣喜歡編寫(xiě)軟件。這就是我編寫(xiě)這本書(shū)的原因 :我想與你分享整個(gè)行業(yè)正在面臨的那些瘋狂而又酷炫的問(wèn)題,幫助你踏上解決這些問(wèn)題的旅程。我很榮幸有機(jī)會(huì)與你一起踏上云原生之旅,哪怕是在其中扮演一個(gè)小小的配角。 我的云原生之旅始于 2012 年,當(dāng)時(shí)我的老板 Tom Maguire 讓我開(kāi)始研究 PaaS(平臺(tái)即服務(wù))。作為 EMC CTO 辦公室架構(gòu)組的一員,關(guān)注新興技術(shù)對(duì)我們來(lái)說(shuō)并不新鮮 — 但是,這一次終于成功了!我將永遠(yuǎn)感激 Tom 給了我探索的動(dòng)力和空間。 到 2013 年年初,我已經(jīng)學(xué)到了足夠多的東西,預(yù)見(jiàn)到未來(lái)我會(huì)在這個(gè)領(lǐng)域工作,而隨著 Pivotal Software 公司的創(chuàng)立,我有了一個(gè)工作的地方。首先,我要感謝 Elisabeth Hendrickson,感謝她在我還在 EMC 的時(shí)候就邀請(qǐng)我參加 Cloud Foundry會(huì)議,感謝她把我介紹給 James Watters。我經(jīng)常說(shuō),我做過(guò)的最好的職業(yè)選擇是為James 工作。我感謝他給了我很多機(jī)會(huì),感謝他的信任讓我全身心投入工作,感謝與他大量的深度對(duì)話(huà)讓彼此共同理解了什么是云原生,以及感謝我們之間六年的深厚友誼。 我很感恩自從 Pivotal 公司成立我就加入了公司,和這么多聰明、敬業(yè)、善良的同事一起學(xué)習(xí)。我要感謝 Elisabeth Hendrickson、Joshua McKenty、Andrew Clay-Shafer、Scott Yara、Ferran Rodenas、Matt Stine、Ragvender Arni,以及其他許多人(如果我漏掉了任何人,請(qǐng)?jiān)彛⿴椭覍W(xué)習(xí),并與我一起度過(guò)我人生中最美好的六年! 我還要特別感謝 Pivotal 公司,特別是 Ian Andrews 和 Kelly Hall,感謝他們贊助了《云原生基礎(chǔ)》(Cloud-Native Foundations)迷你書(shū)。 我從許多同行那里學(xué)到了很多知識(shí),無(wú)法一一列舉,但是感謝每一個(gè)人。我特別想感謝 Gene Kim。我還記得我們見(jiàn)面的那天晚上(再次感謝 Elisabeth Hendrickson,感謝她促成了我們那次會(huì)面),我立刻意識(shí)到,我們將合作很長(zhǎng)一段時(shí)間。我感謝Gene 給了我在 DevOps 企業(yè)峰會(huì)(DevOps Enterprise Summit)上與他共事的機(jī)會(huì),通過(guò)那次峰會(huì),我認(rèn)識(shí)了許多在不同公司工作的創(chuàng)新 Cornelia Davis 是 Pivotal 公司的技術(shù)副總裁,她負(fù)責(zé)為 Pivotal 公司和 Pivotal 公司的客戶(hù)制定技術(shù)戰(zhàn)略。目前,她正在研究如何將各種云計(jì)算模型(基礎(chǔ)設(shè)施即服務(wù)、應(yīng)用程序即服務(wù)、容器即服務(wù)和函數(shù)即服務(wù) ) 整合到一個(gè)全面的產(chǎn)品中,使 IT 組織能夠在**層面上運(yùn)行。Cornelia 在圖像處理、科學(xué)可視化、分布式系統(tǒng)和 web 應(yīng)用程序架構(gòu),以及云原生平臺(tái)方面有超過(guò) 30 年的經(jīng)驗(yàn)。Cornelia 擁有加州州立大學(xué)北嶺分校的計(jì)算機(jī)科學(xué)本科和碩士學(xué)位,并在印第安納大學(xué)進(jìn)一步研究了計(jì)算機(jī)原理和編程語(yǔ)言。因?yàn)閮?nèi)心一直想當(dāng)一名老師,所以 Cornelia 在過(guò)去的 30 年里,一直致力于開(kāi)發(fā)更好的軟件,以及培養(yǎng)更好的軟件開(kāi)發(fā)人員。空閑的時(shí)候,Cornelia 更喜歡瑜伽鍛煉和烹飪。 張若飛,曾任多家互聯(lián)網(wǎng)金融公司CTO,在宜人貸、雅虎北研、金山云等知名公司擔(dān)任架構(gòu)師。十余年互聯(lián)網(wǎng)研發(fā)及技術(shù)管理經(jīng)驗(yàn),對(duì)搭建海量數(shù)據(jù)、大型分布式系統(tǒng)有豐富經(jīng)驗(yàn)。著有十余本技術(shù)譯著,包括《Grails權(quán)威指南》《給大忙人看的JavaSE 8》《代碼不朽:編寫(xiě)可維護(hù)軟件的十大原則》《面向可伸縮架構(gòu)》《云原生Java》等書(shū),總計(jì)400余萬(wàn)字。 第1部分 云原生上下文
你還可能感興趣
我要評(píng)論
|