前段時間利用業餘時間寫了一個簡單的 RPC 框架,花費了不少精力。開源出來之後,少部分不太友好的技術人站在上帝視角說了風涼話。就很難受,兄弟,誰還沒有一個玻璃心。
簡單吐槽一波,給大家聊聊關於 guide-rpc-framework 的一些事情。
01 我的自定義 RPC 框架近況
關注我的大部分小夥伴應該都知道,3個月前,我利用業餘時間手寫一個簡單的 RPC 框架(玩具),名字叫做 guide-rpc-framework。
目前的話,這個專案已經有 0.5k 的 star。感謝小夥伴們的支援!
寫這個 RPC 框架的主要目的是為了個人學習,開源出來的目的主要是想幫助到更多人。
02 開源的魅力
開源出來之後,大部小夥伴都是比較支援的,有很多小夥伴都參與了進來一起完善。
這裡點名表揚一下Github使用者名稱為 sakuragi1111 和 smile2coder 這兩位老哥。
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”後臺回覆“面試突擊”即可免費領取。