JAVA开发(分布式部署微服务注册到Eureka出现registration status: 204错误)

这篇具有很好参考价值的文章主要介绍了JAVA开发(分布式部署微服务注册到Eureka出现registration status: 204错误)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

问题背景:

将服务注册到多个Eureka出现有点的服务只注册到一个Eureka有点的服务可以注册到多个Eureka的问题,有的注册不上,报错:registration status: 204

Eureka界面:

Eureka1:

JAVA开发(分布式部署微服务注册到Eureka出现registration status: 204错误)

Eureka2:

JAVA开发(分布式部署微服务注册到Eureka出现registration status: 204错误)

 从截图可以看出有两台服务器上的HN-BASE-ADMIN 和HN-BLOCKCHAIN-BUSINESS都可以注册到Eureka1

HN-BASE-GATEWAY分别都只有一台服务器上的微服务注册成功。

日志报错::registration status: 204

我们先了解Eureka的工作原理:

JAVA开发(分布式部署微服务注册到Eureka出现registration status: 204错误)

 简要介绍:

Eureka 是 Netflix 出品的用于实现服务注册和发现的工具,Spring Cloud 封装了 Netflix 公司开发的 Eureka 模块来实现服务注册和发现
Eureka采用C-S的设计架构,包含Eureka Server 和Eureka Client两个组件

基本工作原理:

Applecation-server :服务提供者
Application-cliene:服务消费者
服务启动后向Eureka注册,Eureka Server会将注册信息向其他Eureka Server进行同步,当服务消费者要调用服务提供者,则向服务注册中心获取服务提供者地址,然后会将服务提供者地址缓存在本地,下次再调用时,则直接从本地缓存中取,完成一次调用。

JAVA开发(分布式部署微服务注册到Eureka出现registration status: 204错误)

1.服务注册(register):Eureka Client会通过发送REST请求的方式,向Eureka Server注册自己的服务。注册时,提供自身的元数据,比如ip地址、端口、运行状况指标、主页地址等信息。Eureka Server接收到注册请求后,就会把这些元数据信息存储在一个双层的Map中。什么时候注册?在启动微服务的时候。

2.服务续约(renew):在服务注册后,Eureka Client会维护一个心跳来持续通知Eureka Server,说明服务一直处于可用状态,防止被剔除。默认每隔30秒eureka.instance.lease-renewal-interval-in-seconds 发送一次心跳来进行服务续约。

3.获取服务列表(get registry):服务消费者(Eureka Client)在启动的时候,会发送一个REST请求给Eureka Server,获取注册中心的服务清单,并且缓存在客户端本地。同时,为了性能及安全性考虑,Eureka Server会每隔30秒更新一次缓存中的服务清单。

4.服务调用:服务消费者在获取到服务清单后,可以根据清单中的服务信息,查找到该服务的地址,从而进行访问(远程调用)。

6.服务下线(cancel):当Eureka Client需要关闭或重启时,就不希望在这个时间段内再有请求进来,所以,就需要提前先发送REST请求给EurekaServer,告诉Eureka Server自己要下线了,Eureka Server在收到请求后,就会把该服务状态置为下线(DOWN),并把该下线事件传播出去。

7.失效剔除(evict):服务实例可能会因为网络故障等原因,导致不能提供服务,而此时该实例也没有发送请求给Eureka Server来进行服务下线。所以,还需要有服务剔除的机制。Eureka Server在启动的时候会创建一个定时任务,每隔一段时间(默认60秒),从当前服务清单中把超时没有续约(默认90秒eureka.instance.lease-expiration-duration-inseconds)的服务剔除。

服务端配置:

server:
  port: 7001

eureka:
  instance:
    hostname: eureka7001.com #eureka服务端的实例名称
  client:
    register-with-eureka: false #false表示不向注册中心注册自己。
    fetch-registry: false #false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
      defaultZone: http://eureka1.com:7002/eureka/,http://eureka2.com:7003/eureka/ #设置与Eureka Server交互的地址查询服务和注册服务都需要依赖这个地址。

单机模式配置:

#--------------------------单机模式--------------------------#
#eureka:
#  instance:
#    instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}
#    prefer-ip-address: true
#    ip-address: localhost
#    #服务续约(renew)的间隔,默认为30秒
#    lease-renewal-interval-in-seconds: 30
#    #服务失效时间
#    lease-expiration-duration-in-seconds: 90
#  server:
#    # 设置eureka是否启动自我保护   true指开启eureka的自我保护   false指关闭eureka的自我保护
#    # 如果关闭eureka的自我保护,则不可用的服务会被及时剔除掉
#    enable-self-preservation: false
#    # 剔除服务的时间间隔毫秒数(单位:毫秒)  扫描失效服务的时间间隔(默认是60*1000 即60秒)
#    eviction-interval-timer-in-ms: 5000
#
#  client:
#    register-with-eureka: false # 表示是否向Eureka注册中心注册自己
#    fetch-registry: false # 如果为false 则表示自己为注册中心
#    service-url:
#      defaultZone: http://localhost:8762/eureka/

集群模式模式配置:

#--------------------------集群模式--------------------------#
eureka:
  instance:
    instance-id: ${spring.cloud.client.ip-address}:${spring.application.name}:${server.port}
    prefer-ip-address: true
    ip-address: 10.13.10.6
    #服务续约(renew)的间隔,默认为30秒
    lease-renewal-interval-in-seconds: 30
    #服务失效时间
    lease-expiration-duration-in-seconds: 60
  server:
    # 设置eureka是否启动自我保护   true指开启eureka的自我保护   false指关闭eureka的自我保护
    # 如果关闭eureka的自我保护,则不可用的服务会被及时剔除掉
    enable-self-preservation: false
    # 剔除服务的时间间隔毫秒数(单位:毫秒)  扫描失效服务的时间间隔(默认是60*1000 即60秒)
    eviction-interval-timer-in-ms: 5000

  client:
    register-with-eureka: true # 表示是否向Eureka注册中心注册自己
    fetch-registry: true # false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务
    service-url:
      defaultZone: ${app.eureka.defaultZone} #注册的注册中心集群配置

其中{app.eureka.defaultZone} 通过外部配置注入,这个的配置需要指定IP,最好不要用hosts映射域名。

如:

http://eureka1:8761/eureka/,http://eureka2:8761/eureka/

应该直接指定域名:

http://10.13.13.8:8761/eureka/,http://10.13.13.7:8761/eureka/

问题解决:

注意!!!!

如果使用域名映射就会出现 registration status: 204,使用http://10.13.13.8:8761/eureka/,http://10.13.13.7:8761/eureka/ 就可以全部注册上了

JAVA开发(分布式部署微服务注册到Eureka出现registration status: 204错误)

随便介绍一下eureka与nacos的区别

Nacos与eureka的共同点

都支持服务注册和服务拉取

都支持服务提供者心跳方式做健康检测

Nacos与Eureka的区别

Nacos支持服务端主动检测提供者状态:临时实例采用心跳模式,非临时实例采用主动检测模式

临时实例心跳不正常会被剔除,非临时实例则不会被剔除

Nacos支持服务列表变更的消息推送模式,服务列表更新更及时

Nacos集群默认采用AP方式,当集群中存在非临时实例时,采用CP模式;Eureka采用AP方式

1、范围不同。

Nacos的阈值是针对某个具体Service的,而不是针对所有服务的;但Eureka的自我保护阈值是针对所有服务的。nacos支持CP和AP两种;eureka只支持AP。nacos使用netty,是长连接;eureka是短连接,定时发送

2、保护方式不同。

Eureka保护方式:当在短时间内,统计续约失败的比例,如果达到一定阈值,则会触发自我保护的机制,在该机制下,Eureka Server不会剔除任何的微服务,等到正常后,再退出自我保护机制。自我保护开关(eureka.server.enable-self-preservation: false)。

Nacos保护方式:当域名健康实例(Instance)占总服务实例(Instance)的比例小于阈值时,无论实例(Instance)是否健康,都会将这个实例(Instance)返回给客户端。这样做虽然损失了一部分流量,但是保证了集群的剩余健康实例(Instance)能正常工作。

3、连接方式不同。

nacos支持动态刷新,在控制器(controller)上加@RefreshScope注解即可,采用Netty连接,是长连接;eureka本身不支持动态刷新,需要配合MQ完成动态刷新,且是短连接,是定时发送。

Nacos中的CAP模式切换

Nacos 支持 AP 和 CP 模式的切换,这意味着 Nacos 同时支持两者一致性协议。这样,Nacos能够以一个注册中心管理这些生态的服务。不过在Nacos中,AP模式和CP模式的具体含义,还需要再说明下。

AP模式为了服务的可能性而减弱了一致性,因此AP模式下只支持注册临时实例。AP 模式是在网络分区下也能够注册实例。在AP模式下也不能编辑服务的元数据等非实例级别的数据,但是允许创建一个默认配置的服务。同时注册实例前不需要进行创建服务的操作,因为这种模式下,服务其实降级成一个简单的字符创标识,不在存储任何属性,会在注册实例的时候自动创建。

CP模式下则支持注册持久化实例,此时则是以 Raft 协议为集群运行模式,因此网络分区下不能够注册实例,在网络正常情况下,可以编辑服务器别的配置。改模式下注册实例之前必须先注册服务,如果服务不存在,则会返回错误。

MIXED 模式可能是一种比较让人迷惑的模式,这种模式的设立主要是为了能够同时支持临时实例和持久化实例的注册。这种模式下,注册实例之前必须创建服务,在服务已经存在的前提下,临时实例可以在网络分区的情况下进行注册。文章来源地址https://www.toymoban.com/news/detail-481735.html

到了这里,关于JAVA开发(分布式部署微服务注册到Eureka出现registration status: 204错误)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Zookeeper 实战 | Zookeeper 和Spring Cloud相结合解决分布式锁、服务注册与发现、配置管理

    专栏集锦,大佬们可以收藏以备不时之需: Spring Cloud 专栏: Python 专栏: Redis 专栏: TensorFlow 专栏: Logback 专栏: 量子计算: 量子计算 | 解密著名量子算法Shor算法和Grover算法 AI机器学习实战: AI机器学习实战 | 使用 Python 和 scikit-learn 库进行情感分析 AI机器学习 | 基于lib

    2024年02月05日
    浏览(90)
  • Docker部署ZooKeeper分布式协调服务

    1、准备工作 2、创建TEST容器,将conf目录COPY出来,在映射进去,方便后续维护管理! 3、运行容器 4、测试链接zookeeper 正常输出内容:

    2024年02月07日
    浏览(47)
  • (大数据开发随笔9)Hadoop 3.3.x分布式环境部署——全分布式模式

    分布式文件系统中,HDFS相关的守护进程也分布在不同的机器上,如: NameNode守护进程,尽可能单独部署在一台硬件性能较好的机器中 其他的每台机器上都会部署一个DataNode进程,一般的硬件环境即可 SecondaryNameNode守护进程最好不要和NameNode在同一台机器上 守护进程布局 Name

    2023年04月16日
    浏览(60)
  • 【业务功能篇96】微服务-springcloud-springboot-认证服务-登录注册功能-Auth2.0-分布式session

      通过最基础的登录操作来完成登录处理 登录页面处理 认证服务的处理 会员中心的认证逻辑 service中的具体认证处理   OAuth2.0是OAuth协议的延续版本,但不向前兼容OAuth 1.0(即完全废止了OAuth1.0)。 OAuth 2.0关注客户端开发者的简易性。要么通过组织在资源拥有者和HTTP服务商

    2024年02月09日
    浏览(56)
  • 如何保证分布式系统中服务的高可用性:应对 ZooKeeper Leader 节点故障的注册处理策略

    作者:zhaokk 在现代分布式系统中,高可用性是一个至关重要的。分布式系统中的各个组件需要保证在各种异常情况下仍然能够正常工作,确保系统的稳定性和可靠性。ZooKeeper(以下简称为zk)作为一种常用的分布式协调服务,为分布式系统中的各种任务提供了基础支持

    2024年02月11日
    浏览(67)
  • Eureka整合seata分布式事务

    在分布式系统下,一个业务跨越多个服务或数据源,每个服务都是一个分支事务,要保证所有分支事务最终状态一致,这样的事务就是分布式事务。 、CAP定理 1、一致性 用户访问分布式系统中的任意节点,得到的数据必须是一致的。 节点1的数据一旦发生修改,节点2的数据必

    2024年01月19日
    浏览(50)
  • 分布式运用之Filebeat+Kafka+ELK 的服务部署

    Kafka 中消息是以 topic 进行分类的,生产者生产消息,消费者消费消息,都是面向 topic 的。 topic 是逻辑上的概念,而 partition 是物理上的概念,每个 partition 对应于一个 log 文件,该 log 文件中存储的就是 producer 生产的数据。Producer 生产的数据会被不断追加到该 log 文件末端,

    2024年02月06日
    浏览(47)
  • 如何在多个服务器上安装WordPress分布式部署

    许多网络主机现在保证其服务的正常运行时间为 99.9%,但这仍然每年最多有 8.7 小时的停机时间。 许多公司不能够承担这种风险。例如。在超级碗比赛中失败的体育新闻网站可能会失去忠实的追随者。 我们通过设置维护高可用性 WordPress分布式部署配置来帮助 WordPress 网站主防

    2024年02月05日
    浏览(54)
  • Linux分布式应用 Zabbix监控配置[添加主机 自定义监控内容 邮件报警 自动发现/注册 代理服务器 高可用集群]

    关闭防火墙  服务端和客户端都配置时间同步 服务端和客户端都设置 hosts 解析 设置 zabbix 的下载源,安装 zabbix-agent2 修改 agent2 配置文件 启动 zabbix-agent2 在服务端验证 zabbix-agent2 的连通性 在 Web 页面中添加 agent 主 机 点击左边菜单栏【配置】中的【主机】,点击【创建主机

    2024年02月13日
    浏览(59)
  • 四种部署模式的优缺点(单机、集群、分布式、微服务)

    单机 部署含义:所有的业务全部写在一个项目中,部署服务到一台服务器上。 单机 部署优点:方便开发、学习成本低,方便部署。 单机 部署缺点:当一个模块出现问题,整个系统全部停止更新。 集群 部署含义:集群就是单机的“复制”,同一个业务,部署在多个服务器上

    2024年02月04日
    浏览(56)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包