千家信息网

怎么使用Resttemplate和Ribbon调用Eureka实现负载均衡

发表于:2025-01-17 作者:千家信息网编辑
千家信息网最后更新 2025年01月17日,本篇内容介绍了"怎么使用Resttemplate和Ribbon调用Eureka实现负载均衡"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况
千家信息网最后更新 2025年01月17日怎么使用Resttemplate和Ribbon调用Eureka实现负载均衡

本篇内容介绍了"怎么使用Resttemplate和Ribbon调用Eureka实现负载均衡"的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!

1.服务注册和发现Eureka

可以用作服务治理。

2.首先我们建立一个父子工程

最外层是forezp

其下面建立四个子工程

  • eureka-server

  • eureka-client

  • eureka-client1

  • eureka-ribbon-client

3.forezp工程相关

1.forezp pom文件如下

   4.0.0         org.springframework.boot      spring-boot-starter-parent      2.1.5.RELEASE             com.example   forezp   0.0.1-SNAPSHOT   forezp   Demo project for Spring Boot           UTF-8      UTF-8      1.8      Dalston.SR1                                   org.springframework.cloud            spring-cloud-dependencies            ${spring-cloud.version}}            pom            import                             euraka-client      euraka-server      eureka-ribbon-client      euraka-client2                                                                   

4.Eureka的服务中心:eureka-server相关

1.pom文件

   4.0.0         com.example      forezp      0.0.1-SNAPSHOT             com.example   euraka-server   0.0.1-SNAPSHOT   euraka-server   Demo project for Spring Boot           1.8      Greenwich.SR1                       org.springframework.cloud         spring-cloud-starter-netflix-eureka-server                       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                    

2.application.properties文件

server.port=8761 eureka.instance.hostname=localhost #防止自己注册自己eureka.client.register-with-eureka=falseeureka.client.fetch-registry=false#eureka的注册地址eureka.client.service-url.default-zone=http://${eureka.instance.hostname}:${server.port}/eureka/}

3.需要在启动类添加 @EnableEurekaServer 注解来开启注册服务

package com.example.eurakaserver;  import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;  @SpringBootApplication@EnableEurekaServerpublic class EurakaServerApplication {     public static void main(String[] args) {      SpringApplication.run(EurakaServerApplication.class, args);   }  }

5.eureka-client和eureka-client1用来提供服务

这两个子工程其实区别不大,只是为了验证实现负载均衡。

1.pom文件

    4.0.0            com.example        forezp        0.0.1-SNAPSHOT                 com.example    euraka-client2    0.0.1-SNAPSHOT    euraka-client2    Demo project for Spring Boot             1.8        Greenwich.SR1                             org.springframework.boot            spring-boot-starter-web                            org.springframework.cloud            spring-cloud-starter-netflix-eureka-client                             org.projectlombok            lombok            true                            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                         

2.新建一个ApiController类

package com.example.eurakaclient2;  import org.springframework.beans.factory.annotation.Value;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;  @RestControllerpublic class ApiController {      @Value("${server.port}")    String port;    @GetMapping("/hi")    public String home(@RequestParam String name1){        return "hi "+name1+"i am a port:"+port;    }}

3.eureka-client 的 apllication.properties配置如下

eureka.client.service-url.defaultZone=http://localhost:8761/eureka/server.port=8762spring.application.name=eureka-client

4.eureka-client2的 apllication.properties配置如下

eureka.client.service-url.defaultZone=http://localhost:8761/eureka/server.port=8763spring.application.name=eureka-client

5.需要在启动类添加注解 @EnableEurekaClient,开启服务提供

package com.example.eurakaclient2;  import org.springframework.boot.SpringApplication;      import org.springframework.boot.autoconfigure.SpringBootApplication;      import org.springframework.cloud.netflix.eureka.EnableEurekaClient;  @SpringBootApplication@EnableEurekaClientpublic class EurakaClient2Application {     public static void main(String[] args) {      SpringApplication.run(EurakaClient2Application.class, args);   } }

6.eureka-ribbon-client工程相关

1.pom文件

   4.0.0         com.example      forezp      0.0.1-SNAPSHOT             com.example   eureka-ribbon-client   0.0.1-SNAPSHOT   eureka-ribbon-client   Demo project for Spring Boot           1.8      Greenwich.SR1                       org.springframework.boot         spring-boot-starter-web                     org.springframework.cloud         spring-cloud-starter-netflix-ribbon                       org.springframework.cloud         spring-cloud-starter-netflix-eureka-client                       org.projectlombok         lombok         true                     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                    

2.applicaiton.properties配置文件如下

spring.application.name=eureka-ribbon-clientserver.port=8764eureka.client.service-url.defaultZone=http://localhost:8761/eureka/

3.新建RibbonConfig类,在这里注入RestTemplate类同时开启负载均衡

package com.example.eurekaribbonclient;  import org.springframework.cloud.client.loadbalancer.LoadBalanced;import org.springframework.context.annotation.Bean;import org.springframework.context.annotation.Configuration;import org.springframework.web.client.RestTemplate;  @Configurationpublic class RibbonConfig {      @Bean    @LoadBalanced    RestTemplate restTemplate(){        return new RestTemplate();    }}

4.新建service层,调用eureka-client (eureka-client1)提供的restful接口,其中 eureka-client 为 eureka-client (eureka-client1)注册在 eureka-service上的serviceId信息,如果没有配置serviceId,默认使用spring.application.name

package com.example.eurekaribbonclient;  import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Service;import org.springframework.web.client.RestTemplate;       @Service    public class RibbonService {        @Autowired    RestTemplate restTemplate;    public String hi(String name){          return restTemplate.getForObject("http://eureka-client/hi?name1="+name,String.class);    }}

5.新建controller层,调用RibbonService为我们提供的方法

package com.example.eurekaribbonclient;  import org.springframework.beans.factory.annotation.Autowired;import org.springframework.stereotype.Controller;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;  @RestControllerpublic class RibbonController {    @Autowired    RibbonService ribbonService;      @GetMapping("/hi")    public String hi(@RequestParam(required = false,defaultValue = "forezp")String name){        return ribbonService.hi(name);    }}

6.同时也需要在启动类添加@EnableEurekaClient注解

package com.example.eurekaribbonclient;  import org.springframework.boot.SpringApplication;import org.springframework.boot.autoconfigure.SpringBootApplication;import org.springframework.cloud.netflix.eureka.EnableEurekaClient;  @SpringBootApplication@EnableEurekaClientpublic class EurekaRibbonClientApplication {     public static void main(String[] args) {      SpringApplication.run(EurekaRibbonClientApplication.class, args);   }  }

7.验证

1.按照顺序启动工程

2.浏览器访问 http://localhost:8761/

可以看到EUREKA-CLIENT 和 EUREKA-RIBBON-CLIENT已经注册进来了

3.我们访问 http://localhost:8764/hi?name=forezp 两次

可以看到 页面分别返回

hi forezpi am a port:8762

hi forezpi am a port:8763

这样验证了我们实现了负载均衡。

"怎么使用Resttemplate和Ribbon调用Eureka实现负载均衡"的内容就介绍到这里了,感谢大家的阅读。如果想了解更多行业相关的知识可以关注网站,小编将为大家输出更多高质量的实用文章!

0