eureka
1.1 服务端注册中心
服务注册:A服务分别运行在localhost:8080和localhost:8081,B服务运行在localhost:9000、localhost:9001和localhost:9002,注册中心上会维护一张表,表的key是服务名,value是对应的位置。
服务剔除:按照设定的时间,把没有续约的服务从注册中心剔除出去
单节点应用:服务A注册到一个注册中心
集群应用:如果注册中心挂了,单节点应用就恨不可靠,所以为了增加可靠性和容错性,出现了集群应用,注册中心1注册到注册中心2,注册中心2注册到注册中心1,这样相互注册。如果服务A注册到了注册中心 1,注册中心2上也有服务A,具有传递性。
demo
@SpringBootApplication
@EnableEurekaServer
public class Application{
public static void main(String[] args){
new SpringApplicationBuilder(Application.class).web(true).run(args);
}
}
server.port=1111
eureka.instance.hostname=localhost
#不向注册中心注册自己
eureka.client.register-with-eureka=false
#不从注册中心拉取信息,注册中心只维护信息
eureka.client.fetch-registry=false
eureka.client.serviceUrl.defaultZone=http://
e
u
r
e
k
a
.
i
n
s
t
a
n
c
e
.
h
o
s
t
n
a
m
e
:
{eureka.instance.hostname}:
eureka.instance.hostname:{server.port}/eureka/
1.2 客户端服务提供者
服务注册
像注册中心注册自己,通过一个双层Map存储自己的信息
服务续约
每隔指定的时间给注册中心发送一个心跳,证明自己还活着,不然就要被注册中心剔除出去
服务发现
通过@EurekaDiscoverClient注解
服务同步
如果两个服务分别注册到两个不同的注册中心,但是这两个注册中心互相连通,那么当服务提供者发送一个注册请求到对应注册中心的时候,它会将该请求转发给连通的注册中心。
1.3 客户端消费者
获取提供者列表
像注册中心注册自己
服务发现
通过@EurekaDiscoverClient注解
服务调用
可以通过ribbon或者Feign进行调用,ribbon是基于客户端代理的一种调用
服务下线
当服务正常下线,会告知注册中心该服务要下线了,如果是异常下线,注册中心会创建一个定时任务,定时把没有续约的服务剔除。
自我保护
注:一般客户端既是消费者又是提供者,所以都拥有服务发现的能力,也都会被注册到注册中心