Eureka服务

1、EurekaApplication

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

@SpringBootApplication
@EnableEurekaServer
public class EurekaApplication {
    public static void main(String[] args) {
        SpringApplication.run(EurekaApplication.class,args);
    }
}

2、application.yml

server:
  port: 7001
eureka:
  instance:
    hostname: 127.0.0.1
  client:
    register-with-eureka: false   #是否将自己注册到eureka中
    fetch-registry: false         #是否从eureka中获取信息
    service-url:
      defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
spring:
  application:
    name: eureka
获取Eureka服务列表可从Eureka Server和Eureka Client两个角度进行操作。 从代码层面获取Eureka服务列表,可借助`DiscoveryClient`类。示例代码如下: ```java import org.springframework.cloud.client.discovery.DiscoveryClient; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; import java.util.ArrayList; import java.util.List; import org.springframework.cloud.client.ServiceInstance; @Service public class EurekaServiceListFetcher { @Autowired private DiscoveryClient discoveryClient; public List<List<ServiceInstance>> getServiceLists() { List<List<ServiceInstance>> servicesList = new ArrayList<>(); // 获取服务名称 List<String> serviceNames = discoveryClient.getServices(); for (String serviceName : serviceNames) { List<ServiceInstance> instances = discoveryClient.getInstances(serviceName); servicesList.add(instances); } return servicesList; } } ``` 此代码通过`DiscoveryClient`获取所有服务名称,再依据服务名称获取对应的服务实例列表,最终将其存于`servicesList`中返回 [^2]。 从Eureka Client角度,客户端会在本地缓存服务注册表,默认每30秒从Eureka Server拉取一次服务注册表,拉取操作可以是全量更新或增量更新,客户端将拉取到的服务列表缓存在内存中。相关配置参数如下: ```properties eureka.client.registry-fetch-interval-seconds=30 # 拉取服务注册表的间隔时间 eureka.client.cache-refresh-executor-thread-pool-size=2 # 缓存刷新线程池大小 eureka.client.cache-refresh-executor-exponential-back-off-bound=10 # 缓存刷新退避策略参数 ``` 通过这些配置,客户端能定时更新本地缓存的服务列表 [^1]。 从流程方面来看,Eureka客户端获取服务的过程如下: 1. 初始化`HeartBeat`的`task`; 2. 将`task`进一步包装成定时`timerTask`; 3. 定时时间到,执行`timeTask`; 4. `task`获得线程资源,执行`refreshRegistry()`; 5. 服务端接受请求; 6. 获取`Applications` [^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

青春1314

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值