服务注册中心:Eureka、Zookeeper、Consul 新的:Nacos
服务调用(1):Ribbon 新的:LoadBalancer
服务调用(2): Feign 新的:OpenFeign
服务降级:Hystrix 新的:resilience4j(国外), sentienl(国内)
服务网关:Zuul 新的:gateway
服务配置:Config 新的:Nacos
服务总线:Bus 新的:Nacos
Eureka的通信机制使用了http的rest接口实现,这也是eureka与其它注册工具的不同的一个关键点,由于http的平台无关性,Eureka Server 使用java来实现的,但是Eureka 在注册函数的时候,先调用publishEvent函数,将该新服务注册的事件传播出去,然后调用com.netflix.eureka.registry.AbstractInstanceRegistry父类中的注册实现,将Instanceinfo中的元数据信息存储在一个ConcurrentHashMap对象中。注册中心存储了两层的Map结构,第一层的key存储服务名:InstanceInfo中的appName属性,第二层的key存储实例名:InstanceInfo中的instanceId属性
Eureka Server 在运行期间,会统计心跳的失败比例在15分钟之内是否低于85%,如果出现低于的情况,Eureka Server 会将当前的实例注册信息保护起来,让这些实例不会过期,尽可能保护这些注册信息。
Eureka的事件列表:
- EurekaInstanceCanceledEvent: 服务下线事件
- EurekaInstanceRegisteredEvent: 服务注册事件
- EurekaInstanceRenewedEvent: 服务续约事件
- EurekaRegistryAvailableEvent: eureka注册中心启动事件
- EurekaServerStartedEvent: eureka server启动时间
1.构建高可用的服务注册中心集群时,我们可以为参数的vaule值配置多个注册中心的地址(通过逗号进行分割)如:eureka.client.serviceUrl.defaultZone=http://peer1:1111/eureka/,http://peer2:1112/eureka/
Eureka(AP原则)
服务注册 、服务续约、 获取注册列表信息 、 服务下线 、服务剔除
Eureka 客户端每隔30秒发送一次心跳续约,通过心跳续约告知Eureka Server 该Eureka客户端仍然存在,没有出现问题。正常情况下,如果Eureka Server 在90秒后没有收到Eureka客户端的续约,它将实例从注册列表中删除(Eureka的这种定时任务是通过JDK自带的Timer实现的)
Eureka Server 采用的是Peer to Peer 对等通信。这是一种去中心化的架构,没有master/slave区分,每一个peer都是对等的。在这种架构中,节点通过彼此相互注册来提高可用性,每一个节点需要添加一个或者多个有效的serviceUrl来指向其它节点。每个节点都被视为其它节点的副本。
@EnableDiscoveryClient 是通用的注册服务发现
@EnableEurekaClient 是专门为Eureka使用的
欢迎关注公众号:北漂之路之程序人生(技术博客)