如何成爲中間件開發人員?

作者:莫那魯道
出處:http://www.cnblogs.com/stateis0/

前言

本文主要是寫給那些想從事中間件開發的同學看的 :)

如果你沒有這個打算,那麼本文的學習路線非但不實用,還可能會影響你正常的工作 :)

什麼是中間件開發?

隨着國內軟件行業的發展,國內互聯網公司規模越來越大,業務越來越複雜,隨之使用大量的中間件來提高後臺服務性能。由此產生了中間件開發和維護人員。

誠然,在小公司,中間件,例如緩存,MQ,RPC 等服務,極大可能是由業務開發人員自己維護,或者委託第三方雲平臺運維(支付一些費用)。但,如果後臺開發超過 200 人,基本就會組建自己的中間件或者基礎架構團隊,用於維護後臺服務器基礎架構和中間件。

更大規模的公司,則由於各種各樣的原因(性能,KPI),會自己開發中間件,簡稱自研。這要求中間件團隊需要更多的人員。

中間件開發人員需要哪些素質?

既然需要中間件開發人員,那麼中間件開發人員一般從哪裏招聘呢?招聘的要求是什麼?

通常,一個公司在剛開始組建中間件團隊的時候,都會從公司內部挑選精英人才,或者挑選對中間件感興趣的人才。這時候,可能你沒有相關經驗,但你仍然有機會參與到中間件開發中。反之,如果你沒有中間件開發經驗,想通過招聘的方式進入中間件行業,那麼相對而言,會有些曲折。

那麼,假設,你想從事中間件開發,但,你沒有中間件開發經驗,且,你的公司也沒有組建中間件團隊的打算。

該怎麼突破?

答: 跳槽。跳槽到別的公司的中間件團隊。

這裏就涉及到了一箇中間件團隊需要哪些技能。因爲跳槽肯定就要面試,如果你面試的是中間件崗位,那麼自然,就需要準備中間件的相關知識。

另外,還有一點,在這個分工明確的時代,即使是中間件,也有很多種類,我這裏稍微分一下,可能不是很準確。

  1. 服務治理中間件,例如 RPC 相關中間件,限流熔斷,鏈路追蹤,分佈式配置中心等等。你可以從 SpringCloud 裏找到相關的產品。當然國內也有很多優秀的產品。
  2. 存儲中間件,例如緩存,MQ等等,如果存儲涉及到分佈式(通常都會涉及),那麼要求相對較高。
  3. 各種 Proxy,不論是數據庫,還是 Cache,還是各種存儲,通常單機無法承載海量數據,比較簡單的辦法就是使用 Proxy 進行代理,讓應用透明的使用集羣。出於性能考慮,這裏通常會使用性能較高的產品,例如 goLang,C++ 等。Java 的長處——開發效率,在這個地方權重不大。
  4. 各種分佈式中間件,例如 ZK 這種,這個我個人認爲難度是較大的。分佈式向來是軟件開發中比較困難的一個點。特別是涉及到存儲和一致性。
  5. 容器相關,k8s,docker等,容器化已經是大勢所趨,其實我也不是很懂😀(聽大佬們說的)。

回到之前的話題: 一箇中間件開發者需要哪些素質?

  1. 語言基礎。從 Java 程序員的角度,基礎通常就是:集合,併發,JVM,Netty,IO、NIO(mmap,sendfile)
  2. 計算機基礎,由於中間件開發人員經常和 OS 打交道,所以計算機基礎也必不可少,例如文件系統(IO/磁盤),進程線程,內存管理。
  3. 網絡基礎,搞後臺的人員,肯定要對網絡熟悉了,熟悉在 Linux 下排查網絡問題,熟悉 Epoll 原理等。
  4. 分佈式相關知識,互聯網海量數據背景下,分佈式知識必不可少,CAP, Paxos,Raft,zab,2pc,3pc,base等等。最好能根據這些理論寫出實現代碼。
  5. 熟悉開源實現,即使你是業務開發人員,你也 100% 會接觸開源項目,例如 Spring,那麼,通常你需要對這種常用的開源代碼有深刻的理解,不僅知曉其原理,也領會其設計。從大的角度看,你得看清整個框架的背景,設計和取捨,從小的角度看,你得看清框架的內部實現細節,有哪些有趣的地方(通常這種框架都會進行性能優化)。
  6. 瞭解行業風向標,中間件行業和業務開發稍有不同,每個中間件的版本升級都會讓該領域的開發者們側目(類似 iPhone 發佈會),瞭解其特性,進而瞭解行業趨勢,最後成爲行業引領。

如何成爲中間件開發人員?

好,說完了中間件開發人員需要哪些素質,自然,如何成爲中間件開發人員,就不言自明瞭。

說白了,以上 6 個點,都是硬骨頭。

  • 對於已經開始工作的人來說,需要平時深刻的積累,說的難聽一點,如果你的業務開發任務很重,你很難搞定上門的這些內容。
  • 對於還在上學的同學來說,很爽,你可以用學校(不僅僅指大學,據我所知的大神,通常是初中/小學就開始編程,但這不是必須的)裏大把的時間來學習,一個個的搞定這些知識點,和社招不同,如果你的知識達到上面的水平,那麼 SP offer 應該是隨便拿了 :)

我這裏重點和那些平時開發任務不重,想搞中間件的同學聊聊。

我假設你是一個工作 3 年以內的 Java 開發人員,且你可能是培訓生,半路出家,科班生,大專生,初中生,且你不在大廠,通常在一個後臺開發不超過 200 人的創業公司,title 是 “Java 開發工程師”,並且有一個程序員的夢想,不想 get、set,不想 crud,不想 html 填空,不想和產品同學討論,也不想和測試同學點點點......(感覺這裏會得罪人 =_=||)

你可能想跳槽。

那麼你大概需要做以下準備:

  1. 鞏固 Java 基礎,集合源碼,併發源碼,JVM 原理,Netty 原理源碼,IO 相關(涉及到零拷貝文件存儲),這些都是 Java 基礎,通常是必須的。
  2. 分佈式原理,最起碼知曉理論知識,最好能寫一個,哪怕參照開源的也行。
  3. 源碼,Spring Mybatis Tomcat 等等,這些代碼通常是你最先接觸的,不妨從這裏開始。RPC 中間件相關的,Dubbo,Motan,SOFA,挑一個吧,推薦 SOFA。
  4. 再熟悉熟悉(熟悉指源碼和設計)分佈式的相關產品,假設你是 Java 開發,推薦 RocketMQ,Apollo 配置中心等等中間件,其實都可以,MQ 相對複雜。
  5. 操作系統,通常,你在研究上面的內容時,會遇到操作系統的疑問,遇到不要繞過,儘量弄明白。
  6. 自己的產品,有就最好了,例如公衆號,博客,教學視頻,GitHub 項目等等,總之,是拿得出手的東西。
  7. 加大牛好友,瞭解行業風向標。也許你是一個矜持的人,但從事了這個行業,你有必要和行業裏優秀的人學習(看看朋友圈就好)。

結語

通常看完本文,你會有一絲疲憊,甚至帶有那麼一絲難過:太他麼難了!

如果你看完了本文內容,覺得 so easy,那麼請左轉阿里,或右轉美團。

我假定你是前者。那麼請你尊重你的夢想。

這裏引用一段臺詞:

如果你有夢想的話,就要去捍衛它。那些一事無成的人想告訴你你也成不了大器。如果你有理想的話,就要去努力實現。就這樣。

實際上,這句話也是寫給我自己的。與君共勉。

最後,我所說的,都是錯的。

近期熱文推薦:

1.600+ 道 Java面試題及答案整理(2021最新版)

2.終於靠開源項目弄到 IntelliJ IDEA 激活碼了,真香!

3.阿里 Mock 工具正式開源,幹掉市面上所有 Mock 工具!

4.Spring Cloud 2020.0.0 正式發佈,全新顛覆性版本!

5.《Java開發手冊(嵩山版)》最新發布,速速下載!

覺得不錯,別忘了隨手點贊+轉發哦!

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章