微服務調用Ribbon

Ribbon簡介

Ribbon是Netflix發佈的負載均衡器,它有助於控制HTTP和TCP的客戶端的行爲,爲Ribbon配置服務提供者地址後,Ribbon就可基於某種負載均衡算法,自動地幫助服務消費者去請求。Ribbon默認爲我們提供了很多負載均衡算法,例如輪詢、隨機等,當然,我們也可爲Ribbon實現自定義的負載均衡算法

在SpringCloud中,當Ribbon與Eureka配合使用時,Ribbon可自動從EurekaServer獲取服務提供者地址列表,並基於負載均衡算法,請求其中一個服務提供者實例。下圖展示了Ribbon與Eureka配合使用時的架構:

Ribbon的初步應用

Ribbon是客戶端負載均衡,所以是集成在消費端,也就是consumer端,本例在前面的基礎上修改microservice-student-consumer-80模塊

首先,引入依賴,在pom.xml加入ribbon相關依賴:

<!--ribbon相關依賴-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-eureka</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-ribbon</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-config</artifactId>
</dependency>

然後在application.yml加入(爲了使ribbon結合eureka來調用服務提供者):

eureka:
  client:
    register-with-eureka: false
    service-url:
      defaultZone: http://eureka2001.test.com:2001/eureka/,http://eureka2002.test.com:2002/eureka/,http://eureka2003.test.com:2003/eureka/

然後在SpringCloudConfig.java里加個負載均衡配置@LoadBalanced:

因爲是和Eureka整合,而服務端跟消費端相對於註冊中心來說都是client,所以要在啓動類StudentConsumerApplication_80.java加個@EnableEurekaClient註解:

然後修改下StudentConsumerController.java裏的PRE_HOST變量,改成指定的微服務應用名稱;當然要先在服務提供者microservice-student-provider-1001的application.yml加下配置,指定下應用名稱:

微服務的應用名稱是microservice-student,所以把服務調用者這邊的控制器裏的PRE_HOST變量改成http://MICROSERVICE-STUDENT即可(MICROSERVICE-STUDENT爲Eureka註冊中心的應用名稱,需大寫):

上面的都配置好後,就可以開始測試了;先啓動兩個Eureka,然後再啓動服務提供者,再啓動服務消費者:

在瀏覽器的地址欄輸入http://localhost/student/list,出現如下結果,說明配置OK:

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