SpringCloud | 06.Eureka Server的集群部署

参考视频

day1-19-eureka:高可用的引入

day1-20-server间的相互注册

day1-21-服务注册到多个EurekaServer

1.Eureka Server集群概述

​ 微服务的所有操作都依赖于 Eureka Server ,一旦其宕机,整个系统都无法正常运作。因此我们可以部署多个 Eureka Server 以搭建集群,提高其可用性。

image-20220614115233849

2.Eureka Server集群搭建

集群搭建的核心有三点(针对三个不同角色):

  • Eureka Server:彼此间相互注册,且相互拉取注册信息;
  • 提供者:需要同时注册到多台 Eureka Server
  • 调用者:可以从多台 Eureka Server 拉取注册信息。

3.演示 - 在本机使用三个Eureka Server实例搭建集群

  1. [创建项目] 创建好项目,结构如下:

    image-20220614144840173

  2. [配置EurekaServer]

    • [相互注册]:每台 Eureka Server 都需要注册到其他的 Eureka Server 上,即A注册到BC、B注册到AC、C注册到AB。它们的配置文件如下:

      server.port=9001
      
      # 服务名
      spring.application.name=eureka_server_01
      
      # Eureka Server的请求地址
      eureka.client.service-url.defaultZone=http://localhost:9002/eureka/, http://localhost:9003/eureka/
      
      server.port=9002
      
      # 服务名
      spring.application.name=eureka_server_02
      
      # Eureka Server的请求地址
      eureka.client.service-url.defaultZone=http://localhost:9001/eureka/, http://localhost:9003/eureka
      
      server.port=9003
      
      # 服务名
      spring.application.name=eureka_server_03
      
      # Eureka Server的请求地址
      eureka.client.service-url.defaultZone=http://localhost:9001/eureka/, http://localhost:9002/eureka/
      
    • [启用EurekaServer]:在所有 Eureka Server 启动类上添加@EnableEurekaServer

      image-20220614150207270

  3. [配置provider_01和consumer_01]

    • [服务注册]:它们本质上也是微服务,因此都需要注册到 Eureka Server ,且需要同时注册到所有的实例上;

      server.port=8091
      
      # 服务名
      spring.application.name=provider_01
      
      # Eureka Server的请求地址
      eureka.client.service-url.defaultZone=http://localhost:9001/eureka/, http://localhost:9002/eureka/, http://localhost:9003/eureka/
      
      server.port=8081
      
      # 服务名
      spring.application.name=consumer_01
      
      # Eureka Server的请求地址
      eureka.client.service-url.defaultZone=http://localhost:9001/eureka/, http://localhost:9002/eureka/, http://localhost:9003/eureka/
      
    • [启用EurekaClient]:在它们的启动类代码上添加@EnableEurekaClient

      image-20220614151423573

  4. [定义接口] 分别定义好 提供者 的接口和 调用者 的接口;

    • [提供者]

      @CrossOrigin
      @RestController
      @RequestMapping("/hello")
      public class HelloController {
      
          @GetMapping("say")
          public String say() {
              return "Hello World!";
          }
      }
      
    • [调用者]

      @CrossOrigin
      @RestController
      @RequestMapping("/hello")
      public class HelloController {
      
          @Resource
          private RestTemplate restTemplate;
      
          @Resource
          private EurekaClient eurekaClient;
      
          @GetMapping("/sayByRestTemplate")
          public String sayByRestTemplate() {
              // 获取实例的所有元数据
              Application app = eurekaClient.getApplication("provider_01");
              InstanceInfo instanceInfo = app.getInstances().get(0);
      
              // 获取ip地址和端口号
              String ipAddress = instanceInfo.getIPAddr();
              int port = instanceInfo.getPort();
      
              // 拼接url,发起http请求
              String url = "http://" + ipAddress + ":" + port + "/hello/say";
      
              String result = restTemplate.getForObject(url, String.class);
              return "发起Http请求得到的响应结果:" + result;
          }
      }
      
  5. [启动项目检验结果] 启动所有的项目

    • [访问EurekaServer] 在浏览器输入http://localhost:端口号,端口号可以是任意一个 Eureka Server 的端口;

      image-20220614151929909

    • [测试接口] 输入http://localhost:8081/hello/sayByRestTemplate,测试该接口是否可用

      image-20220614152115552

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值