关于 Nacos config 长轮询的源码

被折服,真的,。。。可能是我太菜了,我看不太懂,现在debug 差不多看懂了一些。

发起长轮询

刚发起长轮询,我就准备立马更新配置,这样就可以提前返回响应。
在这里插入图片描述
在这里插入图片描述

命中构造方法

我在 com.alibaba.nacos.config.server.model.event.LocalDataChangeEvent 类上,三个构造方法都打了断点,肯定会走其中一个,作为发布事件的。
在这里插入图片描述

创建事件

我只截图一些,更新触发事件的链路。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

推送事件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

接收事件

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

结束长轮询

在这里插入图片描述

书面总结(仅自己查看)

在这里插入图片描述

源码书签&修改

在这里插入图片描述

在这里插入图片描述

牛逼代码的思考

===> 2022-01-23 23:22:30 牛逼啊,这得要写多少代码,有多好的思路,各种线程池,各种 job,event,listener,request,…

今天是周日,已经很晚了,为了搞清楚这个长轮询到底怎么做的,昨天看了很久,今天又看了很久。牛逼啊,牛逼。准备洗漱睡觉了。

2022-01-24 12:10:20
原本啊,我以为代码写的可读性越好越牛逼。

读了这个我才发现,代码的风格好,固然重要。
但是后来我改变了这种看法,我认为:面对那些复杂的场景,可以写出来更高的性能的代码才是更牛逼的!!!(可读性可以放在一边稍息稍息。)

让我想到了,Igor 早起独自一个人从 02 年肝 Nginx 代码,一个人独自肝了 7 年的代码。自己一个人攻克 Nginx的各种问题,并解决了 C10K 的问题。并且验证,性能超出了 C10K,自己封装 sendfile(2) 并且融入了 Linux 内核。