分佈式基礎概念
一、微服務
拒絕大型單體應用,基於業務邊界進行服務微化拆分,各個服務獨立部署運行算法
二、集羣、分佈式、節點
集羣
-
是一種物理形態服務器
-
將幾臺服務器集中在一塊兒,實現同一業務微信
分佈式
-
是一種工做方式網絡
-
若干獨立計算機的集合,這些計算機對於用戶來講就像單個相關係統架構
-
將不一樣的業務分佈在不一樣的地方負載均衡
節點
-
集羣中的一個服務器分佈式
三、遠程調用
![](http://static.javashuo.com/static/loading.gif)
分佈式系統中,各個服務可能處於不一樣主機,可是服務之間不可避免的須要互相調用,咱們稱爲遠程調用。微服務
SpringCloud中使用HTTP+JSON的方式完成遠程調用。網站
四、負載均衡
![](http://static.javashuo.com/static/loading.gif)
A服務調用B服務,B服務部署在多臺機器,A發送請求到任意一個服務器都可完成調用。spa
爲了使每臺服務器不至於忙於處理請求,能夠將請求均衡到每個服務器,提高網站的可用性。
負載均衡算法:
-
輪詢:請求依次按順序分發到不一樣的可用服務器執行,循環分發請求。
-
最小鏈接:分發請求到鏈接數最少的服務器。場景:處理請求用時較長的場景。
-
散列:根據用戶請求的IP地址的散列(hash)來選擇要轉發的服務器。場景:須要處理狀態而要求用戶能鏈接到相同服務器。
五、服務註冊、服務發現、註冊中心
![](http://static.javashuo.com/static/loading.gif)
A服務調用B服務、C服務,可是A服務不知道B、C服務所在的服務器是正常仍是下線,註冊中心能夠幫助解決。
註冊中心實時知道哪些服務正常,哪些服務下線,也能記錄新增的正常服務。服務之間調用不須要去判斷哪些服務正常,註冊中心會告訴服務有效的調用地址。
服務註冊:服務將本身的IP和端口報告給註冊中心的過程。
服務發現:查詢可用微服務列表及其網絡地址的機制。
註冊中心:集中記錄每一個服務的地址,註冊和註銷服務。
服務檢查:檢查已註冊的服務,如發現某服務長時間沒法訪問,則會從註冊中心移除該服務。
六、配置中心
每一個服務都有大量配置,更新一個配置,須要同步到每一個服務,如何修改每一個服務的配置呢?
每一個服務從配置中心獲取配置,自動更新本身的配置。
七、服務熔斷、服務降級
![](http://static.javashuo.com/static/loading.gif)
mark
下單場景:用戶下單了一個商品,客戶端調用訂單服務來生成預付款訂單,訂單服務調用商品服務查看下單的哪款商品,商品服務調用庫存服務判斷這款商品是否有庫存,若有庫存,則能夠生成預付款訂單。
雪崩場景:
-
第一次滾雪球:庫存服務不可用(如響應超時等),庫存服務收到的不少請求都未處理完,庫存服務將沒法處理更多請求。
-
第二次滾雪球:因商品服務的請求都在等庫存服務返回結果,致使商品服務調用庫存服務的不少請求未處理完,商品服務將沒法處理其餘請求,致使商品服務不可用
-
第三次滾雪球:因商品服務不可用,訂單服務調用商品服務的的其餘請求沒法處理,致使訂單服務不可用。
-
第四次滾雪球:因訂單服務不可用,客戶端將不能下單,更多客戶將重試下單,將致使更多下單請求不可用。
服務熔斷:
設置服務的超時,當被調用的服務某段時間內失敗率達到某個閾值,則對該服務開啓短路保護,後來的請求不調用這個服務,直接返回默認的數據。
服務降級:
對非核心業務降級運行:某些服務不處理,或者簡單處理(拋異常、返回Null、返回Mock數據)
八、API網關
![](http://static.javashuo.com/static/loading.gif)
-
抽象了微服務中都須要的公共功能
-
提供了負載均衡、自動熔斷、灰度發佈、統一認證、限流、日誌統計功能
本文分享自微信公衆號 - 悟空聊架構(PassJava666)。
若有侵權,請聯繫 support@oschina.cn 刪除。
本文參與「OSC源創計劃」,歡迎正在閱讀的你也加入,一塊兒分享。