序一
在計算機技術日新月異的今天,層出不窮的新技術推動了生產力的發展,也推動了整個社會的進步。軟件架構從單體架構到分布式架構,從SOA架構到微服務架構,再到服務網格。數據庫從Oracle包打天下到MySQL大行其道,再到內存數據庫、NoSQL數據庫遍地開花。容器編排調度技術從Mesos、Swarm、Kubernetes三足鼎立,到終Kubernetes一統天下。“工欲善其事,必先利其器。”在互聯網轉型的大潮中,需要在思想、方法、技術等方面全面轉型。互聯網架構的高可靠、高並發、高擴展與低耦合,共同創造了互聯網應用的無限可能。
微服務的核心思想是將整個繫統拆分為多個相互獨立的業務,各模塊可以獨立地開發、測試、部署、運行和運維。這種低耦合、高內聚的靈活特性正是所有架構設計人員所期盼的。因此,微服務架構在短時間內便得到大型互聯網企業的青睞,成為打造復雜互聯網應用的一把利器。Kubernetes作為目前主流的容器編排調度平臺,從新生事物逐漸發展成為影響全球IT技術的基礎設施平臺,更推動了微服務架構、雲原生應用、服務網格等熱門技術的普及和落地。
本書內容循序漸進,概念清晰明了,由淺入深,從易到難,為讀者呈現了一幅包括微服務、容器化及技術實踐在內的全景圖。本書融合了作者在企業推廣實施微服務的諸多經驗,不但理論架構完整,而且包含典型的實踐案例。
目前,大數據、雲計算、物聯網、人工智能、區塊鏈等技術遍地開花,借助5G技術的翅膀,我們定能展翅翱翔!
黃文良
中國聯通集團首席業務創新官 電子商務中心總經理
序二
不斷增長的用戶訪問量,快速多變的業務需求,隨之帶來的資源高效利用和敏捷開發迭代需求,對於開發人員和運維人員來說都是新的挑戰。為了解決應用快速部署、資源彈性使用問題,容器化和微服務等新技術正在不斷深入人心。Docker容器技術、Google的Kubernetes和Mesosphere的Mesos等分布式互聯網架構技術應運而生並日益成熟。DevOps理念正在不斷得到業界認同和落地實踐。
本書作者尹為強是我多年的老同事,是一位多年來潛心研究互聯網架構新技術的資深研發工程師,在雲化架構、容器化微服務等方面有獨特的見解和心得體會,並在實際生產繫統中得到了成功的應用。現在他利用業餘時間將工作中形成的寶貴經驗彙集成冊同大家分享,可以使有志學習容器化和微服務方面的技術愛好者少走彎路,這是一件值得慶賀的好事。
本書有兩大特點:一是理論知識論述深入淺出、通俗易懂;二是內容基於作者在設計互聯網億級用戶的高並發、分布式架構平臺過程中的實際經驗和深刻總結。每個關鍵知識點都並非紙上談兵,而是有詳細的實操案例,具有很強的實戰指導意義。在實際開發工作中,人們經常遇到諸多挑戰,如開發環境和生產環境保持一致、大規模應用的快速部署、服務平滑升級、應用的微服務化拆分、微服務編排和自動擴縮容、資源的彈性使用、容器化集群的高效管理等。通過閱讀本書,人們可以很好地應對這些挑戰。本書可以作為初級和中級開發人員、架構師、技術經理等人員的學習參考書。
趙錫成
中國聯通集團電子商務中心軟件開發部總監
前言
微服務的概念早是在2011年5月的軟件架構會議上提出的,Martin Fowler於2014年全面闡釋了微服務架構。Docker作為一種容器化技術誕生於2013年的開源項目,如今,Docker已經成為容器技術領域的領頭羊。Kubernetes這個名字起源於古希臘,是舵手、羅盤的意思。Google於2014年6月推出Kubernetes(Borg 的開源版本),並於2015年7月推出Kubernetes v1.0版本。微服務、Docker和Kubernetes涵蓋了繫統開發、運行環境與編排調度技術,是目前分布式繫統架構中主流的技術棧。
為什麼寫本書
如今,無論是開發人員、運維人員還是技術管理者,言繫統架構必談微服務和容器化,必談分布式和互聯網架構。但是對於大多數IT從業者來說,微服務、容器化、Kubernetes等涉及很多新技術,如果完全摸索著去學習,無形中會增加學習時間,並延長繫統的新架構改造周期,而且其他人遇到的問題還要重新解決。
筆者也曾遇到相同的問題,微服務、容器化和Kubernetes相關技術棧過於龐大,在自行摸索過程中,由於主機環境、軟件版本、參數配置、網絡模式等存在一定的差異,所以其他人分享的經驗無法復用。筆者在進行訂單繫統進行微服務、容器化的新架構開發和升級過程中,總結和提煉了一些經驗與注意事項,將這些內容加以整理並固化形成本書,希望對讀者的實踐有所幫助。
對於微服務開發工程師、容器化和Kubernetes運維工程師、繫統架構師、技術管理者等來說,本書不但能夠引導他們少走彎路,而且能夠給予他們繫統架構、技術棧選型等方面的參考。閱讀本書,讀者能夠使單體架構的繫統簡單快捷地進行微服務容器化的架構升級,從而使新項目能夠基於微服務容器化的新架構迅速地開發、部署和運維。
本書主要內容
本書共包括10章,以微服務、容器化、Kubernetes、Rancher等的概念、解決方案及生產實踐操作為基礎和主線,進行了易於理解和上手操作的講解。
第1章至第3章主要圍繞微服務開發展開:從單體架構和微服務架構的特點、兩者之間的差異開始,介紹了如何拆分微服務;然後介紹微服務開發的技術框架選型,以及微服務開發中的代碼編寫;後介紹了微服務運行的3種運行環境,以及每種運行環境如何配置參數等。
第4章主要圍繞微服務的容器化部署和生產展開:詳細介紹在離線的生產環境內網中,如何快速、便捷地部署和管理Kubernetes集群,如何創建安全的數字證書,以及如何創建私有鏡像倉庫等。
第5章至第7章主要圍繞微服務間的調用展開:首先介紹了基於ELK組件的日志采集模型及其在生產中的應用;然後介紹了微服務間調用鏈的概念、調用鏈模型及調用鏈的動態跟蹤;後介紹了服務間調用的熔斷器,為服務調用提供一種穩定、可靠的容錯和自保護機制。
第8章主要圍繞微服務到容器化的生產構建展開:從精簡、安全、標準化的基礎鏡像構建到業務鏡像構建,再到生產環境中服務編排及特定服務涉及的目錄掛載、環境變量設置等。
第9章和第10章主要圍繞繫統監控、持續集成部署展開:介紹了繫統監控的類型、範圍,以及Exporter Prometheus Grafana的監控模型體繫。繫統持續集成部署部分涉及基於Jenkins的自動編譯、打包、部署的概念和生產實踐。
致謝
首先要感謝我的家人給予我的理解和堅定支持。特別感謝我的妻子,她的理解、包容和支持使我能夠全身心投入書稿的編寫工作。
同時,衷心感謝電子工業出版社博文視點的宋亞東為我耐心講解書籍出版要求以及書稿編寫的注意事項,並且基於作者的角度提供了諸多幫助,盡量減輕作者工作量。他工作嚴謹,技術理解深刻,對書稿質量把控嚴格,還多次邀請專家對本書提出有益意見,對本書的修改和完善起到了重要作用。
由於作者水平有限,書中難免存在不足之處,敬請廣大讀者批評指正。
尹為強