Eureka注册中心工作原理-如何自己实现一个注册中心

  在微服务场景下,多个服务之间的相互调用是不可避免的。而注册中心的职责就是负责通联这些分布在不同地方上的服务(即服务注册与发现)。

  实际上服务注册与发现并不难,因为需求已经很明确了,除了上边提到的服务注册与发现,还应该有一个心跳机制,来确保注册过来的服务是可用的。

  所以本身而言,让我们实现一个注册中心,要解决的问题,应该有:一个注册表,来记录这些期望被调用的服务。一个心跳机制,保证服务提供端注册的服务可用。以及客户端的一个拉取机制。

Eureka的工作原理如下图

  实际上,在推送请求和拉取请求这件事上,推送注册表是一个写操作,而拉取注册表是一个读操作。写与读是有一个冲突的问题的,在eureka中为了避免读写的冲突,采用了多级缓存,延迟加载,通过最终一致性来解决读写冲突。

  1. 服务端把服务地址推送到注册表。
  2. 此时立马把注册表同步到读写缓存。
  3. 内部用一个线程来定时的吧读写缓存中的数据推送到只读缓存。
  4. 客户端定时的从只读缓存中读取配置。如果只读缓存没有数据,则去读写缓存拉取,如果有则拉取,如果没有则去注册表拉取。
  5. 注册中心还应该有一个心跳机制,定期的检查注册表中的服务是否可用。就是发送心跳包给服务提供端,如果正常则不操作。如果服务端服务不正常则将这个服务从注册表踢出,并质空读写缓存。

 

如何写一个能上生产的注册中心

  先来梳理一下能上生产的必要条件。我们知道本身微服务进行了拆分,引入了更多的技术来解决拆分后问题。多数通过第三方技术来解耦。那么就面临了一个必然的问题:单点故障。试想一下,注册中心实际上是服务之间的枢纽。如果注册中心挂掉了,整个服务就瘫痪了。想要保证服务高可用,中间件的高可用也是必须的。注册中心能不能上生产,重要的一个问题就是高可用。在服务中高可用,通常是用集群来解决的。所以上生产的注册中心,应该支持集群模式

  所以从上边提到了自己实现一个注册中心的两个需求(服务注册与发现  心跳机制),变成了再加上 支持集群模式。

  那么集群模式实现起来难吗?最主要的工作实际上是:客户端应该知道注册中心的全部地址,客户端加一个心跳机制,来检查注册中心是否存活,如果不存活尝试链接其他的注册中心;另外多个注册中心应该有一个互通获取服务注册表信息的功能。

 

 

 

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Eureka是Netflix开源的一个服务注册与发现组件,用于构建基于云平台的动态可伸缩的微服务架构。下面是Eureka注册中心的原理: 1. 服务注册:当一个微服务启动时,它会向Eureka注册中心发送注册请求,包含服务的元数据信息,如服务名称、IP地址、端口号等。Eureka注册中心会将这些信息保存起来,并维护一个服务实例列表。 2. 服务发现:当一个微服务需要调用其他服务时,它会向Eureka注册中心发送服务发现请求,指定要调用的服务名称。Eureka注册中心会返回所有提供该服务的微服务实例的地址列表。微服务可以根据这些地址进行负载均衡和调用。 3. 心跳与健康检查:为了保证注册中心的可靠性和及时更新服务状态,Eureka采用了心跳与健康检查机制。每个微服务会定时向Eureka发送心跳请求,以表明自己的健康状态。如果一个微服务长时间未发送心跳或被标记为不可用,Eureka将从服务列表中移除该实例。 4. 服务复制和高可用:Eureka采用了主从节点的架构,每个区域都有一个主节点和多个从节点。主节点负责处理注册、发现等请求,从节点用于缓存主节点的数据,以提高性能。如果主节点失效,从节点会自动接管,保证注册中心的高可用性。 5. 自我保护机制:Eureka还具有自我保护机制,用于防止网络故障导致的注册中心信息不一致。当Eureka服务器在一定时间内收到较少的心跳时,它会进入自我保护模式,不会删除任何服务实例,以避免误删正常服务。自我保护模式下,Eureka仍然接受注册和发现请求。 总结来说,Eureka注册中心通过服务注册和发现的机制,实现了微服务架构中的服务管理和调用。它能够帮助开发者更方便地实现服务的注册、发现和高可用性管理,提供了强大的服务治理能力。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值