啥,你问我程序员的悲哀是什么?
你好呀,我是歪歪。
前几天在 Dubbo 官网上闲逛的时候看到负载均衡的这部分,发现突然冒出来两个新家伙:
https://cn.dubbo.apache.org/zh-cn/overview/core-features/load-balance/
P2C LoadBalanc:Power of Two Choice 随机选择两个节点后,继续选择“连接数”较小的那个节点。 Adaptive LoadBalance:自适应负载均衡 在 P2C 算法基础上,选择二者中 load 最小的那个节点
老读者应该还记得,我最早最早写文章的时候写了很多 Dubbo 相关的文章,其中负载均衡策略的部分,我是每个都进行了详细的介绍:
现在回过头去看当年的文章,文笔非常稚嫩,行文比较混乱,可以明显看出一个成长的痕迹。
呃,扯远了...
看到 Dubbo 有了新的负载均衡策略,所以我决定盘一盘它。而且关于新增的这两个负载均衡策略,虽然官方没说,但是我知道这背后还有一个有点意思的故事。
时间线拉回到 2 年前,2021 年 9 月,天池大赛。
那一年,有一个赛道的题目叫做:实现一个柔性集群调度机制:
读完赛题之后,我知道这个题目的主要考点之一,就是要搞一个“牛逼”的负载均衡算法出来。
把官方提供的赛题 Demo 拉下来之后,我直接就是先上了一个 p2c 算法:
p2c,Power of Two Choice 算法非常简单,主要的思路如下:
对于每次调用,从可用的provider列表中做两次随机选择,选出两个节点providerA和providerB。 比较providerA和providerB两个节点,选择其“当前正在处理的连接数”较小的那个节点。
然后我当时属于第一波提交代码的选手,所以直接冲到了榜一,还水了一篇文章:《一不小心,用力过猛,成了榜一大哥...》。
两年过去了,突然在官方网站上看到了支持新的负载均衡算法,一个是 p2c,一个是叫做 Adaptive LoadBalance,自适应负载均衡。
我就知道,这个算法肯定和当年的“柔性集群调度机制”有千丝万缕的关系。
基于此,我本来是想要写一篇关于“自适应负载均衡算法”的具体原理和源码解读的文章的。
但是......
我 TMD 电脑不知道扯什么拐了,这周一个劲儿的蓝屏,工作日的时候我就忍了,毕竟每次晚上下班回家都比较晚了,用不了太久的电脑。重启一下可以顶一会儿。
到了周末,好家伙,好几次写到高潮的地方,正自嗨呢,踏马蓝屏了,重启之后踏马高潮没了,不仅高潮没了,文章也丢一段。
为了写文章做 Demo,负载均衡嘛,肯定需要多搞几个服务提供方。每次蓝屏重启之后,我都得重新打开 idea,在 20880,20881,20882 端口各开一个服务提供方。
一个小时左右蓝屏一次,每次都要重新启动一堆服务,这玩意谁受得了啊。
所以,我实在受不了,决定先解决蓝屏问题。
最开始的时候,我每次蓝屏对应的终止代码都是这个玩意:
DPC_WATCHDOG_VIOLATION
然后我一顿搜索,在下载了 WinDbg,这个玩意说是微软官方出的专门看是什么文件导致蓝屏冲突的,类似于一个调试软件:
关键分析出来之后,我能看出来是汇编语言,但是你叫我分析也看不懂啊。
虽然我也是程序员,但是这玩意对我来说超纲了啊。
就像是我本来只是一个在工地上的无情打灰人,你非得叫我去开挖挖机,虽然都是修楼的,但是工种不一样啊。
没办法,反正就是一步一谷歌。最后还算是得到了一个好消息和一个坏消息。
好消息是 DPC_WATCHDOG_VIOLATION 终于不再出现了。
坏现象蓝屏并没有被解决,而且后面每次蓝屏的原因都各不一样了:
更坏的消息是,蓝屏的频率更快了。
每次蓝屏之后,系统都会在 C:\Windows\Minidump 路径下生产一个 dmp 文件。
我没修之前,还能保持连续的使用一小时的样子:
我修了之后,时间变成了这样:
分钟级别的蓝屏速度...
然后又是进入到安全模式一顿瞎搞。最后,定位到分钟级别蓝屏的原因是我下载了“联想安全管家”。
是的,我就是怕野鸡网站下载出问题,我专门到官方上去下载了“联想安全管家”,然后他给我干蓝屏了。
这一套搞完之后,已经没时间也没心情写技术文章了。
而且到现在还是没彻底搞定,只是说回到了我没折腾的状态,蓝屏还是会突然的来那么一下子。
所以,本来好好的一篇技术文章就变成了这样,不是我不写,属实是装备跟不上。(好耶,这个鸽的理由无懈可击。)
这几天我应该还会和蓝屏持续作战,但是我已经做好了重装系统的准备。
说起重装系统...
呃...
虽然我是一个程序员,但是我确实从来没有重装过系统,
所以,
我也不会。
但是我已经查好了,万能的某宝,20 元钱,买个系统 U 盘,包教包会。
在修复蓝屏这个问题期间,刷知乎也刷到了一个话题:程序员的悲哀是什么?
https://www.zhihu.com/question/399148081/answer/3022694360
这下面有一个高赞回答,很戳中我的“心巴”:
但是,那一刻,我好想回答:
程序员的悲哀,就是电脑蓝屏了,自己还搞不定。
...
...
...
其实自始至终我害怕的都不是蓝屏。
我害怕的是,
如果线上系统出问题了,我的电脑因为蓝屏而不能远程连接,从而导致解决问题不及时,虽然这是一个正当的理由,但是还是过不去自己内心给自己设定的“就应该及时响应”的坎儿。
害怕手机出问题,别人联系不上。
害怕电脑出问题,远程连接不上。
随时 on call,这是程序员的责任,也是程序员的悲哀。
·············· END ··············
推荐👍:扯下@EventListener这个注解的神秘面纱。
你好呀,我是歪歪。我没进过一线大厂,没创过业,也没写过书,更不是技术专家,所以也没有什么亮眼的title。
当年高考,随缘调剂到了某二本院校计算机专业。纯属误打误撞,进入程序员的行列,之后开始了运气爆棚的程序员之路。
说起程序员之路还是有点意思,可以点击蓝字,查看我的程序员之路。