什么是eureka
eureka是一种基于REST的服务,用于定位服务,可以实现中间层服务器(后端服务)的负载均衡和故障转移,这种服务称之为eureka server。其附带了基于java客户端组件的eureka client,可以使与服务的交互变得更加容易。其内置了一个负载均衡器,可以进行基本的循环负载均衡。
应用程序客户端和应用程序服务端是如何通信的?
eureka可以获取目标主机的ip地址并使用诸如RPC机制之类的协议,并且对这种协议没有任何的限制,那么有了目标主机的ip地址和相应的协议,客户端和服务端当然就可以通信了
eureka架构
架构图
eureka 包括两个组件,一个是eureka server,一个是eureka client,eureka server是作为服务的注册中心存在的,eureka clinet是将服务注册到注册中心并可以对注册中心内的服务进行调用的。
eureka是可以搭建集群的,并且这个集群是分不同的区域的,每个区域至少有一个eureka server,不同区域的每个eureka server存储的服务注册信息是一致的,保证了服务的高可用,并且这个区域内的eureka server只知道向自己注册服务的eureka client。eureka client每30s会发送一次心跳给eureka server来进行续租,如果在几次续约失败的情况下,eureka server会在90s之内将该eureka client踢掉,并且会将该client的注册信息和更细复制到每个eureka server的节点中,那么每个eureka client都可以去查找被踢掉的client的注册信息(该查找在每30s会发生一次),查找到之后进行远程的调用
弹性
这个弹性指的是eureka client会缓存自己的注册信息,即便所有的eureka server都死掉了,其仍旧可以正常的运行
多个区域
区域之间的eureka彼此之间是不通信的
监控
eureka是通过使用servo来监控客户端和服务端之间的大量信息的,数据是由JMX注册表提供,并且可以导出