分佈式的知識總結

系統架構的發展
(1)單一應用架構。一個單體應用部署在一個服務器上。當流量越來越大的時候,可以將同一個應用部署到多臺服務器上,然後進行負載均衡。
(2)分佈式架構。將應用按照業務邏輯拆分成各個模塊,各個模塊部署在不同的服務器上,各個模塊通過API互相調用服務。當服務越來越多的時候,此時用於提升服務質量的服務治理中心是關鍵。

什麼是分佈式
分佈式就是利用物理架構由多個自治處理元素,自治之間不共享內存,通過網絡發送消息合作

springcloud
springcloud是基於springboot實現分佈式系統開發的一個框架。
springcloud的主要組件:
服務發現——Netflix Eureka
客服端負載均衡——Netflix Ribbon
斷路器——Netflix Hystrix
服務網關——Netflix Zuul
分佈式配置——Spring Cloud Config

什麼是Eureka
Eureka是一個基於 REST 服務的,服務註冊與發現的組件。

Eureka由兩個組件組成:
Eureka Server:註冊中心,提供服務註冊和發現的能力
Eureka Client :服務的客戶端,向註冊中心註冊自己提供服務,並可以調用被註冊中心發現的服務。

客戶端之間如何互相調用服務:
可以使用RestTemplate或者feign調用服務

Eureka是客戶端發現的方式,客戶端會向註冊中心拉取已註冊的可用服務信息然後根據負載均衡策略選擇某一臺服務器調用服務,整個過程都是在客戶端完成的。客戶端的負載均衡基於Ribbon組件完成。添加@LoadBalanced之後,Ribbon組件就會自動幫你通過某種規則實現負載均衡。

dubbo
dubbo是一個阿里系的分佈式服務治理框架,dubbo框架客戶端間的通信是基於RPC。dubbo的註冊中心是使用zookeeper。

Zookeeper與Eureka的區別
一個分佈式系統不可能同時滿足C(一致性)、A(可用性)和P(分區容錯性)。由於分區容錯性在是分佈式系統中必須要保證的,因此我們只能在A和C之間進行權衡。在此Zookeeper保證的是CP, 而Eureka則是AP。Eureka可以接受分佈式節點出現問題,而Zookeeper則不行。
另外Eureka是客戶端發現,而Zookeeper服務端發現。
客戶端發現:客戶端要調用服務的時候,註冊中心會向客戶端返回所有的可用服務,由客戶端來選擇服務。
服務端發現:客戶端調用服務的時候,需要通過代理來調用,服務對於客戶端是隱藏的。

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