服务注册与发现 (Eureka)

服务注册与发现 (Eureka)

Spring Cloud 版本: 2021.0.4

Spring Boot 版本: 2.6.11

服务注册中心

引入依赖

   <!--Eureka服务端依赖-->
   <dependency>
       <groupId>org.springframework.cloud</groupId>
       <artifactId>spring-cloud-starter-netflix-eureka-server</artifactId>
   </dependency>

配置文件

eureka:
  instance:
    prefer-ip-address: true #服务显示IP地址
  client:
    service-url:
      defaultZone: http://127.0.0.1:8090/eureka # Eureka服务端注册地址
    register-with-eureka: false # 是否将自身注册

测试

添加启动类,并且添加注解**@EnableEurekaServer**

访问端口可以看到Eureka启动页面, 由于设置自身不进行注册, 所以可以看到目前Eureka实例中不存在任何的服务列表;

image-20221028154451332

集群

如果想要多个Eureka同时工作形成集群状态, 仅需要将yaml文件中defaultZone后面地址换成其他Eureka的地址即可,以逗号分隔开.例如:

eureka:
  instance:
    prefer-ip-address: true #服务显示IP地址
  client:
    service-url:
      # Eureka服务端注册地址
      defaultZone: http://127.0.0.1:8091/eureka,http://127.0.0.1:8092/eureka,http://127.0.0.1:8093/eureka 
    register-with-eureka: false # 是否将自身注册

Eureka客户端

引入依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>

配置文件

spring:
  application:
    name: service8080 # 注册的服务名称
eureka:
  client:
    register-with-eureka: true
    service-url:
      defaultZone: http://127.0.0.1:8090/eureka # 配置将此实例注册到哪一个Eureka服务中

测试

启动器添加 @EnableEurekaClient, 注意这是添加的是Client

此时可以看到SERVICE8080已经加入到了注册中心.自此Eureka组件的搭建就已经完成,

如果同一服务部署到了多台机器,可以在注册时将服务名填写相同,Eureka会自动组合.

image-20221028155607042

服务发现

注册进Eureka的服务,在调用其他服务时会自动拉取,对应的服务列表,这些是Eureka来帮我们完成,同时我们也可以手动拉取查看调用 .

  1. 启动功能类添加注解@EnableDiscoveryClient,启用DiscoveryClient

  2. 新建一个controller,注入DiscoveryClient

      @Resource
        DiscoveryClient discoveryClient;
    
        @GetMapping("client")
        public Object client() {
            //获取服务名 SERVICE8080 下的所有实例
            List<ServiceInstance> server8080 = discoveryClient.getInstances("SERVICE8080");
    		// 打印所有实例
            for (ServiceInstance serviceInstance : server8080) {
                System.out.println(serviceInstance.getInstanceId() + " host: " + serviceInstance.getHost() + " port:" +serviceInstance.getPort() );
            }
    
            return server8080;
        }
    }
    

注意

在配置yml文件时注意格式, 冒号 " : "后时需要有一个空格.

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值