前言
參考資料:
《Spring Microservices in Action》
《Spring Cloud Alibaba 微服務原理與實戰》
《B站 尚硅谷 SpringCloud 框架開發教程 周陽》
本篇主要介紹一些通用概念概述、組件對比與系列筆記的目錄結構說明;
1. 分布式相關理論
1.1 分布式計算系統的 CAP 理論
https://www.runoob.com/w3cnote/zookeeper-tutorial.html
1.2 BASE 理論
https://www.runoob.com/w3cnote/zookeeper-tutorial.html
2. 微服務架構發展歷程
2.1 單體架構
- 通常來說,如果一個 war 包或者 jar 包里包含一個應用的所有功能,則稱為單體架構;
- 優點:架構簡單、能快速開發與上線;
- 缺點:后端服務器負載越來越高、業務場景復雜;
2.2 集群與垂直化
- 當業務量擴大時,服務負載過高,維護和部署成本增加,可以從兩個方面優化:
- 橫向增加服務器,把單台機器變成多機集群;
- 按照業務的垂直領域進行拆分,減少業務的耦合度,以及降低單個 war 包帶來的伸縮性困難問題;
2.3 SOA(面向服務架構)
- SOA 核心目標是把一些通用的、會被多個上層服務調用的共享業務提取成獨立的基礎服務,這些被提取出來的共享服務相對來說比較獨立,並且可以重用;
- SOA 架構主要解決了兩個問題:信息孤島、共享業務的重用;
2.4 微服務架構
- 面向服務(SOA)和微服務本質上都是服務化思想的一種體現;
- 如果 SOA 是面向服務開發思想的雛形,那么微服務就是針對可重用業務服務的更進一步優化;
- 可以把 SOA 看成微服務的超集,也就是多個微服務可以組成一個SOA服務;
- 實施微服務的前提是軟件交付鏈路及基礎設施的成熟化;
- 因此微服務本質上是服務化思想的最佳實踐方向;
2.4.1 SOA 與微服務架構的關注點
- SOA:服務的重用性及解決信息孤島問題;
- 微服務架構:解耦,降低業務之間的耦合度。微服務會更多地關注在 DevOps 的持續交付上,微服務與容器化技術的結合更加緊密;
3. 雲計算概述
3.1 雲計算的幾種模式
三種核心基本模式:
- 基礎設施即服務(Infrastructure as a Service, IaaS);
- 平台即服務(Platform as a Service, PaaS);
- 軟件即服務(Software as a Service, SaaS);
- Spring Cloud 討論的是基於 IaaS 的微服務;
兩種新興模式:
- 函數即服務(Functions as a Service, FaaS);
- 容器即服務(Container as a Service, CaaS)
4. 微服務架構概述
4.1 一個簡單的微服務架構圖
4.2 微服務架構的五大特性
- 位置透明;
- 大小適當;
- 可伸縮;
- 可重復;
- 有彈性;
4.3 微服務架構討論了什么
- 服務粒度;
- 通信協議;
- 接口設計;
- 配置管理;
- 事件處理;
4.4 按模式分的微服務組件
4.5 微服務架構的優點與挑戰
微服務架構的優點讓我們選擇微服務作為企業級架構方案,微服務的技術挑戰則要通過學習、設計甚至開發一些組件去解決;
- 架構優點:
- 復雜度可控;
- 技術選型更靈活;
- 獨立部署;
- 容錯性;
- 架構挑戰:
- 故障排查;
- 分布式架構的復雜性;
- 服務依賴;
- 運維成本;
- 技術挑戰:
- 分布式配置中心;
- 服務路由;
- 負載均衡;
- 熔斷限流;
- 鏈路監控;
4.6 本系列筆記將討論什么
本系列筆記將在介紹微服務架構需要什么功能同時給出市面上常見的幾種解決方案,他們通常被稱為組件;
五大核心功能及其組件:
- 配置中心;
- 注冊中心;
- 服務調用;
- 服務容災與降級;
- 網關路由;
其他特色擴展功能及其組件:
- 安全保護;
- 事件驅動;
- 服務總線;
- 分布式追蹤;
- 分布式事務;
- RPC 通信;
- 等...
5. 主流 Spring Cloud 組件
- Spring Cloud 不是一個框架,而是一套規范。其對 Spring Boot 在次封裝后屏蔽復雜的配置,給開發者提供了良好的開箱即用的微服務規范;
- Spring Cloud Netflix、Spring Cloud Condul、Spring Cloud Alibaba 才是 Spring Cloud 規范的實現;
- 目前主流的 Spring Cloud 治理方案主要由 Spring Cloud Netflix 和 Spring Cloud Alibaba 提供;
- 相比 Spring Cloud Netflix,Spring Cloud Alibaba 在服務治理方面更適用於國內技術場景;
5.1 組件對比圖
大致為 Netflix 版與 Alibaba 版的對比;
5.2 Spring Cloud五大組件:
- 注冊中心 Netflix Eureka;
- 客服端負載均衡 Netflix Ribbon;
- 斷路器 Netflix Hystrix;
- 服務網關 Netflix Zuul;
- 布式配置 Config;
5.3 Spring Cloud Alibaba 技術架構圖
5.4 各廠商 Spring Cloud 技術架構圖
6. 一些資源鏈接
- Spring Cloud 官網:https://spring.io/projects/spring-cloud;
- 《微服務架構設計模式》系列學習筆記:https://blog.csdn.net/dlhjw1412/article/details/119428533;
- Spring Boot 系列學習筆記:https://blog.csdn.net/dlhjw1412/article/details/118882230;
- Spring 系列學習筆記:https://blog.csdn.net/dlhjw1412/article/details/117886685;
7. 本系列筆記的編寫思想
7.1 目錄結構
- 主要分有一級標題和二級標題,一二級標題都是一篇文章;
- 為方便說明,下面用 XXX 代表:配置中心、注冊中心、服務調用等功能;
- 用 YYY 代表:Eureka、Spring Cloud Config、Zuul 等細分組件;
- 其中一級標題表示概述,目錄結構如下:
- XXX 基礎知識:對微服務(注冊中心、配置、網關等)做系統的概述;
- YYY 組件分析:里面有個鏈接,可以跳轉至對應細分文章;
- 二級標題為組件實戰,目錄結構如下:
- YYY 基礎知識:介紹一些 YYY 組件的理論知識與面試考點;
- 使用 YYY 組件構建服務:實戰部分;
- 其中 YYY 組件實戰部分又可大致總結為:
- 引入 pom.xml 依賴文件;
- 修改 .yml 配置文件;
- 在主程序類上添加注解;
- 編寫業務類(Config、Service、Controller 等);
最后
