一、服务注册与发现

一、Eureka

    Eureka采用了CS的设计架构,Eureka  Server作为服务注册功能的服务器,它是服务注册中心。而系统中的其他微服务,使用Eureka的客户端连接到Eureka Server并维持心跳连接。这样系统的运维人员就可以通过Eureka Server来监控系统中能够各个微服务是否正常运行

    当服务启动的时候,会把自己服务器的信息(比如服务地址/通讯地址等)以别名方式注册到注册测中心上。另一方(消费者|服务提供者)以该别名的方式去注册中心上获取实际的服务通讯地址,然后再实现本地RPC调用远程RPC。

eureka

    1.Eureka的两个组件

Eureka Server 提供服务注册服务:各个微服务节点通过配置启动后,会在EurekaServer中进行注册,这样EurekaServer中的服务器注册表中将会存储所有可用服务节点的信息,服务节点的信息会在界面中进行直观展示。

EurekaClient 通过注册中心访问:它是一个Java客户端,用于简化EurekaServer的交互,客户端同时也具备一个内置的、使用轮询(round-robin)负载算法的负载均衡器。在应用启动后,将会向EurekaServer发送心跳(默认周期为30秒)。如果EurekaServer在多个心跳周期内没有接收到某个节点的心跳,EurekaServer将会从服务注册表中把这个服务节点移除(默认90秒)

**名词解释**

服务注册 Register: 当 Eureka 客户端向 Eureka Server 注册时,它提供自身的元数据,比如IP地址、端口,运行状况指示符URL,主页等。

服务续约 Renew: Eureka 客户会每隔30秒(默认情况下)发送一次心跳来续约。通过续约来告知 Eureka Server 该 Eureka 客户仍然存在,没有出现问题。正常情况下,如果 Eureka Server 在90秒没有收到 Eureka 客户的续约,它会将实例从其注册表中删除。

获取注册列表信息 Fetch Registries: Eureka 客户端从服务器获取注册表信息,并将其缓存在本地。客户端会使用该信息查找其他服务,从而进行远程调用。该注册列表信息定期(每30秒钟)更新一次。每次返回注册列表信息可能与 Eureka 客户端的缓存信息不同, Eureka 客户端自动处理。如果由于某种原因导致注册列表信息不能及时匹配,Eureka 客户端则会重新获取整个注册表信息。Eureka 服务器缓存注册列表信息,整个注册表以及每个应用程序的信息进行了压缩,压缩内容和没有压缩的内容完全相同。Eureka 客户端和 Eureka 服务器可以使用JSON / XML格式进行通讯。在默认的情况下 Eureka 客户端使用压缩 JSON 格式来获取注册列表的信息。

服务下线 Cancel : Eureka客户端在程序关闭时向Eureka服务器发送取消请求。发送请求后,该客户端实例信息将从服务器的实例注册表中删除。该下线请求不会自动完成,它需要调用以下内容:DiscoveryManager.getInstance().shutdownComponent();

服务剔除 Eviction: 在默认的情况下,当Eureka客户端连续90秒(3个续约周期)没有向Eureka服务器发送服务续约,即心跳,Eureka服务器会将该服务实例从服务注册列表删除,即服务剔除。

    2.Eureka自我保护机制

为什么? 当EurekaClient与EurekaServer网络不通时,EurekaServer不会立刻把EurekaClient服务剔除

是什么?默认情况下,如果EurekaServer在一定时间内没有收到某个微服务实例的心跳,EurekaServer将会注销该实例(默认90秒)。但是当网络分区故障发生(延时、卡顿、拥挤)时,微服务与EruekaServer之间无法正常通信,以上行为可能变得非常危险了——因为微服务本身其实是健康的,此时不应该注销这个微服务。这时候就需要进行自我保护模式。 

    3. Eureka现状

    Eureka1.0仍可以使用,但是2.0版本已经停更


二、zookeeper

    Zookeeper是一个分布式的开放源码的分布式应用程序协调服务,是Google的Chubby开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。  

(zookeeper=文件系统+监听通知机制

    1.Zookeeper的节点类型

① 临时节点 ②带序号的临时节点 ③ 持久节点 ④带序号的持久节点

    2. Zookeeper作为注册中心,其节点是临时节点

在与服务提供者失去心跳连接一段时间后,zookeeper将会把该服务信息删除,如果该服务重新注册,就能获取服务注册信息。


三、consul

    Consul 是一套开源的分布式服务发现配置管理系统,由HashiCorp公司用Go语言开发。

    提供了微服务系统中的服务治理配置中心控制总线等功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网络。


四、三个组件的异同点

三种组件异同

    Erueka -- 注重可用性和容错性,在与服务提供者断连以后仍保留该服务节点的数据。

    Consul和Zookeeper -- 注重一致性和容错性,会在默认时间内删除服务节点信息,反应快。

    CAP架构

C:Consistency (强一致性)

A:Availability(可用性)

P:Partition tolerance(分区容错性)

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

友情链接更多精彩内容