被噴了!聊聊我開源的RPC框架那些事

前段時間利用業餘時間寫了一個簡單的 RPC 框架,花費了不少精力。開源出來之後,少部分不太友好的技術人站在上帝視角說了風涼話。就很難受,兄弟,誰還沒有一個玻璃心。

簡單吐槽一波,給大家聊聊關於 guide-rpc-framework 的一些事情。

我踏馬直接踢

01 我的自定義 RPC 框架近況

關注我的大部分小夥伴應該都知道,3個月前,我利用業餘時間手寫一個簡單的 RPC 框架(玩具),名字叫做 guide-rpc-framework。

目前的話,這個項目已經有 0.5k 的 star。感謝小夥伴們的支援!

寫這個 RPC 框架的主要目的是為了個人學習,開源出來的目的主要是想幫助到更多人。

02 開源的魅力

開源出來之後,大部小夥伴都是比較支援的,有很多小夥伴都參與了進來一起完善。

這裡點名表揚一下Github用戶名為 sakuragi1111smile2coder 這兩位老哥。

sakuragi1111 這位老哥通過參考 Dubbo 源碼實現了 SPI 機制。

smile2coder 這位老哥為 guide-rpc-framework 添加了通過註解實現服務消費的功能。

目前的話, guide-rpc-framework 已經支援通過註解進行服務消費和註冊。

程式世界,什麼樣的人都有,有人感謝你,也會有人貶低你。

03 不那麼好的聲音

在我的 guide-rpc-framework 開源之後,也經常會受到像:「你有本事別用現成的框架寫一個啊?」、「你這個寫的一點亮點都沒有,有啥意思?」、「都有了 Dubbo 之後,為啥還要自己寫一個?」、「重複造輪子沒意義」……之類的不太友善的話語。

說句心裡話,一般說出來這種話的人往往技術水平很低。

如果,你指出我哪裡寫的不好,我很樂意地去修改。但是,你站在上帝視角說著風涼話,那就是人品有問題了。

1.為什麼不能利用現成的框架呢?(比如為啥不用 JDK NIO 而用 Netty?)

毫不誇張地說:開源出來的東西,就是全體技術人共同的財富。

Netty 比 NIO 更好用、更完善,我為啥還要直接使用 NIO呢?我們平常經常接觸的 Dubbo、RocketMQ、Elasticsearch、gRPC 等等都用到了 Netty 啊。

2.你這個寫的一點亮點都沒有,有啥意思?

有能耐的話,你也可以自己寫一個。說出此類的話的人,往往是有及其嫉妒心理的人。而且,RPC 框架本身就已經有很多比較成熟的例子了比如 Dubbo。說實話,Dubbo 基本是已近把 RPC 框架能考慮到的點都考慮到了。

我不信你一個人,能幹過人家一個團隊好多年的成果。

3.都有了 Dubbo 之後,為啥還要自己寫一個?

一定要學會看 README!!!

我在項目的 README 中明確說明了:寫這個 RPC 框架主要是為了通過造輪子的方式來學習,檢驗自己對於自己所掌握的知識的運用。

4.重複造輪子沒意義

我們實際項目開發中是比較忌諱造輪子的,但是,實際學習過程中造輪子絕對是最自己百利而無一害的!

我的 RPC 框架肯定是無法和 Dubbo 這類已經這麼成熟的相提並論。但是,在自己去寫 RPC 框架的時候,更加加深了自己對於 RPC 框架的認識。實現的過程中,遇到了很多問題,解決問題的過程中也提高了自己的編程能力。總而言之,造輪子是一種特別能夠提高自己系統編程能力的手段。

04 擁抱開源

開源絕對是編程領域最美妙的事情之一,大幅提高了我們的生產力。

沒事就去開源社區比如 Github 或者 Gitee 逛逛,在這裡你可以get到各種好東西。

你可以在 Github 分享很多東西,你的學習筆記、自己做的實戰項目、自己造的輪子……(資源類的不太推薦,太容易侵權)。

雖然,現在 Github 被很多人單純玩成了引流工具。但是,整體來說 Github 整體技術環境和氛圍還是很不錯的!

另外,最好的話是要給項目弄一個英文版本,項目程式碼中的注釋最好也要是英文的。畢竟是開源,最好是能准守開源精神使用世界通用語言(這一點我自己也沒做好,反思!)。

如果你想讓自己的開源項目被更多人知道的話,你可以在下面技術平台宣傳(不宣傳的話,開源的東西很難被別人知道,不要讓好東西被埋沒):

如果有幫助的話,不要吝嗇你們手中的在看和贊!「懟」起來!

以上 4 本優質原創 PDF 微信搜「JavaGuide」後台回復「面試突擊」即可免費領取。