您的位置:首页 > 其它

Eureka之服务注册与发现

2020-07-20 04:13 441 查看

Eureka服务注册

先将Eureka client注册到Eureka Server 中,然后在启动类上使用@EnableEurekaClient开启客户端

客户端需要引入eureka-client依赖

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

Eureka-client的配置

register-with-eureka
: true 服务注册到Eureka
fetch-registry
: true 拉取eureka中的服务列表,这样才知道有哪些服务。
service-url
: 注册中心的地址
instance.instance-id
:实例id,在eureka服务列表中显示的,下图中Status中的那个名称,如果不写的话,就会显示主机+服务名称(application.name的值)

eureka:
client:
register-with-eureka: true
## 是否向eurekaServer抓取已有的注册信息
fetch-registry: true
service-url:
defaultZone: http://localhost:7001/eureka  # 注册到eurekaServer
instance:
instance-id: payment8001

服务发现
:在启动类上使用@EnableDiscoveryClient注解,然后你就可以在的程序中使用
@Autowire
DiscoveryClient discoveryClient; 来获取所有的服务列表
discoveryClient.getServices(): 获取eureka注册中心的所有服务列表
discoveryClient.getInstances(“服务名称【application.name】”) 获取指定的服务列表,返回值是一个集合(服务是可以集群部署的)
service:获取的实例,可以得到该服务相关的信息

@GetMapping("/services")
public String getALLService(){
List<String> services = discoveryClient.getServices();
/*cloud-payment-service, cloud-order-service 注册到eureka的服务*/
log.info("所有的服务"+services);

List<ServiceInstance> instances = discoveryClient.getInstances("cloud-order-service");
log.info("order的所有服务"+instances);
ServiceInstance orderService = instances.get(0);
String host = orderService.getHost();
String instanceId = orderService.getInstanceId();
URI uri = orderService.getUri();
// getInstance得到具体的服务列表
/*localhost---localhost:cloud-order-service:80---http://localhost:80---80*/
System.out.println(host+"---"+instanceId+"---"+uri+"---"+orderService.getPort());
return "success";
}

Eureka注册中心

注册中心需要映入eureka-server依赖,启动类似@EnableEurekaServer注册即可

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

注册中心yml配置:
register-with-eureka: false 单节点的Eureak Server 不需要注册到服务列表中去

server:
port: 7001

spring:
application:
name: server7001
eureka:
instance:
hostname: eureka7001.com #eureka服务端的实例名称 写主机的名称
client:
# false表示不向注册中心注册自己
register-with-eureka: false
# false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要检索服务
fetch-registry: false
service-url:
defaultZone: http://eureka7001.com:7001/eureka
server:
#关闭自我保护模式,保证不可用服务被及时删除
enable-self-preservation: false
eviction-interval-timer-in-ms: 2000

注册中心集群,相互注册,避免单点故障
只需要将该注册中心注册 到其他的注册中心即可,service-url是其他注册中心的地址
register-with-eureka改为true,注册到其他注册中心去
fetch-registry 改为true,拉取注册中心的服务列表
service-url:
defaultZone: http://eureka7002:com:7002/eureka

以后我们的客户端在注册到注册中心的时候,我们在 service-url 中写多个地址即可

以上是观看尚硅谷教学视频后的总结,如果有不对之处,请指正,,感谢!!

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: