天天看點

微服務架構 | 1. 微服務相關基礎知識

目錄

  • 前言
  • 1. 分布式相關理論
    • 1.1 分布式計算系統的 CAP 理論
    • 1.2 BASE 理論
  • 2. 微服務架構發展曆程
    • 2.1 單體架構
    • 2.2 叢集與垂直化
    • 2.3 SOA(面向服務架構)
    • 2.4 微服務架構
      • 2.4.1 SOA 與微服務架構的關注點
  • 3. 雲計算概述
    • 3.1 雲計算的幾種模式
  • 4. 微服務架構概述
    • 4.1 一個簡單的微服務架構圖
    • 4.2 微服務架構的五大特性
    • 4.3 微服務架構讨論了什麼
    • 4.4 按模式分的微服務元件
    • 4.5 微服務架構的優點與挑戰
    • 4.6 本系列筆記将讨論什麼
  • 5. 主流 Spring Cloud 元件
    • 5.1 元件對比圖
    • 5.2 Spring Cloud五大元件:
    • 5.3 Spring Cloud Alibaba 技術架構圖
    • 5.4 各廠商 Spring Cloud 技術架構圖
  • 6. 一些資源連結
  • 7. 本系列筆記的編寫思想
    • 7.1 目錄結構
  • 最後

參考資料:

《Spring Microservices in Action》

《Spring Cloud Alibaba 微服務原理與實戰》

《B站 尚矽谷 SpringCloud 架構開發教程 周陽》

本篇主要介紹一些通用概念概述、元件對比與系列筆記的目錄結構說明;

https://www.runoob.com/w3cnote/zookeeper-tutorial.html

  • 通常來說,如果一個 war 包或者 jar 包裡包含一個應用的所有功能,則稱為單體架構;
  • 優點:架構簡單、能快速開發與上線;
  • 缺點:後端伺服器負載越來越高、業務場景複雜;
微服務架構 | 1. 微服務相關基礎知識

  • 當業務量擴大時,服務負載過高,維護和部署成本增加,可以從兩個方面優化:
    • 橫向增加伺服器,把單台機器變成多機叢集;
    • 按照業務的垂直領域進行拆分,減少業務的耦合度,以及降低單個 war 包帶來的伸縮性困難問題;
微服務架構 | 1. 微服務相關基礎知識

  • SOA 核心目标是把一些通用的、會被多個上層服務調用的共享業務提取成獨立的基礎服務,這些被提取出來的共享服務相對來說比較獨立,并且可以重用;
  • SOA 架構主要解決了兩個問題:資訊孤島、共享業務的重用;
微服務架構 | 1. 微服務相關基礎知識

  • 面向服務(SOA)和微服務本質上都是服務化思想的一種展現;
  • 如果 SOA 是面向服務開發思想的雛形,那麼微服務就是針對可重用業務服務的更進一步優化;
  • 可以把 SOA 看成微服務的超集,也就是多個微服務可以組成一個SOA服務;
  • 實施微服務的前提是軟體傳遞鍊路及基礎設施的成熟化;
  • 是以微服務本質上是服務化思想的最佳實踐方向;
微服務架構 | 1. 微服務相關基礎知識

  • SOA:服務的重用性及解決資訊孤島問題;
  • 微服務架構:解耦,降低業務之間的耦合度。微服務會更多地關注在 DevOps 的持續傳遞上,微服務與容器化技術的結合更加緊密;

三種核心基本模式:

  • 基礎設施即服務(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)

微服務架構 | 1. 微服務相關基礎知識

微服務架構 | 1. 微服務相關基礎知識
  • 位置透明;
  • 大小适當;
  • 可伸縮;
  • 可重複;
  • 有彈性;

微服務架構 | 1. 微服務相關基礎知識
  • 服務粒度;
  • 通信協定;
  • 接口設計;
  • 配置管理;
  • 事件處理;

微服務架構 | 1. 微服務相關基礎知識
微服務架構 | 1. 微服務相關基礎知識

微服務架構的優點讓我們選擇微服務作為企業級架構方案,微服務的技術挑戰則要通過學習、設計甚至開發一些元件去解決;
  • 架構優點:
    • 複雜度可控;
    • 技術選型更靈活;
    • 獨立部署;
    • 容錯性;
  • 架構挑戰:
    • 故障排查;
    • 分布式架構的複雜性;
    • 服務依賴;
    • 運維成本;
  • 技術挑戰:
    • 分布式配置中心;
    • 服務路由;
    • 負載均衡;
    • 熔斷限流;
    • 鍊路監控;

本系列筆記将在介紹微服務架構需要什麼功能同時給出市面上常見的幾種解決方案,他們通常被稱為元件;

五大核心功能及其元件:

  • 配置中心;
  • 注冊中心;
  • 服務調用;
  • 服務容災與降級;
  • 網關路由;

其他特色擴充功能及其元件:

  • 安全保護;
  • 事件驅動;
  • 服務總線;
  • 分布式追蹤;
  • 分布式事務;
  • RPC 通信;
  • 等...

  • 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 在服務治理方面更适用于國内技術場景;

大緻為 Netflix 版與 Alibaba 版的對比;
微服務架構 | 1. 微服務相關基礎知識

  • 注冊中心 Netflix Eureka;
  • 客服端負載均衡 Netflix Ribbon;
  • 斷路器 Netflix Hystrix;
  • 服務網關 Netflix Zuul;
  • 布式配置 Config;

微服務架構 | 1. 微服務相關基礎知識

微服務架構 | 1. 微服務相關基礎知識

  • 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;

  • 主要分有一級标題和二級标題,一二級标題都是一篇文章;
    • 為友善說明,下面用 XXX 代表:配置中心、注冊中心、服務調用等功能;
    • 用 YYY 代表:Eureka、Spring Cloud Config、Zuul 等細分元件;
  • 其中一級标題表示概述,目錄結構如下:
    • XXX 基礎知識:對微服務(注冊中心、配置、網關等)做系統的概述;
    • YYY 元件分析:裡面有個連結,可以跳轉至對應細分文章;
  • 二級标題為元件實戰,目錄結構如下:
    • YYY 基礎知識:介紹一些 YYY 元件的理論知識與面試考點;
    • 使用 YYY 元件建構服務:實戰部分;
  • 其中 YYY 元件實戰部分又可大緻總結為:
    • 引入 pom.xml 依賴檔案;
    • 修改 .yml 配置檔案;
    • 在主程式類上添加注解;
    • 編寫業務類(Config、Service、Controller 等);

新人制作,如有錯誤,歡迎指出,感激不盡!

歡迎關注公衆号,會分享一些更日常的東西!

如需轉載,請标注出處!

微服務架構 | 1. 微服務相關基礎知識