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