天天看點

spring cloud Eureka簡單負載均衡實作Eureka實作

最近需要加深spring的學習做個項目,可能涉及到微服務架構、負載均衡、資料庫。

首先搭建好了基本的環境,搜尋了些資料,先學習下服務治理:

服務治理

  是微服務架構中最核心最基本的子產品。用于實作各個微服務執行個體的自動化注冊與發現。

  服務注冊:

    在服務治理架構中,都會建構一個注冊中心,每個服務單元向注冊中心登記自己提供的服務,将主機和端口号、版本号、通信協定等一些附加資訊告知注冊中心,注冊中心按服務名分類組織服務清單。

    服務注冊中心還需要以心跳的方式去監測清單中的服務是否可用,若不可用,需從服務清單中剔除,達到清楚障礙的目的。

  服務發現:

    服務的調用通過向服務名發起請求調用實作。調用方向服務注冊中心咨詢服務,并擷取所有服務的執行個體清單,實作對具體服務執行個體的通路。

Netflix Eureka

  Spring Cloud Eureka 使用Netflix Eureka來實作服務注冊于發現。既包含服務端元件也包含用戶端元件,且均采用java編寫,是以Eureka适用于java實作的分布式系統,或與JVM相容語言建構的系統。

  因為Eureka服務端的服務治理機制提供了完備的RESTful API,也支援非java語言建構的微服務應用納入Eureka的服務治理體系中去。

  Eureka服務端:

    服務注冊中心,支援高可用配置。依托于強一緻性提供良好的服務執行個體可用性,應用于不同的故障場景。

    以叢集部署,分片出現故障時,Eureka進入自我保護模式,其他分片提供服務的發現與注冊,當故障分片恢複時,叢集中的其他分片會把故障分片的狀态再次同步回來。

  Eureka用戶端:

    處理服務的注冊于發現。

    在程式運作時,Eureka用戶端向注冊中心注冊自身提供的服務并周期性地發送心跳來更新它的服務租約。也可以從注冊中心查詢目前注冊的服務資訊并把他們緩存到本地周期性地重新整理服務狀态。

Eureka實作

   然後搜尋了一個spring cloud Eureka 負載均衡的例子,按照例子順序進行:

例子位址:https://blog.csdn.net/nanbiebao6522/article/details/80574463

代碼其他不再描述,其中遇到一個問題,在建立了消費者以後,根據服務的名稱一直報錯說無法找到這個名稱的服務,這個比較糾結了好一會,後面換了其他方式才解決,應該是和@LoadBalanced的注解有關,或許是沒有添加依賴,還未去查證,解決的方法就是不用注解來實作服務的查找:

@Autowired
LoadBalancerClient loadBalancerClient;




ServiceInstance serviceInstance = loadBalancerClient.choose("eureka-client");
String url = "http://" + serviceInstance.getHost() + ":" + serviceInstance.getPort() + "getUser?id="+id;
System.out.println(url);
           
成功解決。
           
spring cloud Eureka簡單負載均衡實作Eureka實作
spring cloud Eureka簡單負載均衡實作Eureka實作

其中第二個服務提供者我是另起的工程,項目名和第一個不一樣,隻有注冊的服務名稱和調用的方法一樣就行。

繼續閱讀