商品簡介
作者簡介
序
目次
商品簡介
Spring是一個基於Java平臺的應用程序框架,基於Spring的開發基本已經成為了業界的一種規範。此書將幫助你用Spring框架,Spring Boot,Spring Cloud來實現微服務的架構。本書的這些案例都是基於最新的Spring框架所寫,這樣你會學習到如何編寫一個最新潮,最穩定的基於Java語言的系統。此書開始將一步一步告訴你如何使用Spring來開發微服務,並且深度學習Spring Boot, Spring Cloud, Docker, Mesos, and Marathon各個主流的框架的使用方法,下一步,你會學到如何擴容和縮容你的微服務並教會你如何發佈你的微服務到Docker容器平臺,如何用Marathon和Mesos去管理你的微服務。通過本書的案例,最後,你將會真正的獲得如何開發你自己的微服務並發佈它們到真實的生產平臺。
作者簡介
Rajesh RV是一名經驗豐富的IT架構師,擁有豐富的多元化經驗技術和超過16年的航空IT從業經驗。Rajesh獲得了印度科欽大學的計算機工程學位,他在EJB的早期加入了JEE社區Spring。期間他作為架構師參與了航空領域的許多大型的關鍵任務項目,包括新一代航空客運預訂系統(iFlyRes)和Next下一代航空公司貨運預訂系統(Skychain和CROAMIS)。
目前,Rajesh在阿聯酋(http://www.emirates.com/)擔任首席架構師,專注於許多領域的架構產品解決方案,如JEE、SOA、NoSQL、物聯網、移動、UI、集成等。在阿聯酋,由Rajesh團隊設計的開放旅遊平臺(OTP)贏得了2011年RedHat成本類別的創新獎。2011年,他介紹了Honeycomb的創新概念,是一種基於六邊形架構模式的架構,用於升級和轉化遺留系統架構。
目前,Rajesh在阿聯酋(http://www.emirates.com/)擔任首席架構師,專注於許多領域的架構產品解決方案,如JEE、SOA、NoSQL、物聯網、移動、UI、集成等。在阿聯酋,由Rajesh團隊設計的開放旅遊平臺(OTP)贏得了2011年RedHat成本類別的創新獎。2011年,他介紹了Honeycomb的創新概念,是一種基於六邊形架構模式的架構,用於升級和轉化遺留系統架構。
序
Spring微服務之我見
文彥峰,彭豔飛
微服務正被越來越多的組織和團體關注。微服務架構有很多好處,它通過分解巨大單體式應用為多個服務方法解決了複雜性問題。在功能不變的情況下,應用被分解為多個可管理的分支或服務。每個服務都有一個API定義清楚的邊界。微服務架構模式給採用單體式編碼方式很難實現的功能提供了模塊化的解決方案。由此,單個服務很容易開發、理解和維護。這種架構使得每個服務都可以由專門開發團隊來開發,並且每個微服務都可以獨立部署。
但是,微服務架構也有它的不足。微服務是一個分布式的系統架構,由此會帶來固有的複雜性,開發者需要瞭解RPC或者RESTful接口之間的消息傳遞內容,甚至協議。如果是單體式開發,開發者就不需要過多地關注接口,只需要關注本身的業務內容的開發即可。
在微服務架構應用中,需要更新不同服務所使用的數據庫,甚至是不同的數據庫類型。這就需要我們瞭解分布式事務,或者定義一個最終一致的方法,從而對開發者提出更高的要求和挑戰。
另外一個挑戰在於,微服務架構模式應用的改變將會波及多個服務。例如,完成一個案例,需要修改服務A、B、C,而A依賴B,B依賴C。在單體式應用中,只需要改變相關模塊,整合變化,部署就可以了。相比之下,微服務架構模式就需要考慮相關改變對不同服務的影響。
測試一個基於微服務架構的應用也是很複雜的任務。例如,測試一個單體式Web應用的REST API是很容易的事情;反過來,採用流行的Spring Boot架構,同樣的服務測試需要啟動與其有關的所有服務,這樣就給測試帶來了一定的複雜性。
部署一個微服務應用也很複雜,而一個單體式應用只要簡單地在網關後面部署各自的服務即可。相比之下,一個微服務應用一般由大批服務構成,如果互相依賴,需要全部部署起來,它們才能通信並完結一個業務流程。除此之外,還需要一個服務發現機制,用來發現與其進行通信服務的地址。
本書由淺入深的介紹了基於Spring Boot的微服務開發,可以幫助讀者瞭解Spring Boot、Spring Cloud、Docker、Mesos和Marathon的使用,詳細介紹了Spring Cloud各種能力的實現。同時也講述了微服務的自動化擴縮容,以及服務的日誌記錄和微服務的監控。讀完本書,你能夠很容易的搭建一套基於Spring Boot的微服務系統。
本書的翻譯經歷了很多困難,能夠順利完成,特別需要感謝吳疆、劉子豪、宋達彬、陳燦、葉東林、張凱旋、何文雅等人的大力協助。
前言
微服務是一種架構風格和模式,通過將複雜系統分解成更小的、彼此協同工作的服務,形成大規模的商業服務。微服務是自主的、自包含的和可獨立部署的服務。在當今世界,許多企業構建大型的、面向服務的企業應用程序時,都默認將微服務作為標準。
Spring框架是多年以來開發社區流行的編程框架。Spring Boot取消了重量級的應用容器,並提供了輕量級部署,Serverless架構應用。Spring Cloud結合了許多Netflix OSS組件,並提供了一個生態系統來運行和管理大型微服務。它提供了負載均衡、服務註冊、服務監控、服務網關等能力。
然而,微服務也面臨著許多挑戰,如監控、管理、分發、擴容、服務發現等,特別是在大規模部署的時候。單純使用微服務而不解決這些常見的微服務問題,會導致災難性的後果。這本書最重要的部分是一個與技術無關的微服務能力模型,有助於解決常見的微服務挑戰。
本書的目標是以務實的方式指導讀者實現大規模實施響應式微服務,幫助讀者深入瞭解Spring Boot、Spring Cloud、Docker、Mesos和Marathon。讀者將會理解Spring Boot如何通過去除重量級應用服務器,來實現自主、無須服務器的部署。讀者將學習Spring Cloud各種能力的實現,集裝箱化的Docker、Mesos和Marathon的使用,並學會抽象計算資源和控制集群範圍。
我相信讀者會喜歡這本書的每一章節。本書通過成功構思微服務,可以為你的生意增加巨大的價值。本書通過列舉一些例子來體現微服務的實踐能力,包括一個旅遊領域的研究案例。最後,你將學會如何使用Spring框架、Spring Boot和Spring Cloud實現微服務的體系結構。它們是經過測試的、具有強大功能的工具,可以開發和部署可擴展的微服務。在本書的幫助下,你可以使用Spring的最新規範來構建現代的、互聯網規模的Java應用程序。
章節概要
第1章“解密微服務”,涵蓋了微服務的基本概念、演變過程,以及他們與面向服務的架構的關係,並且介紹了雲原生和十二要素應用程序的概念。
第2章“用Spring Boot構建微服務”,介紹了使用Spring框架構建REST-和基於消息的微服務及如何用Spring Boot包裝它們。另外,我們還將探索Spring Boot的一些核心功能。
第3章“微服務概念的應用”,通過詳細描述開發人員在企業級微服務中所面臨的挑戰,來闡述微服務的實踐性。並且會總結成功管理微服務生態系統所需的能力。
第4章“微服務的演變――一個案例的學習”,通過研究BrownField航空公司的微服務演變案例,向讀者展示如何應用前面章節所學的微服務概念。
第5章“通過Spring Cloud對微服務進行擴(縮)容”,展示了如何使用Spring Cloud堆棧功能擴容之前構建的微服務。本章詳細介紹了Spring Cloud的架構和組件,以及它們是如何整合在一起的。
第6章“自動化擴(縮)容微服務”,演示了使用服務網關和簡單的生命週期管理器,來實現微服務的彈性化和自我管理。本章向讀者展示了在現實世界中,可以讓服務網關變得更加智能化。
第7章“日誌記錄和監控微服務”,涵蓋了日誌在開發和監控微服務中的重要性。在這裡,我們將詳細介紹使用開源工具進行集中式日誌記錄和監控的最佳實踐,以及如何將它們與Spring項目集成。
第8章“用Docker實現容器化微服務”,解釋容器化在微服務環境中的概念。本章通過Mesos和Marathon演示了如何大規模部署微服務,來替換自定義生命週期管理器的實現方式。
第9章“使用Mesos和Marathon管理Dockerized微服務”,介紹了微服務的自動配置和部署。本章你也將學習如何使用Docker容器將前面構建的微服務進行大規模部署。
準備工作
第2章“用Spring Boot構建微服務”,需要下列軟件來運行代碼:
? JDK 1.8
? Spring Tool Suite 3.7.2 (STS)
? Maven 3.3.1
? Spring Framework 4.2.6.RELEASE
? Spring Boot 1.3.5.RELEASE
? spring-boot-cli-1.3.5.RELEASE-bin.zip
? RabbitMQ 3.5.6
? FakeSMTP
第5章“通過Spring Cloud對微服務進行擴(縮)容”,除了上述軟件之外還需要:
? Spring Cloud Brixton.RELEASE
在第7章“日誌記錄和監控微服務”中,我們將介紹集中式日誌如何在微服務中實現,這需要以下軟件堆棧:
? Elasticsearch 1.5.2
? kibana-4.0.2-darwin-x64
? Logstash 2.1.2
第8章“用Docker實現容器化微服務”將演示如何使用Docker進行微服務部署,這需要以下軟件組件:
? Docker version 1.10.1
? Docker Hub
第9章“使用Mesos和Marathon管理Dockerized微服務”使用Mesos和Marathon將Dockerized微服務部署到可自動擴展的雲中。需要使用下列軟件組件:
? Mesos version 0.27.1
? Docker version 1.6.2
? Marathon version 0.15.3
讀者對象
本書主要針對Spring開發人員,他們希望構建互聯網規模應用程序以滿足現代業務需求。本書通過檢驗一些真實的用例和實踐代碼實例,來幫助開發人員瞭解究竟什麼是微服務,以及當今社會微服務為什麼如此重要。開發人員將懂得如何構建簡單的RESTful服務,並將其有機地發展成為真正的企業級微服務生態系統。
對架構師而言,他們使用Spring框架、Spring Boot、Spring Cloud設計強大的互聯網規模微服務,並用Docker、Mesos與Marathon進行管理。當他們需要在這方面尋求幫助時,本書中的能力模型將幫助架構師設計出超出本書所討論的工具和技術的方案。
約定
在本書中,你會發現很多區分多種不同信息的文本樣式。這裡是一些樣式的例子及其解釋。
文本中的代碼、數據庫表名、文件夾名稱、文件名、文件擴展名、路徑名、虛擬URLs、用戶輸入和Twitter句柄等如下所示:
“下列屬性可以在application.properties進行自定義應用程序相關信息。”
代碼塊設置如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.4.RELEASE</version>
</parent>
任何命令行輸入或輸出的寫法如下:
$ java -jar fakeSMTP-2.0.jar
提示和技巧顯示如下:
提示
使用AWS Lambda,研發人員可以將應用託管到雲服務平臺。
下載代碼文件
本書的代碼文件託管在GitHub上,你可以通過https://github.com/369945969/Spring-Microservices下載代碼文件。
文件下載完成後,請確保你的解壓縮或解壓縮
文彥峰,彭豔飛
微服務正被越來越多的組織和團體關注。微服務架構有很多好處,它通過分解巨大單體式應用為多個服務方法解決了複雜性問題。在功能不變的情況下,應用被分解為多個可管理的分支或服務。每個服務都有一個API定義清楚的邊界。微服務架構模式給採用單體式編碼方式很難實現的功能提供了模塊化的解決方案。由此,單個服務很容易開發、理解和維護。這種架構使得每個服務都可以由專門開發團隊來開發,並且每個微服務都可以獨立部署。
但是,微服務架構也有它的不足。微服務是一個分布式的系統架構,由此會帶來固有的複雜性,開發者需要瞭解RPC或者RESTful接口之間的消息傳遞內容,甚至協議。如果是單體式開發,開發者就不需要過多地關注接口,只需要關注本身的業務內容的開發即可。
在微服務架構應用中,需要更新不同服務所使用的數據庫,甚至是不同的數據庫類型。這就需要我們瞭解分布式事務,或者定義一個最終一致的方法,從而對開發者提出更高的要求和挑戰。
另外一個挑戰在於,微服務架構模式應用的改變將會波及多個服務。例如,完成一個案例,需要修改服務A、B、C,而A依賴B,B依賴C。在單體式應用中,只需要改變相關模塊,整合變化,部署就可以了。相比之下,微服務架構模式就需要考慮相關改變對不同服務的影響。
測試一個基於微服務架構的應用也是很複雜的任務。例如,測試一個單體式Web應用的REST API是很容易的事情;反過來,採用流行的Spring Boot架構,同樣的服務測試需要啟動與其有關的所有服務,這樣就給測試帶來了一定的複雜性。
部署一個微服務應用也很複雜,而一個單體式應用只要簡單地在網關後面部署各自的服務即可。相比之下,一個微服務應用一般由大批服務構成,如果互相依賴,需要全部部署起來,它們才能通信並完結一個業務流程。除此之外,還需要一個服務發現機制,用來發現與其進行通信服務的地址。
本書由淺入深的介紹了基於Spring Boot的微服務開發,可以幫助讀者瞭解Spring Boot、Spring Cloud、Docker、Mesos和Marathon的使用,詳細介紹了Spring Cloud各種能力的實現。同時也講述了微服務的自動化擴縮容,以及服務的日誌記錄和微服務的監控。讀完本書,你能夠很容易的搭建一套基於Spring Boot的微服務系統。
本書的翻譯經歷了很多困難,能夠順利完成,特別需要感謝吳疆、劉子豪、宋達彬、陳燦、葉東林、張凱旋、何文雅等人的大力協助。
前言
微服務是一種架構風格和模式,通過將複雜系統分解成更小的、彼此協同工作的服務,形成大規模的商業服務。微服務是自主的、自包含的和可獨立部署的服務。在當今世界,許多企業構建大型的、面向服務的企業應用程序時,都默認將微服務作為標準。
Spring框架是多年以來開發社區流行的編程框架。Spring Boot取消了重量級的應用容器,並提供了輕量級部署,Serverless架構應用。Spring Cloud結合了許多Netflix OSS組件,並提供了一個生態系統來運行和管理大型微服務。它提供了負載均衡、服務註冊、服務監控、服務網關等能力。
然而,微服務也面臨著許多挑戰,如監控、管理、分發、擴容、服務發現等,特別是在大規模部署的時候。單純使用微服務而不解決這些常見的微服務問題,會導致災難性的後果。這本書最重要的部分是一個與技術無關的微服務能力模型,有助於解決常見的微服務挑戰。
本書的目標是以務實的方式指導讀者實現大規模實施響應式微服務,幫助讀者深入瞭解Spring Boot、Spring Cloud、Docker、Mesos和Marathon。讀者將會理解Spring Boot如何通過去除重量級應用服務器,來實現自主、無須服務器的部署。讀者將學習Spring Cloud各種能力的實現,集裝箱化的Docker、Mesos和Marathon的使用,並學會抽象計算資源和控制集群範圍。
我相信讀者會喜歡這本書的每一章節。本書通過成功構思微服務,可以為你的生意增加巨大的價值。本書通過列舉一些例子來體現微服務的實踐能力,包括一個旅遊領域的研究案例。最後,你將學會如何使用Spring框架、Spring Boot和Spring Cloud實現微服務的體系結構。它們是經過測試的、具有強大功能的工具,可以開發和部署可擴展的微服務。在本書的幫助下,你可以使用Spring的最新規範來構建現代的、互聯網規模的Java應用程序。
章節概要
第1章“解密微服務”,涵蓋了微服務的基本概念、演變過程,以及他們與面向服務的架構的關係,並且介紹了雲原生和十二要素應用程序的概念。
第2章“用Spring Boot構建微服務”,介紹了使用Spring框架構建REST-和基於消息的微服務及如何用Spring Boot包裝它們。另外,我們還將探索Spring Boot的一些核心功能。
第3章“微服務概念的應用”,通過詳細描述開發人員在企業級微服務中所面臨的挑戰,來闡述微服務的實踐性。並且會總結成功管理微服務生態系統所需的能力。
第4章“微服務的演變――一個案例的學習”,通過研究BrownField航空公司的微服務演變案例,向讀者展示如何應用前面章節所學的微服務概念。
第5章“通過Spring Cloud對微服務進行擴(縮)容”,展示了如何使用Spring Cloud堆棧功能擴容之前構建的微服務。本章詳細介紹了Spring Cloud的架構和組件,以及它們是如何整合在一起的。
第6章“自動化擴(縮)容微服務”,演示了使用服務網關和簡單的生命週期管理器,來實現微服務的彈性化和自我管理。本章向讀者展示了在現實世界中,可以讓服務網關變得更加智能化。
第7章“日誌記錄和監控微服務”,涵蓋了日誌在開發和監控微服務中的重要性。在這裡,我們將詳細介紹使用開源工具進行集中式日誌記錄和監控的最佳實踐,以及如何將它們與Spring項目集成。
第8章“用Docker實現容器化微服務”,解釋容器化在微服務環境中的概念。本章通過Mesos和Marathon演示了如何大規模部署微服務,來替換自定義生命週期管理器的實現方式。
第9章“使用Mesos和Marathon管理Dockerized微服務”,介紹了微服務的自動配置和部署。本章你也將學習如何使用Docker容器將前面構建的微服務進行大規模部署。
準備工作
第2章“用Spring Boot構建微服務”,需要下列軟件來運行代碼:
? JDK 1.8
? Spring Tool Suite 3.7.2 (STS)
? Maven 3.3.1
? Spring Framework 4.2.6.RELEASE
? Spring Boot 1.3.5.RELEASE
? spring-boot-cli-1.3.5.RELEASE-bin.zip
? RabbitMQ 3.5.6
? FakeSMTP
第5章“通過Spring Cloud對微服務進行擴(縮)容”,除了上述軟件之外還需要:
? Spring Cloud Brixton.RELEASE
在第7章“日誌記錄和監控微服務”中,我們將介紹集中式日誌如何在微服務中實現,這需要以下軟件堆棧:
? Elasticsearch 1.5.2
? kibana-4.0.2-darwin-x64
? Logstash 2.1.2
第8章“用Docker實現容器化微服務”將演示如何使用Docker進行微服務部署,這需要以下軟件組件:
? Docker version 1.10.1
? Docker Hub
第9章“使用Mesos和Marathon管理Dockerized微服務”使用Mesos和Marathon將Dockerized微服務部署到可自動擴展的雲中。需要使用下列軟件組件:
? Mesos version 0.27.1
? Docker version 1.6.2
? Marathon version 0.15.3
讀者對象
本書主要針對Spring開發人員,他們希望構建互聯網規模應用程序以滿足現代業務需求。本書通過檢驗一些真實的用例和實踐代碼實例,來幫助開發人員瞭解究竟什麼是微服務,以及當今社會微服務為什麼如此重要。開發人員將懂得如何構建簡單的RESTful服務,並將其有機地發展成為真正的企業級微服務生態系統。
對架構師而言,他們使用Spring框架、Spring Boot、Spring Cloud設計強大的互聯網規模微服務,並用Docker、Mesos與Marathon進行管理。當他們需要在這方面尋求幫助時,本書中的能力模型將幫助架構師設計出超出本書所討論的工具和技術的方案。
約定
在本書中,你會發現很多區分多種不同信息的文本樣式。這裡是一些樣式的例子及其解釋。
文本中的代碼、數據庫表名、文件夾名稱、文件名、文件擴展名、路徑名、虛擬URLs、用戶輸入和Twitter句柄等如下所示:
“下列屬性可以在application.properties進行自定義應用程序相關信息。”
代碼塊設置如下:
<parent>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-parent</artifactId>
<version>1.3.4.RELEASE</version>
</parent>
任何命令行輸入或輸出的寫法如下:
$ java -jar fakeSMTP-2.0.jar
提示和技巧顯示如下:
提示
使用AWS Lambda,研發人員可以將應用託管到雲服務平臺。
下載代碼文件
本書的代碼文件託管在GitHub上,你可以通過https://github.com/369945969/Spring-Microservices下載代碼文件。
文件下載完成後,請確保你的解壓縮或解壓縮
目次
352 空氣淨化器 :用做奢侈品的態度做必需品 / 058
主題書展
更多
主題書展
更多書展購物須知
大陸出版品因裝訂品質及貨運條件與台灣出版品落差甚大,除封面破損、內頁脫落等較嚴重的狀態,其餘商品將正常出貨。
特別提醒:部分書籍附贈之內容(如音頻mp3或影片dvd等)已無實體光碟提供,需以QR CODE 連結至當地網站註冊“並通過驗證程序”,方可下載使用。
無現貨庫存之簡體書,將向海外調貨:
海外有庫存之書籍,等候約45個工作天;
海外無庫存之書籍,平均作業時間約60個工作天,然不保證確定可調到貨,尚請見諒。
為了保護您的權益,「三民網路書店」提供會員七日商品鑑賞期(收到商品為起始日)。
若要辦理退貨,請在商品鑑賞期內寄回,且商品必須是全新狀態與完整包裝(商品、附件、發票、隨貨贈品等)否則恕不接受退貨。

