你好呀,我是歪歪。
前幾天在 github 上沖浪的時候,發現了兩個寶藏東西。
我也不藏着掖着了,拿出來給大家分享一下。
這兩個寶藏是關於 arthas 和 SOFARegistry 的,這兩個東西都是阿里開源的項目。
arthas 大家應該都比較耳熟能詳了,知道它是阿里搞出來的一款 Java 診斷工具。
而 SOFARegistry 是個啥玩意?好像沒怎么聽說過呢?
我接觸這個東西的時間也不算長,但是我大概知道它是個什么東西,我覺得是一個輪子,但是這個輪子還挺厲害的。
不着急,等下就給你擺一擺。

arthas
arthas 這個玩意,我都不記得我之前的文章中出現了多少次了。基本上都是關於它的使用實際操作案例或者說是官方提供的練手 Demo。
它的使用范圍也還是非常的廣泛:

那么,我在它的 github 上又發現了什么寶藏東西呢?
就藏在它的 issue 的 Labels 里面:

點開 Labels,你會發現有個叫做 user-case 的標簽:

這個標簽下的 issues,就是我想說的第一個寶藏:
https://github.com/alibaba/arthas/issues?page=1&q=label%3Auser-case
我給你截屏第一頁的內容,你看看是不是很有一種想要點進去看看具體是啥的欲望:

比如給你看看工行的這個 user-case:
https://github.com/lyghzh/pub/blob/main/doc/%E5%B7%A5%E5%95%86%E9%93%B6%E8%A1%8C%E6%89%93%E9%80%A0%E5%9C%A8%E7%BA%BF%E8%AF%8A%E6%96%AD%E5%B9%B3%E5%8F%B0%E7%9A%84%E6%8E%A2%E7%B4%A2%E4%B8%8E%E5%AE%9E%E8%B7%B5.md
我之前其實一直認為大家會覺得 Arthas 在生產上運行其實是一件非常危險的事情。
它就是一把雙刃劍,用的好了,早點下班,用的不好,說不定背個生產事故。
所以,采取因噎廢食的方法,干脆就不使用了。
工行,作為一個銀行,在這個方面的考慮肯定也更加的多。
在他們的落地困難點上,首當其沖的就是“信息安全”的問題,這是它們的基礎紅線,也是銀行的立根之點:

那么它是怎么在生產上使用 Arthas 呢?
在這個 case 里面,給出了這個問題的答案。
我們設計了一套輕巧的架構,讓開發人員以Web UI的方式,便捷、直觀的使用各類在線診斷能力。那么我們是怎么做的呢?
基於 Arthas 的功能,再次封裝了一個 web UI 頁面出來,藏在這個頁面背后的接口,可以對執行結果進行剪裁和修改,處理成 json 格式數據返回給平台做展示。

文章中除了介紹整體架構之外,還提供了實際使用的效果。
比如控制面板看起來就很眼熟的樣子:

就是基於 Arthas 原生的響應,搞了一個展示頁面。
頁面上的這些數據都是 Arthas 返回的:

還有反編譯的功能:

但是在文章中並沒有看到熱加載相關的內容,我猜肯定是對於這類危險的功能,從 web 頁面上就進行了屏蔽。

在這個 issues 下面,我還發現別人提到另外一個類似的項目:

這是去哪兒開源的一個 Java 應用診斷工具:

不延伸了,學不過來了。
再比如這個案例:
https://github.com/alibaba/arthas/issues/1892

然后他使用 Trace 一點點的追蹤時間消耗比較大的方法,再一點點的進行修復。
經過了四次優化之后,相同請求的調用鏈路耗時,從最開始的 343ms 降低到了 27ms,你說這不香嗎?

然后,他給出了結論,也就是這次優化的點:

你可以發現其實都不是什么特別大的優化,就是一些我們平時在使用的細枝末節的東西。
最后,他還寫了一個“強烈推薦”:動態追蹤技術漫談。
好吧,這個也是我很久之前就收藏了的網站,不藏着了。也拿出來一並分享了:
https://blog.openresty.com.cn/cn/dynamic-tracing/

這個博客里面的文章質量非常的高,博客的主人是章亦春,他是開源項目 OpenResty 的創始人,同時也是 OpenResty Inc. 公司的創始人和 CEO。
咱就是說,大佬背書,放心閱讀。
這里我只是在第一個寶藏中隨便挑了兩個案例出來,剩下的你自己去挖掘吧。
SOFARegistry
SOFARegistry 是個啥?

其實我理解它就是一個注冊中心的輪子。或者更具體一點的說就是具有阿里特色的 Eureka。
這是它的 github 地址:
https://github.com/sofastack/sofa-registry
你看到其中的 sofastack 了嗎?
SOFARegistry 只是一個棋子,sofastack 才是棋盤。
這是一個 Stack,是一個技術棧,是一個金融領域的架構方案。

它下面的項目非常多,從主要項目的名稱命名,什么 xxxBoot,xxxRPC,xxxRegistry 你就可以看出,用這些項目我們可以搭建出一個完整的項目:

關於 SOFARegistry 的寶藏也藏在它的 Labels 里面:
https://github.com/sofastack/sofa-registry/issues?q=is%3Aissue+is%3Aopen+label%3Aevent%2Fsource-code-analyze

這個叫做 event/source-code-analyze 的 Label,你別看沒幾個東西,但是里面全是源碼分析。
而且是官方發起的活動,文章內容會有專人 review,力保准確性:

這次一共發布了 9 個源碼解析的任務:

任務難度有高有低。根據任務難度有不同的獎勵措施:

有機會成為社區的 Contributor 或者直接是 Member,還是相當有吸引力的。
比如我們看一下關於數據倒排索引的這個任務:
https://github.com/sofastack/sofa-registry/issues/202

它的 issues 描述里面也指出了需要寫什么內容,去看哪一部分的代碼。
指路已經指的很明確了。
最后解析文章提交的格式是 md 格式:
我們可以直接下載下來進行閱讀。
到時候對於想要深入理解 SOFARegistry 的同學來說就是一個很好的切入口。
雖然 SOFARegistry 知道的人不對,但是我還是想把 SOFARegistry 的這個活動寫出來,讓更多的人知道他們有這樣的活動。
因為我覺得這個活動非常的好,源碼解析,是我看到一種全新的參與開源項目建設的方式。
最后,關於這兩個寶藏,告訴我一個什么道理?
它告訴我:逛開源項目的時候要多注意它的 Labels,說不定藏着什么好東西。反正我以前是很少關注 Labels 的,我一直以為只有項目維護者才關心 Labels。

最后,文章首發於公眾號[why技術],歡迎大家來關注呀,比心。