摘要:本例中介紹如何使用來完成服務調用并實現負載均衡。即,對于注冊中心而言,生產者和調用者都是端。文件配置如下在文件中,我們將應用命名為,端口為,表示注冊中心地址。
前言
Ribbon是Spring Cloud體系中完成負載均衡的重要組件。Spring Cloud體系中有兩種完成服務調用的組件,一種是Ribbon+RestTemplate,另一種Feign。Feign默認使用的也是Ribbon組件,將服務間的調用又包裝了一層,像調用方法一樣的來調用遠程服務。本例中介紹如何使用Ribbon+RestTemplate來完成服務調用并實現負載均衡。
本文來源于我的技術博客:http://51think.net
一、創建服務調用者在Eureka的博客中,我們創建了服務注冊中心應用spring-cloud-eureka,創建了服務生成者spring-cloud-eureka-myservice。這次我們將創建一個服務調用者spring-cloud-ribbon-client。
1、POM文件如下
4.0.0 org.springframework.boot spring-boot-starter-parent 2.1.6.RELEASE com.example spring-cloud-ribbon-client 0.0.1-SNAPSHOT spring-cloud-ribbon-client Demo project for Spring Boot 1.8 Greenwich.SR2 org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import org.springframework.boot spring-boot-maven-plugin
從POM文件中可以看出核心組件是spring-cloud-starter-netflix-eureka-client,這個組件在服務生產者應用spring-cloud-eureka-service中也在使用。即,對于Eureka注冊中心而言,生產者和調用者都是client端。spring-boot-starter-web用于web交互,稍后我們將通過瀏覽器來呈現一個helloWorld的調用效果。
2、yml文件配置如下
eureka: client: serviceUrl: defaultZone: http://localhost:8010/eureka/ server: port: 8020 spring: application: name: ribbonClient
在yml文件中,我們將應用命名為ribbonClient,端口為8020,defaultZone表示Eureka注冊中心地址。
3、申明Eureka client端
在springboot啟動類中,添加@EnableEurekaClient注解,以申明此應用是Eureka的一個客戶端。
@EnableEurekaClient
@SpringBootApplication
public class RibbonClientApplication {
public static void main(String[] args) { SpringApplication.run(RibbonClientApplication.class, args); }
}
4、將負載均衡的bean注入到容器中
RestTemplate可以進行遠程調用,@LoadBalanced注解表明這個bean具備負載均衡的功能,默認使用的是輪詢機制。
@Configuration public class ConfigProvider { @Bean @LoadBalanced RestTemplate restTemplate(){ return new RestTemplate(); } }
5、創建service
使用注入的restTemplate來實現遠程調用。
@Service public class SayHelloService { @Autowired RestTemplate restTemplate; public String sayHello(String say){ return restTemplate.getForObject("http://myservice/sayHello?say="+say,String.class); } }
6、創建controller
@RestController public class SayHelloController { @Autowired SayHelloService sayHelloService; @RequestMapping ("/sayHello") public String sayHello(@RequestParam String say){ return sayHelloService.sayHello(say); } }二、生產者應用提供服務
在spring-cloud-eureka-myservice應用中,添加controller,提供訪問服務:
@RestController public class HelloServerController { @Value("${server.port}") String port; @RequestMapping("/sayHello") public String hello(@RequestParam String say){ return say+", i com from the server "+port; } }
啟動生產者應用spring-cloud-eureka-myservice,然后變更端口,再啟動一次,這樣生產者就變成雙節點了,為后面的負載均衡演示提供條件。
三、啟動服務調用者spring-cloud-ribbon-client啟動完成之后,在Eureka面板中,可以看到如下信息:
從圖中可以看到兩行數據,分別代表兩個應用,myservice應用存在兩個節點,ribbonclient應用存在一個節點。如果看不到ribbonclient這一行,那要檢查一下spring-cloud-ribbon-client應用是否有問題。
四、瀏覽器訪問在瀏覽器訪問http://localhost:8020/sayHello?say=helloworld,可以看到如下展示
多次訪問時會發現端口在交替變化,說明我們實現了負載均衡。
源碼地址:https://github.com/huangyubia...
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/75677.html
摘要:前言在體系中扮演著統一網關的角色,負責與外部交互。與結合使用,可以根據服務名來訪問后端的服務,對于而言,也是一個。這段代碼表示,如果請求中沒有信息,就會報錯。 前言 Zuul在Spring Cloud 體系中扮演著統一網關的角色,負責與外部交互。用戶可以通過不同的URL特征來訪問不同的后端服務,類似于Nginx代理的效果。Zuul與Eureka結合使用,可以根據服務名來訪問后端的服務,...
摘要:客戶端負載均衡器是一個客戶端負載均衡器,可以讓你對和客戶端的行為進行大量控制,已經使用了,因此,如果你使用,此部分也適用。 客戶端負載均衡器:Ribbon Ribbon是一個客戶端負載均衡器,可以讓你對HTTP和TCP客戶端的行為進行大量控制,Feign已經使用了Ribbon,因此,如果你使用@FeignClient,此部分也適用。 Ribbon中的一個核心概念是命名客戶端,每個負載均...
摘要:公眾號樂園的中提供了兩個組件實現軟負載均衡調用,分別是和。是基于和的客戶端負載工具,它是基于實現的,它可以在客戶端配置服務端列表,然后輪詢請求以實現均衡負載。 公眾號:java樂園 spring cloud的Netflix中提供了兩個組件實現軟負載均衡調用,分別是Ribbon和Feign。上一篇和大家一起學習了Ribbon。Ribbon :Spring Cloud Ribbon是基于H...
摘要:服務注冊中心一個服務注冊中心,所有的服務都在注冊中心注冊,負載均衡也是通過在注冊中心注冊的服務來使用一定策略來實現。在客戶端實現了負載均衡。 文章參考于史上最簡單的 SpringCloud 教程 | 終章 Spring Cloud 是一個微服務框架,與 Spring Boot 結合,開發簡單。將一個大工程項目,分成多個小 web 服務工程,可以分別獨立擴展,又可以共同合作。 環境 ...
摘要:概要什么是實戰整合實現負載均衡是什么是一個客戶端負載均衡的組件什么是負載均衡負載均衡就是分發請求流量到不同的服務器目前的實現有軟件和硬件負載均衡分為兩種服務器端負載均衡如上圖所示服務器端負載均衡是對客戶透明的用戶請求到服務器真正的服務器是由 概要 什么是Spring Cloud Netflix Ribbon? 實戰:整合Ribbon實現負載均衡 Spring Cloud Netfl...
閱讀 3969·2021-11-23 10:09
閱讀 1338·2021-11-23 09:51
閱讀 2939·2021-11-23 09:51
閱讀 1585·2021-09-07 09:59
閱讀 2354·2019-08-30 15:55
閱讀 2292·2019-08-30 15:55
閱讀 2949·2019-08-30 15:52
閱讀 2560·2019-08-26 17:04