兩年前,我與我的一些同事談起徼服務時,有很多人對微服務還不甚瞭解,而部分有所瞭解的人對其持觀望的態度,現在,微服務架構已經成爲一家公司技術是否先進、是否具有規模發展的標杆配置。
有人認爲微服務也不是一個新東西,它其實就是一種分佈式的架構設計。確實,微服務就是一種分佈式架構的設計方法。但是,在微服務概念還沒有出現之前,爲什麼分佈式這個概念並不能引起人們的強烈關注呢﹖甚至現在也一樣,如果說自己擅長分佈式架構設計,可能沒有多少人理你,但如果說自己精於微服務架構設計,情況那就大不一樣了。
微服務可以緩解程序員的壓力,提高開發效率,加速迭代的過程,是最適合敏捷開發的方法。另外,微服務能夠快速響應需求的變化、能夠分佈式發佈,最適合於雲計算部署、實現彈性伸縮控制,以及滿足無限擴展的業務需求,所以,微服務能夠創建一個“打不垮”的系統。
內容簡介
本文檔從架構設計、程序開發和運維部署三個層面,深入淺出地介紹瞭如何開發一個大型電商平臺。本書不僅詳細介紹瞭如何使用Spring Cloud 工具套件進行微服務應用的開發,還介紹瞭如何與Consul、Docker、Kubernetes和Jenkins等結合使用,將開發的微服務應用以可擴展的方式在雲端發佈。通過對本書的系統學習,讀者可快速將所掌握的知識應用於實際工作中,提高自身的職業競爭力。
本文檔的讀者對象爲廣大Java開發者、系統架構師和系統運維人員。本書特別適合使用過Spring開源框架或具有一定Spring框架基礎知識的讀者閱讀。
本書的內容和結構將在保持原書風格的基礎上進行全面的更新和升級,主要體現在以下三個方面。
本書仍以電商平臺作爲案例,但使用的代碼已經根據官方版本進行全面升級,並且對項目結構進行了全面的精簡化處理,使其更適合實際的開發習慣。
在數據庫使用方面,從原來單一化使用JPA和MySQL,轉變爲多樣化的設計,以適應不同業務場景的需求。同時,增加了MyBatis開發框架的使用和 MongoDB 的開發案例等章節。
在運維部署部分中,不僅增加了使用公有云的設計,而且對於部署工具,在使用Docker容器引擎的基礎上,介紹了一些高級工具,如 Docker Swarm部署工具、Kubernetes 工具的使用案例。
內容展示
本書由三部分組成,結構如下所示:
第一部分架構設計
第1章微服務架構與Spring Cloud
第2章︰高併發微服務架構設計
作爲一個IT從業人員,我們經常會碰到類似於下面的一些問題
:單個項目巨大而沉重,難以維護。
系統穩定性得不到更有效的保證。
怎樣才能持續地提升系統的性能。
怎樣才能快速地響應需求的變更,並且系統更新不會引起任何抖動。
怎樣才能更好地適應系統規模化的擴張。
第3章大型電商平臺設計實例
本章我們將使用微服務架構風格設計一個大型電商平臺,這個平臺將以SaaS方式提供一個類似於S2B2C的服務。
電商平臺是一個大衆化的應用平臺,讀者對它的功能都比較熟悉,本章通過電商平臺的微服務架構設計,幫助讀者深入理解微服務設計和開發在實際中的具體使用。
第二部分程序開發
第4章開發環境準備
有關Java開發環境的準備,除JDK和IDE外,還需要準備另外一些工具或服務,以方便進行代碼管理、開發調試等一些常用操作,具體如下:
Java SDK
IntelliJ IDEAoGit
oConsul
MySQL及其客戶端
MongoDB及其客戶端Redis
RabbitMQ
第5章微服務治理
Spring Cloud 工具套件爲微服務治理提供了全面的技術支持。這些治理工具主要包括服務的註冊與發現、負載均衡管理、動態路由、服務降級和故障轉移、鏈路跟蹤、服務監控等。微服務治理的主要功能組件如下:
註冊管理服務組件 Eureka,提供服務註冊和發現的功能。
負載均衡服務組件Ribbon,提供負載均衡調度管理的功能。
邊緣代理服務組件Zuul,提供網關服務和動態路由的功能。
斷路器組件Hystrix,提供容錯機制、服務降級、故障轉移等功能。
聚合服務事件流組件Turbine,可用來監控集羣中服務的運行情況。
日誌收集組件Sleuth,通過日誌收集提供對服務間調用進行跟蹤管理的功能。
配置管理服務組件Config,提供統一的配置管理服務功能。
第6章類目管理微服務開發
從本章開始,我們將根據電商平臺的各個實例項目進行具體的微服務開發,主要包括類目管理、庫存管理、訂單管理等。在這幾個實例項目中,我們將根據項目本身的特點,使用不同的數據庫進行開發。對於類目管理來說,我們將使用二級分類設計,即數據實體之間存在一定的關聯關係,因此最好的選擇就是使用Spring Data JPA進行開發。Spring Data JPA是Spring Boot開發框架中一個默認推薦使用的數據庫開發方法,同時,JPA也是領域驅動設計的一種具體應用。
第7章庫存管理與分佈式文件系統
在電商平臺的庫存管理系統設計中,將涉及商品和本地圖庫的管理,這裏我們將使用另一種數據開發框架 MyBatis進行數據庫訪問方面的設計,還將實現與分佈式文件系統的對接使用。
本章實例的項目工程是一個商品微服務項目goods-microservice,可以從本書提供的源代碼中下載,或者在IDEA中通過Git檢出:
檢出代碼後,請獲取本實例使用的分支V2.1。本項目包含以下幾個模塊:
goods-object:公共對象設計。
goods-restapi:庫存管理微服務API應用。
goods-web:庫存管理PC端Web應用。
第8章海量訂單系統微服務開發
訂單系統是電商平臺中一個非常重要的組成部分,而且它還是一個具有巨大流量和高併發訪問的系統,與訂單相關的服務涉及庫存、支付、物流等。在設計訂單系統時,我們選擇使用支持海量數據的NoSQL數據庫MongoDB,配合使用反應式的Spring Data MongoDB,實現高併發設計。
本章實例項目代碼可從本書源代碼中下載,在 IDEA中檢出,或通過頁面直接下載使用。檢出後請獲取分支版本V2.1。在這個分支中包含以下幾個模塊:
order-object:訂單公共對象設計。
order-restapi:訂單微服務接口應用設計。
order-web:訂單後臺管理應用設計。
第9章移動商城的設計和開發
移動商城是電商平臺的重要組成部分,它面向終端用戶,爲用戶提供商品瀏覽、選購、訂單查詢和個人信息管理等服務。
第10章商家管理後臺與SSO設計
第11章平臺管理後臺與商家菜單資源管理
平臺管理後臺是爲電商平臺的運營方提供服務的,它主要包含商家管理和一些公共配置管理的功能。在商家管理的設計中,包括商家的註冊、審覈、商家用戶的權限管理和菜單資源管理等功能。除一些公共管理功能的設計外,平臺管理後臺本身也有安全控制管理的設計。
第三部分運維部署
第12章雲服務環境與Docker部署工具
第13章可擴展分佈式數據庫集羣的搭建
第14章高可用分佈式文件系統的組建
傳統的單機版Web應用的文件管理方式,例如圖片和視頻文件的上傳和使用等,大多是將文件存儲在服務器本地,但這種管理方式無法應用在微服務應用中。一方面,微服務應用發佈在分佈式環境中,隨時隨地都可以進行多副本的部署,所以它的媒體文件必須存放在一個統一的地方。另一方面,建立一個獨立而高效的文件系統,也是高可用、高性能應用平臺的一個有機組成部分。
第15章使用Jenkins 實現自動化構建
一個大型平臺的微服務架構設計通常會產生很多項目工程,因此會有很多服務和應用需要部署,並且需要不斷地迭代和更新,這是一個龐大的工程,所以我們需要藉助自動化工具,實現各個微服務工程的CICD工作流程。
這份《Spring Cloud微服務架構實戰》內容實在是太多,需要獲取這份資料的小夥伴可以直接轉發+關注後