一、Eureka分为服务端server和客户端client
每个服务都是一个项目
客户端、服务端、注册中心
服务端先向注册中心 注册自己,表明自己还存活
服务端不需要自己注册自己、
# 以下为注册中心注册
eureka:
instance:
hostname: localhost #服务实例名称
client:
register-with-eureka: false #false 表示不向注册中心注册自己
fetch-registry: false #false 表示自己端就是注册中心,我的职责是维护服务实例,并不需要去检索服务
service-url:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/ #eureka地址
eureka 集群:互相注册,相互守望
在服务发布则在服务发布的过程中,注册到注册中心,调用者之前通过id查找对应的地址。现在则直接通过服务的应用名称,配置负载均衡这解决问题!
spring:
application:
name: cloud-payment-service
# 以下为客户端、服务器注册
eureka:
client:
register-with-eureka: true
fetch-registry: true
service-url:
defaultZone: http://eureka7001.com:7001/eureka/,http://eureka7002.com:7002/eureka/ #注册中心地址(-------------------------------调用者只关心自己的ip------具体内部跳转不管调用者的事)
image.png
特别功能:
如果在8001上面需要查看自己下面有哪些服务???
springcloud 提供了DiscoveryClient 方法。我们能够通过DiscoveryClient获取指定的方法
List<String> services = discoveryClient.getServices();
for (String element:services) {
log.info(" ----- element:" +element);
}
List<ServiceInstance> instances = discoveryClient.getInstances("cloud-payment-service");
for (ServiceInstance instance:instances) {
log.info(instance.getServiceId()+"\t" + instance.getHost()+"\t"+instance.getPort()+"\t"+instance.getUri());
}
eureka的自我保护机制。 自行百度查询
切记中心思想:(eureka,zookeper,consul思想一样)
注册中心相互守望,提供者、调用者将自己也注入到注册中心。调用者通过服务名称查找到对应的服务进行调用
在作为服务注册中心- eureka 是一个单独的项目。
zookeper是一个配置好的应用,
consul也是一个配置好的应用
网友评论