輕量級微服務架構(上冊)

輕量級微服務架構(上冊) pdf epub mobi txt 电子书 下载 2025

黃勇 著
圖書標籤:
  • 微服務
  • 架構
  • 輕量級
  • 分布式係統
  • 雲原生
  • Spring Cloud
  • Docker
  • Kubernetes
  • Java
  • 開發實踐
想要找书就要到 求知書站
立刻按 ctrl+D收藏本页
你会得到大惊喜!!
出版社: 电子工业出版社
ISBN:9787121298042
版次:1
商品编码:11972823
品牌:Broadview
包装:平装
开本:16开
出版时间:2016-09-01
用纸:胶版纸
页数:208
正文语种:中文

具体描述

産品特色


編輯推薦

適讀人群 :本書適閤對微服務實踐感興趣,以及想成為微服務架構師的人員閱讀。
  

業內專傢聯閤力薦

讓微服務落地,深入分析踐行微服務的種種要點

深入闡述微服務架構體係的各種實踐

內容簡介

  

本係列從開發與運維兩方麵分彆對微服務架構的實踐過程進行描述,全套分為上下兩冊,上冊偏重於開發,下冊偏重於運維。在上冊中讀者會學習到微服務架構所需的開發技能,包括使用SpringBoot搭建微服務開發框架,使用Node.js搭建微服務網關,使用ZooKeeper實現微服務注冊與發現,使用Docker封裝微服務,使用Jenkins部署微服務。通過閱讀上冊,讀者可輕鬆搭建一款輕量級微服務架構。

《輕量級微服務架構(上冊)》適閤對微服務實踐感興趣,以及想成為微服務架構師的人員閱讀。

作者簡介

黃勇,現任特贊公司 CTO,曾任阿裏巴巴公司係統架構師。對微服務架構與大數據技術有深入研究,具有豐富的網站架構設計經驗與項目管理經驗,擅長敏捷開發模式。國內開源軟件推動者之一,活躍於“開源中國”社區網站,Smart 開源框架創始人,圖書《架構探險:從零開始寫Java Web框架》作者。熱愛技術交流,樂於分享自己的工作經驗與生活感悟。

精彩書評

  

在幾年前我們還在大談SOA架構,而隨著Docker的普及,微服務逐漸成為近年來備受關注的話題,為企業的架構治理帶來瞭新的思路,本書從微服務的理念、開發框架,到微服務網關、注冊與發現、微服務的封裝與部署幾個角度,較為係統地介紹瞭微服務的實踐過程,非常值得大傢參考。

——陳康賢,淘寶技術部技術專傢,《大型分布式網站架構設計與實踐》作者

書中圍繞著如何構建微服務逐漸展開,詳細介紹瞭Spring Boot、Node.js,以及如何使用ZooKeeper進行服務治理,在Docker上部署微服務,等等。通過這本書讀者能夠從零基礎學習如何構建微服務應用,技術涵蓋瞭開發、測試、運維等環節,可見作者技術功力之深厚。我將此書推薦給對微服務感興趣的朋友們,相信你們一定能從書中獲益良多,快速掌握微服務架構!

——黃哲鏗,1藥網技術副總裁,《技術管理之巔》作者

黃勇是InfoQ非常知名的作者,他創作瞭很多優秀的內容,深得社區喜歡。本書以實踐為主,內容涵蓋瞭微服務的整個生態,推薦想轉型微服務架構的同學閱讀!

——郭蕾,InfoQ主編

非常有幸結識瞭黃勇,並拜讀瞭他在微服務方麵的沉澱總結。從這本書的字裏行間,能感受到作者對技術的熱愛和厚積薄發的功力。微服務是當下技術架構的演化方嚮,但並非選用瞭一種框架就有瞭微服務,微服務更多地是工程化的底蘊和架構上的落地。黃勇以嚴謹、認真的筆觸,井井有條地將微服務的每個細節講述清楚並加以落地,實屬難得。希望閱讀本書,能給讀者帶來對微服務全方位的提高。

——韓陸,《Java RESTful Web Service實戰》作者

買書分三種,一種是需要好好瀏覽內容纔決定是否購買;第二種是看作者,隻要是某人寫的就可以買;黃勇的書就是第三種,兼顧瞭前兩種,且內容接地氣,結構安排閤理,所以一定要買!

——紅薯,開源中國創始人

軟件架構的核心是管理復雜度,微服務帶來的模塊化、隔離性無疑是解決這一問題的一劑良藥。但是一提起服務化,我們之前的印象通常是這樣的:開發成本沒有降低,運維成本增加瞭很多,需要部署很多應用,還要引入一係列重量級的中間件。實際上,時至今日,Spring Boot和Docker等技術的興起,已經使得微服務的實施變得更加容易。可惜國內並沒有成體係的資料,講解如何運用這些新技術,來搭建自己的微服務架構。作者勇哥結閤瞭時下熱門的技術,提齣瞭一套行之有效的架構。不但簡單易於落地,而且全麵覆蓋微服務的各個方麵,對於想要實施微服務的企業具有很大參考價值。勇哥是一個資深的blogger,講技術有趣而不失深度。雖然書中內容跨度較大,但是仍然可以在輕鬆愉快的氛圍中完成閱讀。

——黃億華,票牛網架構師,開源爬蟲框架WebMagic作者

It is no surprise that smart developers who have experience building systems at scale are using Spring Boot. Spring Boot makes building production-worthy systems quick and easy. I'm happy to see Leo Huang's book giving a quick look not just at Spring Boot itself but at some of the production-ready features in Spring Boot. Leo has experience building large systems at scale in Alibaba and can appreciate how important it is to build production-ready systems.

——Josh Long Spring Developer Advocate

本書以微服務的生命周期為主綫,係統地介紹瞭微服務技術架構的選型,微服務的開發和測試,基於 Docker 容器的部署,以及基礎設施自動化和持續交付等。圍繞各個環節,給齣瞭技術選型和詳盡的使用說明。對於微服務初學者,是本難得的入門好書。

——李林鋒,華為軟件平颱開放實驗室資深架構師,《分布式服務框架原理與實踐》和《Netty權wei指南》作者

低耦閤、分而治之的思想貫穿人類軟件開發的全部曆史,在目前階段,代錶這種思想熱門的架構方法非微服務莫屬。本書從實踐角度,帶你領略目前構建微服務的幾種主要工具,一窺微服務的個中奧秘。

——李智慧,宅米CTO,《大型網站技術架構:核心原理與案例分析》作者

黃勇老師曾齣品瞭《程序員》之架構技術與實踐的封麵專題,對架構和新技術有著深入的理解和濃厚的興趣。在一年前的麵訪中,就巨細談及瞭貴司的微服務實踐,本書必是一年多來寶貴經驗的總結。同時,在社區和技術大會裏上,微服務話題往往受到熱捧,聚焦實踐的本書,有幫助於將概念化的技術落地,是一本不可多得且適閤國內開發者學習的好書。

——錢曙光,CSDN資深編輯/記者,多年關注互聯網架構領域

SOA從企業級應用到互聯網領域火瞭很多年,曾經是我招聘架構師的必考題目之一,但 SOA在大型係統的落地從來都是高難度動作,令許多架構師欲仙欲死。如今又興起瞭微服務架構,要把SOA進行到底,實現徹底的服務化,從此世間再無係統切分,隻有微服務小而美好。那麼到底如何實現微服務呢?黃老師這本書教我們輕鬆上手,一步步把理想變成現實,體現齣多年實戰派的底蘊,是一本不可多得的武功秘籍,期待下半部早日麵世!

——史海峰,dangdang網架構部總監

近年來,微服務儼然成為行業內廣受關注的熱點。不論是微服務的價值,還是微服務的阻礙,都是行業在架構技術選型中非常關心的前提。除此之外,技術的踐行流程,對現有組織架構、軟件模式的影響,都是決策者不敢忽視的要素。我很慶幸看到,國內能誕生這本微服務領域的巨著。本書從架構發展史的角度,闡述瞭微服務興起的客觀性與必然性;從技術的角度,深入分析瞭踐行微服務的種種要點;更從實踐的角度,通過案例事無巨細地幫助讀者去體會、理解、掌握微服務。實屬嘔心瀝血之作,極力推薦大傢閱讀。

——孫宏亮,DaoCloud技術閤夥人,《Docker源碼分析》作者

黃勇的這本書從微服務實操的角度,通過在微服務架構體係的不同關注點,選擇多樣而務實的技術棧,為大傢全方位地闡述瞭微服務架構體係的各種實踐,對微服務感興趣的同學不容錯過。

——王福強,《Spring揭秘》和《Spring Boot揭秘》作者

微服務架構,雖然誕生時間不長,卻已成為軟件架構領域討論的熱點。微服務的概念看似簡單,但涉及諸多方法論和實踐積纍,這就是為什麼有人說它非常好 但就是“玩不起”。隨著微服務生態係統的日趨完善,微服務架構的討論也從API接口、服務間通信、接口測試、基礎設施自動化等,逐漸擴展到瞭API網關、微服務的注冊與發現、Docker 封裝與部署、持續交付以及運維體係的優化等多方麵。本書結閤作者過去多年的實戰經驗,深入淺齣地梳理瞭微服務構建過程中遇到的諸多挑戰,並給齣瞭切實可行的解決方案(如何使用 Spring Boot 構建服務、使用 ZooKeeper 注冊服務,如何結閤 Docker 封裝服務和發布服務等),是一本能幫助讀者立刻動手、落地微服務的好書。同時,作者從開發和運維兩個角度入手,詳細地剖析瞭微服務實施過程中,如何有效解決“最後一公裏”的部署以及運維難題。縱覽全書,說理清楚,圖文並茂,理論結閤實際,是一本非常用心,又注重實操的好書,對企業的微服務架構實施,具有很大的參考意義,相信企業的架構師、軟件開發人員、運維人員讀完這本書一定會受益匪淺。

——王磊,尚度元科技CTO,《微服務架構與實踐》作者

微服務是近幾年的一大熱點,其模塊化、跨語言和自治隔離等思想,有望大幅降低研發和運維成本。微服務架構,無論對傳統企業,還是互聯網公司,都會有很大影響。黃勇老師結閤瞭Spring Boot、Jenkins 和 Docker等熱點技術,對微服務的整個生命周期做瞭全麵介紹,通俗易懂、深入淺齣,緻力於打造微服務領域實踐,不失為一本好書。

——吳其敏,攜程框架研發部高級總監,開源分布式實時監控係統CAT作者

當今,微服務已經不是概念,而是勢不可擋的潮流,它在大型互聯網電商類企業,已有豐富的實踐,效果很好。但對於其他有誌於嚮微服務架構轉型的技術愛好者,微服務如何落地還存在很多不清楚的地方,本文從細節入手,結閤具體實例,娓娓道來,為大傢提供一個很好的微服務實踐參考,帶領大傢走進微服務之門。

——王慶友,1號店首席架構師,現獨立架構顧問,《架構的本質》作者

軟件開發從來沒有銀彈,微服務也不是。我認為微服務本質上是要解決一個可伸縮性的問題,以應對訪問的增加、業務復雜度的增加和開發團隊人員的增加。黃勇在本書中詳細解釋瞭實踐微服務必須要麵對的架構模式,包括服務注冊與發現、API 網關、以及簡單部署係統的搭建,並輔以樣例代碼,對於正麵臨可伸縮性問題的開發人員有很大的參考價值。

——許曉斌,阿裏巴巴高級技術專傢,《Maven實戰》作者

近年來,軟件開發領域的新思想、新方法、新工具、新實踐層齣不窮。簡直有令人應接不暇、目眩神迷的感覺。要想走齣這團迷霧,微服務是綱,容器化、自動化運維、自動化部署、服務監控與治理等等,都是目。通過閱讀本書,綱舉目張,則一切將盡在掌握!

——莊錶偉,華為內源平颱架構師,《開源思索集》作者

隨著移動互聯網的崛起,Web網關越來越重要,本書從Web網關的視角帶領大傢學習微服務架構。通過本書可以學習到如何使用Spring Boot與Docker等技術構建Web型微服務架構,值得Web開發人員學習。

——張開濤,“開濤的博客”博主

微服務是近幾年在架構方麵比較熱的一個話題,本書從概念到具體的落地,比較係統地介紹瞭微服務從構建到部署等環節的知識和具體方案,是瞭解和學習微服務相關技能的一本好書。

——曾憲傑,美麗聯閤集團副總裁,《大型網站係統與Java中間件實踐》作者

目錄

第1章 微服務架構設計概述
1.1 為什麼需要微服務架構
1.1.1 傳統應用架構的問題
1.1.2 如何解決傳統應用架構的問題
1.1.3 傳統應用架構還有哪些問題
1.2 微服務架構是什麼
1.2.1 微服務架構概念
1.2.2 微服務交付流程
1.2.3 微服務開發規範
1.2.4 微服務架構模式
1.3 微服務架構有哪些特點和挑戰
1.3.1 微服務架構的特點
1.3.2 微服務架構的挑戰
1.4 如何搭建微服務架構
1.4.1 微服務架構圖
1.4.2 微服務技術選型
1.5 本章小結
第2章 微服務開發框架
2.1 Spring Boot 是什麼
2.1.1 Spring Boot的由來
2.1.2 Spring Boot的特性
2.1.3 Spring Boot相關插件
2.1.4 Spring Boot的應用場景
2.2 如何使用Spring Boot框架
2.2.1 搭建Spring Boot開發框架
2.2.2 開發一個簡單的Spring Boot應用程序
2.2.3 運行Spring Boot應用程序
2.3 Spring Boot生産級特性
2.3.1 端點
2.3.2 健康檢查
2.3.3 應用基本信息
2.3.4 跨域
2.3.5 外部配置
2.3.6 遠程監控
2.4 本章小結
第3章 微服務網關
3.1 Node.js是什麼
3.1.1 Node.js快速入門
3.1.2 Node.js應用場景
3.2 如何使用Node.js
3.2.1 安裝Node.js
3.2.2 使用Node.js開發 Web應用
3.2.3 使用Express框架開發Web應用
3.2.4 搭建Node.js集群環境
3.3 使用Node.js搭建微服務網關
3.3.1 什麼是微服務網關
3.3.2 使用Node.js實現反嚮代理
3.4 本章小結
第4章 微服務注冊與發現
4.1 ZooKeeper是什麼
4.1.1 ZooKeeper樹狀模型
4.1.2 ZooKeeper集群結構
4.2 如何使用ZooKeeper
4.2.1 運行ZooKeeper
4.2.2 搭建ZooKeeper集群環境
4.2.3 使用命令行客戶端連接ZooKeeper
4.2.4 使用Java客戶端連接ZooKeeper
4.2.5 使用Node.js客戶端連接ZooKeeper
4.3 實現服務注冊組件
4.3.1 設計服務注冊錶數據結構
4.3.2 搭建應用程序框架
4.3.3 定義服務注冊錶接口
4.3.4 使用ZooKeeper實現服務注冊
4.3.5 服務注冊模式
4.4 實現服務發現組件
4.4.1 定義服務發現策略
4.4.2 搭建應用程序框架
4.4.3 使用Node.js實現服務發現
4.4.4 服務發現優化方案
4.4.5 服務發現模式
4.5 本章小結
第5章 微服務封裝
5.1 Docker是什麼
5.1.1 Docker簡介
5.1.2 虛擬機與Docker對比
5.1.3 Docker的特點
5.1.4 Docker係統架構
5.1.5 安裝Docker
5.2 如何使用Docker
5.2.1 Docker鏡像常用操作
5.2.2 Docker容器常用操作
5.2.3 Docker命令匯總
5.3 手工製作Java鏡像
5.3.1 下載JDK
5.3.2 啓動容器
5.3.3 提交鏡像
5.3.4 驗證鏡像
5.4 使用Dockerfile構建鏡像
5.4.1 瞭解Dockerfile基本結構
5.4.2 使用Dockerfile構建鏡像
5.4.3 Dockerfile指令匯總
5.5 使用Docker Registry管理鏡像
5.5.1 使用Docker Hub
5.5.2 搭建Docker Registry
5.6 Spring Boot與Docker整閤
5.6.1 搭建Spring Boot應用程序框架
5.6.2 為Spring Boot應用添加Dockerfile
5.6.3 使用Maven構建Docker鏡像
5.6.4 啓動Spring Boot的Docker容器
5.6.5 調整Docker容器內存限製
5.7 本章小結
第6章 微服務部署
6.1 Jenkins是什麼
6.1.1 Jenkins簡介
6.1.2 自動化發布平颱
6.1.3 安裝Jenkins
6.2 搭建GitLab版本控製係統
6.2.1 GitLab簡介
6.2.2 安裝GitLab
6.2.3 將代碼推送至GitLab中
6.3 搭建Jenkins持續集成係統
6.3.1 創建構建任務
6.3.2 手工執行構建
6.3.3 自動執行構建
6.4 使用Jenkins實現自動化發布
6.4.1 自動發布jar包
6.4.2 自動發布Docker容器
6.5 本章小結

精彩書摘

序一

微服務,應用開發的新起點

研究現在的軟件體係,不難發現:現在的軟件專傢們仍需要與大量的需求、設計、代碼的細節打交道。齣於項目實施時間、投入資源等方麵的限製,軟件往往以實現若乾具體的用戶功能需求為目標。專傢們沒有時間,也沒有精力去追求軟件的美學目標。日復一日,隨著用戶功能需求的變化,軟件項目成為大量代碼的隨機而無序的堆積,奇醜無比。許多功能成一旦完成項目,就恐避之不及,不願再去碰自己幾個月來夜以繼日的勞動成果。

黃勇的《架構探險:輕量級微服務架構》一書,融閤瞭軟件設計的最新理念,係統性介紹瞭微服務的設計、開發、運維等各方麵,書中不僅僅是技術的描述和講解。看到黃勇在技術方麵這麼多年的不斷積纍和提煉,我很欣慰。

微服務的興起和移動應用的快速發展相對應。移動應用的基本框架是事件和響應,用戶在碎片化的時間和地點,按自己的節奏完成綜閤起來是一個復雜的事情。這不同於傳統軟件,往往是流程和復雜業務驅動的過程和算法。移動計算所需要的跨界溝通和協作,在傳統應用架構中則很難實現,而這恰恰是微服務的優勢所在。微服務從技術的視角,使用各種協議和框架,便於不同開發者軟件碎片之間的協同工作。但是各種軟件交互協議並不稀缺,總是不斷地齣現各種協議的標準。微服務的成功使用,需要注意微服務在軟件重用方麵的能力,正是這種能力,使得微服務的使用更加具有普遍的意義。不同於傳統的構件或服務,微服務的調用參數接口具有更大的融閤性和靈活性。微服務的調用,不需要拘泥於嚴格的數據類型,而是遵循更高層次的語法結構。特彆是應用軟件走嚮人工智能的時代,微服務將更深的演化帶來更智能的微服務對接。微服務對於傳統的過程式軟件,是一個破壞性的改變。這一特徵既給瞭微服務無限的想象空間,也給實施帶來瞭很多挑戰。並不是每個應用,特彆是成熟領域的軟件應用都適閤微服務的改造。但是對於移動應用領域和跨應用跨企業的對接,是一個很必要的選擇。

我早年寫瞭一些關於 SOA 和“麵嚮構件”方麵的東西,有人問我:“SOA和微服務有何差異?”我認為:SOA 的核心還是企業級應用。最大的差異,是微服務對於調用參數的宏定義,語義的適應性,使得微服務的復用性大大提升。比較有意思的是,新的微服務調用參數體係,和普元EOS非常類同,15年前我們就是這樣設計的。微服務是SOA後的一個突破性的東西,不是簡單的落地,SOA 本身也有落地,比如普元的EOS就是SOA落地後的産品。SOA到微服務一方麵是網絡協議的提升,更加適應跨應用跨企業的服務調用。還有人問我:“構件和微服務到底有什麼區彆?”我認為:構件是裝配、開發的視角,一颱機器由一個個構件裝配而成;服務是運行、傳動的視角,能量從活塞到輪胎傳播。微服務用代碼來開發,但微服務可以當成一個構件裝配到應用。兩邊視角不同,但是微服務給瞭軟件模塊更多生命力。構件是靜態的,服務是動態的。

這本書對於微服務架構的介紹非常完整,如果你和你們的企業正在開發移動應用,或者對已有的應用正在規劃架構性的重構,這本書很值得一讀。

黃柳青

序二

微服務,我們如何與你相處

微服務來瞭,有瞭“服務”這兩個字,這注定又是個一說就明白、一舉例就糊塗、一討論就吵架的概念。微服務的齣現有其必然的商業背景和架構哲學,如何更好地認識微服務的內涵、如臂使指地應用微服務架構,還是有著很多挑戰的,這也許就是本書被命名為“架構探險”的原因。

企業數字化轉型驅動架構升級

互聯網經濟深刻改變瞭我們身邊的商業環境,消費者的生活方式日益數字化,人們可以在任何時間、任何地點利用綫上、綫下渠道體驗無縫購物,運用社交媒體錶達自我,企業也在運用多種技術手段,發揮數字化潛力,改善客戶聯係,促進企業業務模式的轉型。Gartner認為,數字化就是把人、事、物和商業聯係起來,建立新的商業模式。未來的企業都將是IT企業,IT將從後颱走嚮前颱,從ERP、CRM等內部流程優化為主的業務,逐步轉嚮內外兼修的模式,從而實現商業創新。

這一變化要求IT架構更加靈活地與上下遊企業協作,更加快速地響應客戶的個性化需求,更加彈性地應對無時不在的客戶請求並提供良好的客戶體驗,同時雲計算、大數據等技術的齣現也為上述改變提供瞭新的技術選擇,我們正麵臨B/S多層架構齣現後新的一次架構升級,而微服務架構就在這個架構升級過程中應運而生。

分而治之的哲學是微服務的理論基礎

把大的問題分解為容易解決的小問題,找到小問題的解決辦法,再來解決大問題,這就是分而治之的哲學。正如萬事萬物由分子、原子組成一樣,軟件也可以分解為基本單元,以這樣的基本單元進行開發、測試、維護,是解決大規模係統建設的思路。分而治之首先要解決如何分的問題,企業軟件的分法應該是以業務驅動的,而不是以技術驅動的,也就是分解為獨立的業務邏輯,而這樣的不可再分的業務邏輯就是微服務。

凡事有一利必有一弊,細分為微服務後,勢必帶來部署、測試、信息集成難度的提高,分而治之除瞭“分”,還需要“治”。傳統恐龍型ERP是一個麵嚮組織的軟件,完備、復雜、響應變化慢,適閤業務穩定的情況,而在數字化時代,客戶個性化的要求讓我們從這種麵嚮組織的軟件逐漸演變為麵嚮個體的軟件。例如,從前的EHR軟件是為人力資源部門服務的,整體開發、整體實施,而現在我們會從個體的角度規劃軟件,可以先從招聘專員開始做一個麵試管理的流程,逐步推齣新的流程,完善現有的流程。這些麵嚮個體的流程就是微應用,企業應用將由無數個微應用組成。微服務則是一個技術概念,能更好地解決微應用的技術實現問題,是一個事物的不同側麵,所謂“橫看成嶺側成峰,遠近高低各不同”,微服務和微應用是事物的一體兩麵。正因為微服務實際就是一個業務邏輯,因此做好微服務需要從微應用的維度考慮,將分解開的邏輯形成一個整體,要從多渠道接入、客戶體驗、數據管理、應用交付、運維全方位的視角考慮,這就是分而治之中實現“治”的體驗,也是微服務架構需要解決的問題。

站在SOA的肩膀上踐行微服務

微服務是一個新概念,但這絕不是一個全新架構,更不是一個包治百病的架構。由於有服務二字,很容易讓人聯想到麵嚮服務架構(SOA),其實微服務架構屬於應用技術架構,和以 B/S 為代錶的三層架構相對應,強調將巨石型應用拆分為由微服務組成的應用,在數據上也視情況從集中的存儲拆解為更小的存儲單元。而SOA屬於企業架構的範疇,從企業架構齣發把業務分解為不同領域的服務,不同物理係統提供不同服務,注重係統之間通過服務互聯互通的規範,對服務如何實現並不關注。因此,麵嚮服務架構的服務應該是一個業務意義的服務,而微服務是係統中的技術服務,更關注服務的實現,雖然提供瞭業務意義的服務,但是不能混為一談。微服務使用也不是無限度的,事實上由於數據一緻性等問題的限製,不能無限度拆分微服務,可以把微服務分為係統對外提供的遠程服務、係統內部的遠程服務和係統內部的本地服務,顯式聲明、明確職責。事實上,在企業架構上使用 SOA 支撐業務,而在應用技術架構上使用微服務架構,是一個閤適的選擇。

黃柳青博士是我和黃勇共同的導師,他在2004年所著的《軟件的涅槃》一書中指齣:“互聯網時代的企業應用定義,正發生革命性的變化…橫嚮的部門互動、實時的企業間互動、多樣的交互渠道、靈活的業務規則,使得原有意義上的獨立應用不復存在…對軟件設計者來說,能直觀地分割並具有最小內部耦閤的軟件結構是簡約之美…美的軟件是軟件企業與軟件開發者的終極目標”,那時候他把這種全新的軟件生産模式稱為“麵嚮構件”。迴頭看來,微服務正是“麵嚮構件”在數字化時代的解讀,用微服務架構實現軟件之美,加速企業數字化轉型。

焦烈焱,普元CTO

前言/序言

微服務是近年來備受關注的話題,它的齣現讓我們想起瞭十年前的 SOA(Service-Oriented Architecture,麵嚮服務架構),但它比傳統的 SOA 更容易理解,也更容易實踐,它將“麵嚮服務”的思想做得更加徹底。

當國外一些知名技術公司成功實踐瞭微服務以後,這股熱潮就吹遍瞭國內的大街小巷,大傢街頭巷尾都在聊微服務,對它眾說紛紜且褒貶不一。有人說它非常好,但就是“玩不起”,為何會這樣呢?

我們不妨帶著這個問題來簡單介紹一下,究竟什麼纔是微服務。

微服務是一種分布式係統架構,它建議我們將業務切分為更加細粒度的服務,並使每個服務的責任單一且可獨立部署,服務內部高內聚,隱含內部細節,服務之間低耦閤,彼此相互隔離。此外,我們根據麵嚮服務的業務領域來建模,對外提供統一的 API 接口。微服務的思想不隻是停留在開發階段,它貫穿於設計、開發、測試、部署、運維等軟件生命周期階段。

可見,我們提到的微服務,實際上是一種架構思想,我們不妨稱它為“微服務架構”。

微服務架構看起來如此之好,我們真的就需要它嗎?

微服務架構建議我們按照業務來切分服務,我們完全可以選擇最閤適的技術來實現具體的服務,隻需確保對外提供的 API 接口保持一緻即可,也就是說,微服務架構使我們技術選型的自由度更加寬廣瞭。既然係統可拆分為多個服務,這樣非常有利於我們對每個服務進行監控,可不斷收集每個服務的性能指標數據,當某個服務齣現性能瓶頸時,會發齣預警,我們可隨時水平地擴展該服務,以支撐更大的流量,而不至於復製整個係統。由於服務之間彼此隔離,相互之間不會産生影響,因此我們可藉助技術的手段來實現自動化部署,這會使我們的部署過程變得更加高效。

其實微服務架構的優點數不勝數,但是大傢可能還是不敢用,因為它對我們的技術要求具有一定的挑戰。比如,我們需要一個自動化部署係統,也需要解決分布式係統帶來的一係列問題,還需要服務之間能做到彼此隔離且互不影響,同時還不能影響通信過程中所帶來的性能開銷。因此很多人認為,隻有大公司或強悍的技術團隊纔能玩得起微服務架構,自己隻能“遠觀”卻不能“近玩”。甚至還有人認為,微服務架構實際上就是以前談論多年而難以落地的 SOA。

實際上,我們認為微服務架構的本質仍然符閤 SOA 思想,隻不過它比 SOA 更容易落地。為瞭證明這件事情,我們經過瞭大量的實踐,藉助瞭許多優秀的開源技術,搭建瞭一款“輕量級微服務架構”。實踐證明,該架構不僅可以適應大中型公司的業務變化,還能滿足中小型公司的快速增長。我們真心地希望這款輕量級微服務架構能夠幫助更多的技術愛好者以及更多的技術團隊,順利地走齣技術睏境,以全新的視角去迎接新的挑戰。

不得不提醒大傢的是:微服務並不是萬靈丹!它不能包治百病,我們更不要為瞭微服務而去微服務。而是需要根據自身的情況,靈活地選擇最閤適的技術,通過技術的手段實現更高的目標。

為什麼寫這本書?

我一直很關注服務化方麵的技術,記得在 2014 年,我偶然發現國外技術博客中有人在寫關於“微服務”方麵的概念與技術。坦白地講,當我第一次看到微服務時,並沒有對它産生濃厚的興趣,我當時認為微服務是笨重的,它和傳統的 SOA 沒有太大的區彆,同樣都是服務化,隻不過微服務更加細粒度而已。直到 Docker 容器技術逐步成熟起來,越來越多的人開始使用Docker 來封裝應用程序,並藉助 Docker 技術讓軟件交付變得更加靈活而高效,這讓我不由地對微服務的未來産生瞭強烈的期待,我堅信微服務將伴隨著 Docker 技術成為未來軟件開發與運維的核心武器。

我開始瘋狂地學習微服務,研究它的各種架構模式與應用領域,開始自己動手做一些練習,並在公司內部大力推廣這種新架構。在實踐中,我獲得瞭一點收獲,曾在一些技術大會與企業內訓中講過微服務的原理與實踐。我發現一個問題,雖然大傢對微服務都非常關注,但往往卻不知應該如何開始,應該使用哪些技術來搭建微服務架構,以及在實踐中應該如何避免掉進坑裏。甚至有些人還認為微服務隻是大公司纔玩得起的東西,因為它需要藉助像 SOA 那樣重量級的基礎設施,需要付齣大量的成本,但收益卻不一定。其實,我想告訴大傢的是,微服務架構並非這樣,它應該是輕量級的,它應該是很容易上手的,它應該是任何公司想用就敢用的。雖然國內外已經有幾本關於微服務方麵的好書瞭,但我仍然希望這本書能為大傢在微服務實踐方麵帶來微薄的價值。

我們可以把微服務架構想象成海麵上的一座冰山,看得見的部分是開發,看不見的部分是運維,一個好的微服務架構需要同時關注開發和運維兩個方麵。本係列書分上下兩冊,上冊偏開發,下冊偏運維。

您適閤看這本書嗎?

如果您還沒聽說過微服務,或者您聽說瞭但不知道它究竟是什麼,或者您正在嘗試微服務的實踐,那麼這本書就非常適閤您。不管您是一名開發人員還是一名運維人員,如果您嚮往成為一名優秀的微服務架構師,那麼這本書更加值得您反復閱讀和實踐。

本書是如何組織的?

第1 章:微服務架構設計概述。

從為什麼需要微服務架構開始講起,接著描述微服務架構是什麼,以及微服務架構有哪些特點,最後以如何搭建微服務架構來結束本章。本章是全書的概述,從一個宏觀的視角來講解微服務,為後續章節搭建瞭一個骨架。

第2 章:微服務開發框架。

本章我們將使用流行的 Spring Boot 來搭建微服務開發框架,對 Spring Boot 是什麼,以及如何使用 Spring Boot 都做瞭描述,此外還對 Spring Boot 的重要産品級特性做瞭相關介紹。通過學習本章,大傢可掌握 Spring Boot 的基本使用方法,並具備開發微服務接口的技能。

第3 章:微服務網關。

本章我們將學習 Node.js 技術,描述 Node.js 是什麼,以及如何使用 Node.js,此外還對Node.js 的重要高級特性做瞭補充。最後我們將使用 Node.js 搭建一個微服務網關基礎框架,後續章節會對此框架進行擴展。

第4 章:微服務注冊與發現。

本章我們將學習 ZooKeeper 框架,從認識 ZooKeeper 開始,到如何使用 ZooKeeper。最後我們將使用 ZooKeeper 實現一個簡單的服務注冊組件,並結閤第3 章中介紹的微服務網關框架,使用 Node.js 實現一個服務發現組件。

第5 章:微服務封裝。

本章我們將學習 Docker 技術,從瞭解 Docker 是什麼開始,到如何使用 Docker,並通過手工和Dockerfile 的方式構建 Docker 鏡像,此外還會介紹 Docker Registry 的使用方法,最後將以 Spring Boot 與 Docker 做一個整閤來結束本章。通過學習本章,大傢可熟練使用 Docker,為後續自動化運維提供基礎。

第6 章:微服務部署。

本章是上冊的最後一章,我們將使用 Gitlab 管理項目源碼,使用 Jenkins 搭建持續集成係統,最後基於 Jenkins + Gitlab + Docker 搭建一款微服務的自動化部署平颱。通過學習本章,大傢可將開發與部署更加高效地銜接起來。

我要緻謝的人

我要把這本書送給我的女兒,雖然她根本就看不懂,因為她隻有三歲。記得在她剛齣生那年,我開始寫技術博客;在她一歲那年,我開始做開源項目;在她兩歲那年,我開始寫自己的第一本書;在她三歲之時,這本書齣版瞭。為瞭自己的事業,我藉用瞭陪伴她成長的時間,這個時間是我這輩子都無法償還給她的,希望她長大後能看到我送給她的這本書,或許她會理解我現在所做的一切。

我最想感謝的人還是我的妻子,她為瞭料理傢務和照顧女兒,選擇放棄自己的事業,全力支持我的事業,這種“放棄自己,成全他人”的精神,我是無法做到的。我有這樣的好妻子,讓我感到無比驕傲,同時我也需要給自己更高的目標,迴報她對我的付齣。

十年前我離開自己的傢鄉,獨自來到上海打拼,這些年很少陪伴在自己父母的身邊,因為工作太忙而遺忘瞭對父母的問候,我很愧疚自己所做的一切。感謝我的父母對我的無私付齣,以及對我事業的認可與鼓勵,希望他們看到這本書後能為我感到高興。

感謝與我一起創業的夥伴們,大傢能在一起共事是一種緣分,他們在工作上給我提供瞭許多幫助,和他們一起工作是我最開心的事情,我也能感受到自己在成長。他們還為本書提供瞭專業的建議,以及為本書提供瞭大量寶貴的實踐經驗。

感謝電子工業齣版社博文視點的陳曉猛編輯,在寫作過程中曉猛多次鼓勵我,他曾說“寫書就是登山”,每當我寫不動瞭,想放棄瞭,他就會鼓勵我“快到山頂瞭”,他無形中成為瞭我的“鼓勵師”,讓我順利地寫完瞭這本書。

感謝為這本書做評審的專傢們,他們的專業態度讓我非常感動。為瞭給讀者提供更多的價值,他們給我提供瞭大量的建議,這些建議對我的幫助非常大,讓我在後續寫作道路上更有經驗瞭。

感謝一直支持我的讀者們,沒有你們一路的陪伴,我會失去寫作的動力和方嚮。

最後我想說的是:我並不是微服務架構專傢,我隻是一名微服務架構的實踐者,隻想把自己實踐的經驗分享給大傢。由於本人學識有限,難免會有不足之處,還請讀者不吝賜教。

黃勇

2016 年7 月27 日於上海


用户评价

评分

喜欢技术,喜欢买书研究技术

评分

看了SmartFramework继续学习

评分

还行吧

评分

没啥好说的,其中一本就是烂了

评分

经典的架构图书,好好学习天天向上

评分

不错不错不错不错不错不错不错

评分

京东,你怎么变成了这样

评分

书有点薄,内容讲得比较少,所以讲得也比较浅

评分

还没有看完,总体感觉不错。

相关图书

本站所有內容均為互聯網搜索引擎提供的公開搜索信息,本站不存儲任何數據與內容,任何內容與數據均與本站無關,如有需要請聯繫相關搜索引擎包括但不限於百度google,bing,sogou

© 2025 tushu.tinynews.org All Rights Reserved. 求知書站 版权所有