拒絕大型單體應用,基於業務邊界進行服務微化拆分,各個服務獨立部署執行
分布式系統中,各個服務可能處於不同主機,但是服務之間不可避免的需要互相呼叫,我們稱為遠端呼叫。
springcloud中使用http+json的方式完成遠端呼叫。
a服務呼叫b服務,b服務部署在多台機器,a傳送請求到任意乙個伺服器均可完成呼叫。
為了使每台伺服器不至於忙於處理請求,可以將請求均衡到每乙個伺服器,提公升**的可用性。
負載均衡演算法:
a服務呼叫b服務、c服務,但是a服務不知道b、c服務所在的伺服器是正常還是下線,註冊中心可以幫助解決。
註冊中心實時知道哪些服務正常,哪些服務下線,也能記錄新增的正常服務。服務之間呼叫不需要去判斷哪些服務正常,註冊中心會告訴服務有效的呼叫位址。
服務註冊:服務將自己的ip和埠報告給註冊中心的過程。
服務檢查:檢查已註冊的服務,如發現某服務長時間無法訪問,則會從註冊中心移除該服務。
每個服務都有大量配置,更新乙個配置,需要同步到每個服務,如何修改每個服務的配置呢?
每個服務從配置中心獲取配置,自動更新自己的配置。
下單場景:使用者下單了乙個商品,客戶端呼叫訂單服務來生成預付款訂單,訂單服務呼叫商品服務檢視下單的哪款商品,商品服務呼叫庫存服務判斷這款商品是否有庫存,如有庫存,則可以生成預付款訂單。
雪崩場景:
第二次滾雪球:因商品服務的請求都在等庫存服務返回結果,導致商品服務呼叫庫存服務的很多請求未處理完,商品服務將無法處理其他請求,導致商品服務不可用
第三次滾雪球:因商品服務不可用,訂單服務呼叫商品服務的的其他請求無法處理,導致訂單服務不可用。
服務熔斷:
設定服務的超時,當被呼叫的服務某段時間內失敗率達到某個閾值,則對該服務開啟短路保護,後來的請求不呼叫這個服務,直接返回預設的資料。
服務降級:
對非核心業務降級執行:某些服務不處理,或者簡單處理(拋異常、返回null、返回mock資料)
5分鐘搞懂模版方法模式
模版是什麼大家都清楚,比如簡歷模版,簡歷模版包括教育經歷 工作經歷 專業技能等等欄目。雖然簡歷模版相同,但是每個人的簡歷卻不同,這是因為我們每個人的教育經歷 工作經歷 專業技能等都不同。同理,在設計模式中,模板方法模式的主要用途在於將不變的行為從子類搬到超類,去除了子類中的重複 下面是模板方法模式的...
5分鐘搞懂 session與cookie
無狀態協議的意思是服務端與客戶端不會記錄任何一次通訊的資訊。諾蘭有一部電影 記憶碎片 說的是乙個有 短期記憶喪失症 的人根據自己支離破碎的記憶來找到殺害自己妻子的 的故事。因為記不住發生的事,電影中那個老兄只能靠寫字條幫忙記錄事情。無狀態協議的通訊雙方就是 失憶症患者 而且是永久性的。服務端君 和 ...
分布式基礎概念
1.分布式是指將不同的業務分布在不同的地方 2.集群是指將幾台伺服器集中在一起,實現同一業務 3.節點是集群中的乙個伺服器 在分布式系統中,各個服務處於不同的主機,但是服務之間不可避免的需要相互呼叫,我們成為遠端呼叫 springcloud中使用http json的方式完成遠端呼叫 為了使每一台伺服...