01. SpringCloud實戰項目-五分鐘搞懂分佈式基礎概念

SpringCloud實戰項目全套學習教程連載中

PassJava 學習教程

簡介

  • PassJava-Learning項目是PassJava(佳必過)項目的學習教程。對架構、業務、技術要點進行講解。
  • PassJava 是一款Java面試刷題的開源系統,可以用零碎時間利用小程序查看常見面試題,夯實Java基礎。
  • PassJava 項目可以教會你如何搭建SpringBoot項目,Spring Cloud項目
  • 採用流行的技術,如 SpringBoot、MyBatis、Redis、 MySql、 MongoDB、 RabbitMQ、Elasticsearch,採用Docker容器化部署。

更好的閱讀體驗

文檔連載目錄

01.分佈式基礎概念

1、微服務

拒絕大型單體應用,基於業務邊界進行服務微化拆分,各個服務獨立部署運行

2、集羣、分佈式、節點

集羣

  • 是一種物理形態
  • 將幾臺服務器集中在一起,實現同一業務

分佈式

  • 是一種工作方式
  • 若干獨立計算機的集合,這些計算機對於用戶來說就像單個相關係統
  • 將不同的業務分佈在不同的地方

節點

  • 集羣中的一個服務器

3、遠程調用

mark

分佈式系統中,各個服務可能處於不同主機,但是服務之間不可避免的需要互相調用,我們稱爲遠程調用。

SpringCloud中使用HTTP+JSON的方式完成遠程調用。

4、負載均衡

mark

A服務調用B服務,B服務部署在多臺機器,A發送請求到任意一個服務器均可完成調用。

爲了使每臺服務器不至於忙於處理請求,可以將請求均衡到每一個服務器,提升網站的可用性。

負載均衡算法:

  • 輪詢:請求依次按順序分發到不同的可用服務器執行,循環分發請求。
  • 最小連接:分發請求到連接數最少的服務器。場景:處理請求用時較長的場景。
  • 散列:根據用戶請求的IP地址的散列(hash)來選擇要轉發的服務器。場景:需要處理狀態而要求用戶能連接到相同服務器。

5、服務註冊、服務發現、註冊中心

mark

A服務調用B服務、C服務,但是A服務不知道B、C服務所在的服務器是正常還是下線,註冊中心可以幫助解決。

註冊中心實時知道哪些服務正常,哪些服務下線,也能記錄新增的正常服務。服務之間調用不需要去判斷哪些服務正常,註冊中心會告訴服務有效的調用地址。

服務註冊:服務將自己的IP和端口報告給註冊中心的過程。

服務發現:查詢可用微服務列表及其網絡地址的機制。

註冊中心:集中記錄每個服務的地址,註冊和註銷服務。

服務檢查:檢查已註冊的服務,如發現某服務長時間無法訪問,則會從註冊中心移除該服務。

6、配置中心

每個服務都有大量配置,更新一個配置,需要同步到每個服務,如何修改每個服務的配置呢?

每個服務從配置中心獲取配置,自動更新自己的配置。

7、服務熔斷、服務降級

mark

下單場景:用戶下單了一個商品,客戶端調用訂單服務來生成預付款訂單,訂單服務調用商品服務查看下單的哪款商品,商品服務調用庫存服務判斷這款商品是否有庫存,如有庫存,則可以生成預付款訂單。

雪崩場景:

  • 第一次滾雪球:庫存服務不可用(如響應超時等),庫存服務收到的很多請求都未處理完,庫存服務將無法處理更多請求。
  • 第二次滾雪球:因商品服務的請求都在等庫存服務返回結果,導致商品服務調用庫存服務的很多請求未處理完,商品服務將無法處理其他請求,導致商品服務不可用
  • 第三次滾雪球:因商品服務不可用,訂單服務調用商品服務的的其他請求無法處理,導致訂單服務不可用。
  • 第四次滾雪球:因訂單服務不可用,客戶端將不能下單,更多客戶將重試下單,將導致更多下單請求不可用。

服務熔斷:

設置服務的超時,當被調用的服務某段時間內失敗率達到某個閾值,則對該服務開啓短路保護,後來的請求不調用這個服務,直接返回默認的數據。

服務降級:

對非核心業務降級運行:某些服務不處理,或者簡單處理(拋異常、返回Null、返回Mock數據)

8、API網關

mark

  • 抽象了微服務中都需要的公共功能
  • 提供了負載均衡、自動熔斷、灰度發佈、統一認證、限流、日誌統計功能

公衆號

mark

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章