eureka做服务发现,两个注册中心 分别为 eureka-server 和 eureka-server2(这两个注册中心的关系,看下边配置文件),  一个客户端demo-web.下面是这几个服务的配置文件信息:eureka-server:
eureka-server2:
如图所示, eureka-server,只是作为注册中心,不向任何服务注册(同时15s内如果接受不到client心跳,则移除该实例,并且没15s拉取一次服务注册信息),  eureka-server2, 向自己和eureka-server 注册(无其他特殊配置).demo-web:demo-web, 只向eureka-service 注册(并且每5s向注册中心发送心跳.) 下面是问题.问题一:
如eureka-server页面所示, 有两个client,分别为demo-web和eureka-server2.  但是,我把这停了其中一个服务之后, 这里显示这两个实例依然存活,这是什么原因?
问题二:
如图eureka-server2页面, eureka-server2 应该只有eureka-server2(也就是它自己) 这个实例才对啊, 为什么demo-web没有向eureka-server2注册,也会显示在这里

解决方案 »

  1.   

    第一个问题,SpringCloud是存在着缓存机制的,当一个服务挂掉之后,在多少秒内(自己设定的值),是仍然显示在Eureka上的,也就是只要引用者只要是在超时时间内引用的话,还是可以使用的,但使用的是缓存数据;
    第二个问题,你使用了两个Eureka互相注册,如果你对Eureka的底层了解一些的话,你会发现其实它和Zookeeper是很像的东西,都是用来做服务注册的,而你注册了两个Eureka,让他们互相注册,实际上这就起到了一种备份容灾的效果,他们之间通过一个叫做Bus的消息总线来传播信息,当你向一个Eureka上注册服务后,他们之间的数据就会互通,这就是为什么你会在另外一个Eureka上看到你的那个服务的原因。
      

  2.   

    这两个eureka 没有相互注册,  只是eureka2注册了 eureka1, 这样也会同步吗?