【Spring Cloud Alibaba Nacos】Nacos心跳机制实现快速上下线
创始人
2025-06-01 22:03:45
0

文章目录

  • 前言
  • Metadata元数据
  • ClassMetadata
  • Spring中常见的一些元注解
  • Nacos心跳时间自定义配置
  • Ribboon 的ServerListRefreshInterval
  • 总结

前言

我们都知道Spring Cloud Alibaba Nacos是通过客户端和服务端的心跳机制,来实现服务的注册和下线的,Nacos的心跳机制默认是存在BeatInfoperiod属性里面的,默认的心跳周期是5s,心跳的超时时间是15s,就意味着如果超过15秒不发送心跳,Nacos就认为这个服务不健康了,超过30秒该实例就将被Nacos删除下线。

在某种情况下,显然不太满足公司项目的要求,默认的心跳时间30秒太长了,服务的上线和下线的感知还是有点慢的,为了能让服务上下线进行快速感知,我调整了Nacos的心跳配置时间。

Metadata元数据

但是如何修改Nacos的默认心跳配置呢?这里就涉及到元数据的一个概念,说实话之前我也不知道什么元数据,通过自定义修改了Nacos的心跳时间配置,才知道是需要用到元数据的。

我们知道Spring之前的版本是通过XML的拓展机制,进行文件配置的,我们需要自定义很多xml文件,进行一些针对于项目自身业务的个性化配置,xml的这种配置实在让人看着繁琐,随着Spring3.0+版本的发展,通过注解的方式就能进行个性化配置。

ClassMetadata

对Class进行适配,我们可以看到这个接口有很多方法,基本是对Class的一些配置,包括是isAnnotation(否是注解)、isAbstract(是否抽象类)、hasEnclosingClass(是否是内部类)等,只需要知道它是一个对Class进行配置的接口就行。
在这里插入图片描述

这里可以看到StandardClassMetadataMethodsMetadataSimpleAnnotationMetadata继承了ClassMetadataAnnotatedTypeMetadata两个顶层接口。

  • StandardClassMetadata:基于反射实现元数据的获取;
  • MethodsMetadata:获取元数据方法的接口;这里我们就不深究了,大概知道有这些就可以了。
    在这里插入图片描述

Spring中常见的一些元注解

@Target、@Retention、@Documented、@Inherited、@interface这些都是我们在声明自定义注解的时候需要配置的一些参数。

Nacos心跳时间自定义配置

通过yml配置文件,配置元数据属性对Nacos心跳时间进行自定义配置。

spring:application:name: Lxlxxx-systemcloud:nacos:discovery:metadata:preserved.heart.beat.interval: 1000 #心跳间隔。时间单位:毫秒。心跳间隔preserved.heart.beat.timeout: 3000 #心跳暂停。时间单位:毫秒。 即服务端6秒收不到客户端心跳,会将该客户端注册的实例设为不健康:preserved.ip.delete.timeout: 3000 #Ip删除超时。时间单位:毫秒。即服务端9秒收不到客户端心跳,会将该客户端注册的实例删除:

配置完后重启服务,通过对NacosNamingService类Debug断点,可以看到已将配置的心跳参数注入到Instance实例中,通过NamingProxy代理将服务注册到Nacos。
在这里插入图片描述

查看服务详情,可以看到注册的服务,自定义心跳时间配置已被添加进去,舒服了。
在这里插入图片描述

Ribboon 的ServerListRefreshInterval

但是仅仅这样是不够的,这样配置只能单纯保持微服务的快速响应上下线,但是在微服务的架构下,我们是通过gateway网关进行转发,访问到每个微服务实例的,ribbon负载均衡会定时去拉去注册中心最新的服务实例给到gateway,然后将最新的服务实例更新到本地缓存中。
Ribbon对注册中心服务拉取主要在PollingServerListUpdater这个类里面,通过获取ribbon的ServerListRefreshInterval自定义参数去拉取最新服务实例的频率,这里就简单介绍下ribbon负载均衡组件之一服务列表刷新器

//默认30秒去执行一次刷新
private static int LISTOFSERVERS_CACHE_REPEAT_INTERVAL = 30 * 1000; // msecs;
ribbon:ServerListRefreshInterval: 3000 

将gateway的yml配置文件,设置ribbon的拉取最新服务实例的频率为3s,这样就能配合着客户端服务的注册,实现服务的快速上下线。

总结

Nacos服务注册和发现太慢这个问题,我也是在公司项目中发现,每次发布构建完项目,我通过swaager访问接口文档就会半天刷不出来,调用也是需要等一会才能调用,所以我就试着修改了项目的Nacos的心跳配置参数。
我们在学习技术了解技术底层的同时,本身就是服务于我们的业务的,根据自身项目的需求去制定匹配自己业务的配置,这也就是架构思想的开始,我们都不希望永远写代码,做技术的都想进阶当架构师,前提需要吃透底层逻辑,万变不离其宗,保持学习,保持进步。

相关内容

热门资讯

科创板人工智能ETF(5889... 6月3日,三大指数集体低开,科技方向震荡走高。截至发稿,相关ETF方面,科创板人工智能ETF(588...
烧掉一半净利润,拼多多想培育怎... 当外部不确定性日益增加,为中小商家提供“避风港”和“助推器”,助力其度过周期波动,这种“授人以渔”的...
“苏超”霸屏,中国可以靠江苏搞... 01 经济独立,城市人格独立最近一段时间,无相君的朋友圈和微信群都被“苏超”霸屏了。几乎每天一个热搜...
【开盘】A股三大股指集体低开,... 6月3日,A股三大股指集体低开。其中,沪指跌0.22%报3340.07点,深成指跌0.34%报100...
刚刚!深交所宣布:调整→ 深交... 6月3日,深交所发布公告,根据指数编制规则,深圳证券交易所和深圳证券信息有限公司决定于2025年6月...
两宗券商“老鼠仓”曝光→ 股市... 地方证监局最新披露的罚单,让两起券商从业人员“老鼠仓”案件浮出水面,2家龙头券商中信证券、华泰证券牵...
大热IP经济难“包治百病”,明... 近日,IP经济、黄金概念股表现活跃,明牌珠宝股价涨停。5月29日,明牌珠宝发布公告称,公司股票连续两...
银河证券:港股市场情绪仍需观察... 银河证券发布港股策略研报称,港股市场情绪仍需观察关税政策走向。近期国际贸易局势反复无常,前景仍然不明...
银河证券:短期内A股市场或仍维... 银河证券发布A股策略研报称,近期板块轮动速度加快,行情震荡格局尚未改变,市场成交额未出现明显放量,仍...
哪吒汽车,注定掉队 哪吒汽车,... 定焦One(dingjiaoone)原创特约作者 | 胡锟编辑 | 魏佳从登顶新势力销量冠军,到几乎...
牛市早报|端午假期预计全社会跨... 【市场数据】截至5月30日收盘,上证综指跌0.47%,报3347.49点;科创50指数跌0.94%,...
黄酒真的雄起了? 黄酒真的雄起... 斑马消费 杨伟2025年A股酒水板块“冰火两重天”,白酒承压,啤酒失速,黄酒却异军突起!Wind 5...
一台不到600元,魅族新机大火... 对于整个手机市场来说,华米OV等国产手机的市场大战已经日渐稳定,各家手机企业都处于平淡化的状态,就在...
港股稳定币概念暴涨!刘煜辉:人... 6月2日,在港股市场上,数字货币概念股集体拉升,连连数字盘中一度上涨80%,移卡一度涨近50%,欧科...
又现百万罚单 消金合作机构管理... 北京商报讯(记者 岳品瑜 董晗萱)消费金融机构的一张新罚单,又指向合作业务管理。6月2日,北京商报记...
国际金价重返高位 炒金是否卷土... 6月2日,国际金价重返3300美元/盎司高位,截至北京商报记者发稿,金价涨幅超过2%,盘中突破336...
股价翻倍基金霸屏 创新药否极泰... 证券时报记者 裴利瑞今年以来,中国创新药行业正经历了一场前所未有的价值重估,而且在近期呈现加速趋势。...
5000亿人民币新型融资政策工... 内容提要:中国计划推出5000亿元新型政策性金融工具,重点投向新基建与消费领域,以对冲出口压力。但企...
美国5月ISM制造业PMI连续... 6月2日周一,ISM公布的数据显示,美国5月ISM制造业活动连续三个月萎缩,在关税上调的背景下,进口...
国内油价或现年内第四涨 加满一...   中新经纬6月3日电 (万可义)国内成品油新一轮调价窗口将于6月3日24时开启。综合机构观点,国内...