前言
微服務是一種架構風格和模式:将複雜系統拆解為協同工作的小型服務,以此建構大型業務服務。微服務是自治、自包含且可獨立部署的服務。當今世界上的許多企業将微服務作為預設的架構标準來建構面向服務的大型企業級應用。
作為一種程式設計架構,Spring架構在開發者社群流行很多年了。使用SpringBoot不再需要重量級應用容器,并且它還支援部署輕量級無伺服器應用。
Spring Cloud結合了Netflix的許多OSS開源元件,提供了一個運作和管理大型微服務架構的生态系統;還支援負載均衡、服務注冊、服務監控和服務網關,等等。
然而,微服務也帶來了一些挑戰,例如服務的監控、管理、分發、擴容和發現等,尤其是當大規模部署微服務時。如果在采用微服務架構之前不解決這些常見的問題,通常會導緻災難性的後果。

本文旨在建構一個與技術細節無關的微服務能力模型,該模型有助于應對各種常見的微服務挑戰。
本文提供了實作大型響應式微服務的實用方法和指導原則,并通過示例全面講解如何建構微服務。本文深入介紹了Spring Boot、Spring Cloud、Docker、Mesos和Marathon,還會教授如何用Spring Boot部署自治服務,而無須使用重量級應用伺服器,并介紹Spring Cloud架構的各項能力、如何使用Docker實作容器化,以及如何使用Mesos和Marathon抽象出計算資源和控制整個叢集。
本文帶你掌握響應式微服務設計原則,輕松建構大規模、可擴充的網際網路級微服務。
因為文章内容實在是太多了,沒法全部給大家展示出來,是以隻能給大家展示部分内容,每個小節都有更加細化的内容
目錄
主要内容講解
第1章微服務揭秘;本章将詳細介紹從傳統的單體架構到微服務架構的演進過程,還會介紹微服務的定義、概念和特性。
本章主要内容如下。
- 微服務的演進。
- 微服務架構的定義及相關示例。
- 微服務架構的概念和特性。
第2章相關架構風格和用例;本章會分析其他架構風格,并探究微服務和其他熱詞之間的相似性和關聯性。這些熱詞包括面向服務架構(SOA)、十二要素應用、無伺服器計算、Lambda架構、DevOps、雲計算、容器和響應式微服務。十二要素應用定義了面向雲計算應用開發的一系列軟體工程原則。本章還會分析微服務的典型用例,并介紹用于快速開發微服務架構的一些流行架構。
本章主要内容如下。
- 微服務架構與SOA和十二要素應用的關系。
- 微服務架構與無伺服器計算和Lambda架構風格(通常用于大資料、認知計算和物聯網環境中)之間的關聯。
- 微服務的支撐性架構元素,例如雲計算、容器和DevOps。
- 響應式微服務。
- 微服務架構的典型用例。
- 一些流行的微服務架構。
第3章用Spring Boot建構微服務;本章着重代碼示例,從微服務理論轉向具體實踐。首先介紹Spring Boot架構,然後讨論如何用Spring Boot建構與前一章講過的原則和特征相一緻的RESTful微服務,最後介紹Spring Boot為開發生産就緒的微服務提供的一些特性。
本章主要内容如下。
- 搭建最新的Spring開發環境。
- 利用Spring Framework 5和Spring Boot開發RESTful服務。
- 利用Spring WebFlux和Spring Messaging建構響應式微服務。
- 利用Spring Security和OAuth2保護微服務。
- 實作跨域微服務。
- 利用Swagger生成Spring Boot微服務API文檔。
- 利用Spring Boot Actuator開發生産就緒的微服務。
第4章應用微服務概念;本章會研究在實際項目中實作微服務的一些技術挑戰,并提供一些準則來指導關鍵的設計決策,確定成功開發微服務應用,還會介紹一些解決方案和設計模式來消除針對微服務的一系列常見顧慮。
本章主要内容如下。
- 不同設計決策之間的權衡取舍。
- 開發微服務時應當考慮的設計模式。
- 設計一流的可擴充微服務的通用指南。
第5章微服務能力模型;本章主要内容如下。
- 微服務生态系統的能力模型。
- 每種能力的簡介及其在微服務生态系統中的重要性。
- 支撐這些能力的可選工具和技術。
- 微服務成熟度模型。
第6章微服務演進案例研究;本章會引入一個虛構的廉價航空公司BrownField Airline(BF),探究如何将其從一個單體式客運銷售和服務(PSS)應用向下一代微服務架構演進。本章會深入研究PSS應用,并在遵循上一章介紹的設計原則和實踐方法的基礎上,解釋該應用從一個單體系統向一個基于微服務的架構遷移的挑戰、方法和演進步驟。
該案例研究旨在還原真實場景,進而明确相關架構概念。
本章主要内容如下。
- 以BrownField航空公司的PSS應用為例,研究從單體系統遷移到基于微服務系統的真實案例。
- 單體應用遷移到微服務的各種途徑和遷移政策。
- 用Spring架構的元件設計一個全新的現代微服務系統來替代PSS應用。
- 使用Spring架構和Spring Boot實作微服務。
第7章用Spring Cloud元件擴充微服務;本章會詳細介紹Spring Cloud項目中的各種元件,比如Eureka、Zuul、Ribbon和Spring Config,并将這些元件放置在第4章介紹的微服務能力模型的相應位置。本章會示範如何使用Spring Cloud元件對前一章開發的BrownField航空公司的PSS微服務系統進行擴充。
本章主要内容如下。
- 用Spring Cloud Config伺服器将配置資訊外部化。
- 用Eureka伺服器實作服務的注冊和發現。
- 講解Zuul作為服務代理和網關的重要性。
- 實作微服務的自動注冊和自動發現。
- 用Spring Cloud消息機制實作異步響應式微服務編排。
第8章微服務的日志管理和監控;本章會探讨日志管理和監控在微服務部署中的必要性和重要性,還會進一步研究用一系列候選架構和技術來解決日志和監控問題時面臨的各種挑戰及解決辦法。
本章主要内容如下。
- 日志管理的不同方案、工具和技術。
- 使用Spring Cloud Sleuth追蹤微服務。
- 端到端監控微服務的不同工具。
- 使用Spring Cloud Hystrix和Turbine進行鍊路監控。
- 使用資料湖進行業務資料分析。
第9章用Docker容器化微服務;本章介紹虛拟機鏡像和微服務容器化部署的概念和兩者之間的關聯,然後介紹如何為BrownField航空公司PSS微服務系統建構Docker鏡像,這些微服務都是用Spring Boot和Spring Cloud開發的,最後介紹如何在類生産環境中管理、維護和部署Docker鏡像。
本章主要内容如下。
- 容器化的概念及其和微服務上下文的關系。
- 将微服務建構并部署為Docker鏡像和容器。
- 以AWS為例展示基于雲的Docker部署。
第10章用Mesos和Marathon擴充容器化的微服務;本章會介紹基本的擴容方法和在部署大規模微服務時使用Mesos和Marathon作為基礎設施編排層對于雲環境中優化資源利用的必要性,還會詳細介紹在雲環境中安裝Mesos和Marathon的方法,最後會示範如何在Mesos和Marathon環境中管理Docker化的微服務。
本章主要内容如下。
- 對容器化的Spring Boot微服務進行擴容的可選方案。
- 基礎設施抽象層和容器編排軟體的必要性。
- 從微服務的上下文中了解Mesos和Marathon。
- 用Mesos和Marathon管理BrownField航空公司Docker化的PSS微服務。
第11章微服務開發生命周期;類似于軟體開發生命周期,若想成功實作微服務架構,需要了解微服務開發生命周期。
本章以BrownField航空公司的PSS微服務為例,着重介紹微服務的開發流程和實踐。此外,本章會闡述組建開發團隊的最佳實踐、開發方法論、自動化測試、微服務持續傳遞,這些都和DevOps實踐相一緻,最後會闡明微服務分布式治理方法中參考架構的重要性。
本章主要内容如下。
- 研究微服務開發中的一些實踐要點。
- 網際網路級微服務在自動化開發、測試和部署方面的最佳實踐。
讀者對象
本文适合想了解如何使用Spring架構、Spring Boot和Spring Cloud設計強大的網際網路級微服務,以及如何用Docker、Mesos和Marathon來管理這些微服務的架構師。微服務能力模型有助于架構師運用各種工具和技術來設計微服務解決方案。
本文适合正在考慮開發雲就緒的網際網路級應用來滿足當今業務需求的Spring開發人員。文中通過研究一系列真實用例和實操性的代碼執行個體,揭示了微服務的實質及其在當今世界中的重要性。