我很長時間沒開啟我的 outlook 郵箱了。
前兩天開啟的時候發現我之前給 dubbo 提交的 pr 居然已經被合併到 master 了:
這是第一次,我提交的 pr 被合併了。
這個 pr 是修復 lfu 快取策略在 dubbo 中即使配置了,也不起作用的 bug。
於是我也算是為開源專案貢獻過原始碼的人了。
什麼你問我貢獻了多少**?
一行,是的,就一行!
而且,說起來,這次提交真的是沒有什麼技術含量的事情。因為這是乙個必現的 bug,只是很少有人用到這個功能而已。
你知道的, 當乙個 bug 能穩定復現的時候,其實它已經就不算是乙個 bug 了。
但是我想聊聊這次提交背後的一些東西。
其實吧,lru也就那麼回事。
而這篇文章我敲下第乙個字的時間是 2020 年 12 月的下旬,這是我 2020 年的最後一篇技術原創文章。
當我寫 lru 的時候,我就知道 lfu 肯定也是需要專門寫一篇的。
於是 2021 年的第一篇技術原創文章,我就選題了 lfu。
產生了這篇文章:
哎,這讓人摳腦殼的 lfu。
寫這篇文章的時候,我想起之前看 dubbo 的版本,好像是提到了一下 lfu。
於是我翻到了 2.7.7 版本的發布內容:
果然是支援了 lfu 快取策略,於是翻出了提交的**記錄:
雖然他的實現邏輯沒有問題,test 類也跑過去了。
但是毫不誇張的說,我看了一眼這個提交記錄,就發現了這裡勢必是有問題的。
他僅僅是把 lfu 快取策略集合到了 dubbo **中,但是卻沒有給使用者提供使用的入口。
因為這裡是基於 spi 實現的,他沒有在對應的配置檔案中加入配置。
這個問題非常容易驗證,我們可以看一下。
其原始碼的位置是:org.apache.dubbo.common.utils.lfucache
原始碼裡面告訴我這樣配置一下就可以使用 lfu 的快取策略:
但是,當我這樣配置,發起呼叫之後,是這樣的:
可以看到當前請求的快取策略確實是 lfu。
但是會丟擲乙個錯誤:
沒有 lfu 這個策略。
這不是玩我嗎?
再看一下具體的原因:
在org.apache.dubbo.common.extension.extensionloader#getextensionclasses
處只獲取到了 4 個快取策略,並沒有我們想要的 lfu。
所以,在這裡丟擲了異常:
為什麼沒有找到我們想要的 lfu 呢?
那就得看你熟不熟悉 spi 了。
在 spi 檔案中,確實沒有 lfu 的配置:
所以,這是個 bug,而這個 bug 的解決方案,就是在 spi 檔案裡面加上一行 lfu 的配置即可。
經過上面的分析,其實你也發現了,這個並不是乙個有什麼技術含量的提交。
更多的是運氣成分。
只是由於對於 dubbo 框架有些許的了解,所以對於這個地方,我發現問題、定位問題、解決問題的速度非常的快。
這是運氣帶不給我的東西。
這需要日復一日的潛入到框架中去,去感受它的脈絡,梳理它的結構,學習它的思想。
這是需要時間去沉澱和學習的東西。
注意,我說的是「潛入」,而非是流於表面的。
什麼是流於表面的呢?
比如,如果你之前沒有用過 dubbo 框架,但你又想去了解,學習它。
Ambari成為Apache頂級專案
hortonworks上周五宣布,基於web的開源hadoop集群管理工具ambari正式從apache孵化器畢業,成為頂級專案。apache ambari能夠對apache hadoop集群進行 管理和監控,已支援hdfs,mapreduce,hive,hcatalog,hbase,zookeep...
開源專案貢獻
一 github的開源專案 github 是目前世界上最大的開源專案的託管交流平台。貢獻開源專案的流程也是 github 全力支援的,也一樣是遵循 github flow,雖然跟前面團隊合作流程會有一點差別。在團隊內部,大家都是有寫許可權的。但是網上的開源專案參與者眾多。如果你一上去就跟專案的擁有者...
Apache Metron晉公升頂級專案
hortonworks和apache宣布metron正式晉公升為頂級專案。metron是一種多功能的安全遙測資料捕獲 流分析和威脅響應平台,代表了安全資料平台的最新發展水平。該專案最早可溯源至cisco的開源大資料系統安全框架專案opensoc。metron提供的功能包括 日誌的聚合 對網路包全面捕...