Springboot+Springcloud配置一个服务多实例负载均衡实现(fegin)
2023年7月19日发(作者:)
Springboot+Springcloud配置⼀个服务多实例负载均衡实现(fegin)⽹上资料中可能会出先很多的问题 最终可是是pom⾥⾯的版本问题 贴上我实际运⾏的配置环境。Serverpom⽂件 UTF-8 UTF-8 1.8 E spring-cloud-starter spring-cloud-starter-eureka-server spring-boot-starter-test test spring-cloud-dependencies ${n} pom import spring-boot-starter-parent E pom import 配置server: port: 8761eureka: instance: hostname: 192.168.10.109 prefer-ip-address: true client: registerWithEureka: false fetchRegistry: false serviceUrl: defaultZone: ${me}:8761/eureka/spring: application: name: 类@SpringBootApplication@EnableEurekaServerpublic class Application { public static void main(String[] args){ (,args); }}client -----------⽣产者pom⽂件 UTF-8 UTF-8 1.8 E spring-cloud-starter spring-cloud-starter-eureka-server spring-boot-starter-test test spring-cloud-dependencies ${n} pom import spring-boot-starter-parent E pom import 配置⽂件spring: application: name: serviceserver: port: 8762eureka: client: serviceUrl: defaultZone: 192.168.10.109:8761/eureka/⽣产者的controller类也就是要发布的⽅法@RestControllerpublic class CloudController { @RequestMapping("/cloud") public String cloud(String name){ return "hello"+name+"---->2"; }}client可以使⽤同⼀个服务多个实例的⽅法 来解决单点故障问题 只要更改端⼝重新启动⼀下 就可以创建另⼀个实例ApplicationSERVICE-HISERVICE-RIBBONAMIsn/a (2)n/a (2)Availability Zones(2)(2)类@SpringBootApplication@EnableEurekaClientpublic class Application { public static void main(String[] args){ (,args); }}消费者 这时候就是要获取实例 得到数据 我这⾥是使⽤了Fegin所以需要导⼊相应jar包⽂件 UTF-8 UTF-8 1.8 E spring-cloud-starter spring-cloud-starter-eureka-server spring-boot-starter-test test spring-cloud-starter-feign E spring-cloud-dependencies ${n} pom import spring-boot-starter-parent E pom import eka: client: serviceUrl: defaultZone: 192.168.10.109:8761/eureka/server: port: 8764spring: application: name: 类@SpringBootApplication@EnableDiscoveryClient@EnableFeignClientspublic class Application { public static void main(String[] args){ (,args); }}接受实例的接⼝类 接⼝的⽅法要与发布服务的⽅法⼀样 由于它是通过URL进⾏访问所以value值要能访问到发布服务的⽅法 并且只能是通过GET请求服务@FeignClient(value="SERVICE")public interface CloudService { //⽅法名字和value要和发布服务的controller中的⼀样,并且请求的⽅式要设置成GET请求 @RequestMapping(value="/cloud",method= ) String cloud(@RequestParam("name") String name);}消费者的controller类访问@RestControllerpublic class ControllerFegin { @Autowired public CloudService cloudService; @RequestMapping("/cloud/{name}") public String test(@PathVariable("name") String name){ return (name); }}就会出现负载均衡的⽅式来访问 他会通过轮询的⽅式来访问提供的服务helloaaa---->1helloaaa---->2
发布者:admin,转转请注明出处:http://www.yc00.com/web/1689743246a282704.html
评论列表(0条)