Nacos作为配置中心的一些知识二

11292327

问:客户端发请求给Nacos服务端,服务端这边会进行哪些处理?

答:客户端发请求给Nacos 服务端 ,服务端这边通过ConfigController类的309行的listener方法,进行处理

第一步 获取客户端请求的文件的md5值,查看是否发生变化,若发生md5值发生变化,则说明对应的配置文件发生了变化

然后在ConfigController类的328行做长轮询 执行inner.doPollingConfig()方法

doPollingConfig()方法在ConfigServletInner类的78行,其中调用了addLongPollingClient方法

addLongPollingClient方法在LongPollingService类的240行

其中定义了delayTime,固定延迟时间500毫秒

定义timeout,超时时间,值为29.5秒

然后是LongPollingService类的260行的MD5Util.compareMd5()方法,比较客户端的md5和server端的是否一致,不一致的返回到changeGroups,生成响应信息返回。

11300008 

不想做笔记了  质量不高 中间有些没有连接上的,有时间,有心情了,再做吧

LongPollingService类的415行 run()方法里,创建一个Runnable()线程

在这个线程中,在LongPollingService类423行,将当前的ClientLongPolling移出去,因为时间到了

然后在LongPollingService类的440行,直接进行返回,虽然源代码里边有检查的代码,但是并不会运行到那里去,实际上是直接走else里的内容,进行返回了。

12011448

下一步 在29秒内发生了变化,要怎么处理?

发布配置

dashboard发了一个post配置过来,带着三个参数dataid 配置ID gruop配置分组 content 配置内容

来到ConfigController.java的122行的publishConfig()方法

继续往下走,在168行,调用insertOrUpdate()方法,进行持久化,有嵌入式存储和外部存储

存完了之后,调用ConfigDataChangeEnent()方法,发布一个配置改变的事件。

当触发LocalDataChangeEvent事件时,调用DataChangeTaskren任务

这些都是服务端做的事情,在LongPollingService.javad的459行,有个sendResponse()方法,作用是删除队列中的ClientLongPolling,防止数据推送完毕,时间到期后还要再检查一遍。

下一步,从队列里边把要改的配置找出来,进行修改

  • 8
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值