Apache頂級專案貢獻了點原始碼。

2021-10-21 13:54:04 字數 2502 閱讀 1799

我很長時間沒開啟我的 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提供的功能包括 日誌的聚合 對網路包全面捕...