天天看點

微服務調用Ribbon

Ribbon簡介

Ribbon是Netflix釋出的負載均衡器,它有助于控制HTTP和TCP的用戶端的行為,為Ribbon配置服務提供者位址後,Ribbon就可基于某種負載均衡算法,自動地幫助服務消費者去請求。Ribbon預設為我們提供了很多負載均衡算法,例如輪詢、随機等,當然,我們也可為Ribbon實作自定義的負載均衡算法

在SpringCloud中,當Ribbon與Eureka配合使用時,Ribbon可自動從EurekaServer擷取服務提供者位址清單,并基于負載均衡算法,請求其中一個服務提供者執行個體。下圖展示了Ribbon與Eureka配合使用時的架構:

微服務調用Ribbon

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:

微服務調用Ribbon

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

微服務調用Ribbon

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

微服務調用Ribbon

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

微服務調用Ribbon

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

微服務調用Ribbon

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

微服務調用Ribbon

繼續閱讀