以一己之力,生抗美團技術部落格!

小傅哥發表於2021-07-05

作者:小傅哥
部落格:bugstack.cn

沉澱、分享、成長,讓自己和他人都能有所收穫!?

一、咋,膨脹了嗎?

生抗美團部落格?不要臉,吶們,從未見過如此"厚顏無恥"之人!

美團部落格在技術圈裡是非常優秀且質量很高的官網部落格,全系硬通貨的優秀內容:有技術架構、有演算法應用、有搜尋引擎實現、講過風控策略、談過Java動態追蹤、分析過全鏈路監控,上百篇的高質量有實踐根基的技術內容,讓作為研發出身的搬磚碼農,不只是你,還有我,都非常喜歡此類有強烈技術氛圍的文章。

吶,就這?你還要生抗?

是的,即使是這樣剛烈的技術部落格,我也要生抗它!因為喜歡歸喜歡,挑戰是挑戰,學會學習的方法比僅僅只是按照一個部落格文章中的完整思路硬搬到自己的腦子中更重要。為什麼這樣說呢,因為大部分的技術文章的本質都是對數學邏輯的實現描述,從目標、條件、行為到結果的推演,但這種照著推演結果抄答案是沒意義的,只有這些思路在你的大腦裡完完整整、磕磕絆絆的走來走去不斷碰撞?,摸索到結果後,才能有更深刻的印象。

快,是最大的障礙!

向陽而生,逐光而行,減少沒必要的內心焦慮,別為想著一口吃不下胖子而惆悵。慢慢鋪好腳下的地基,不要著急於快,你現在所做的每一件看似點點的小事,將來都會匯聚在一起。想起我自己在上學階段,看到很多同學放假喜歡去做一些兼職、發發傳單、洗洗盤子、噹噹家教,但其實以我自己來看,並不會支援去做這些,除非是真的需要這些錢。因為大部分同學畢業後基本都會從事本專業(計算機、軟體工程)的事情,而其他兼職的事情與你在自身成長的長期價值積累並不符,而這部分兼職工作也僅能是給你帶來一點社會體驗和短暫經歷。但與未來長遠的目標來看,有明確的目標,不焦躁、不焦急,慢慢成長,慢下來、慢下來,你會收穫更多!世界很大,生活更大。

二、看,剛勁內容!

除了手裡的幾個賣焦慮的文章,你可以擁有更好的!

一天學會、一文搞懂、學完就P8P9、30歲碼農還和剛畢業做一樣的活沒用!等等販賣焦慮的文章,看這些內容除了讓人煩躁還能帶來什麼、能有什麼成長嗎?講道理,不會有什麼大成長,因為你太過著急了,急的像是河裡的水攪渾了,沒有時間的沉澱,你只能在上面撈點浮沙。

而那些真正有價值的內容,是需要經過時間的磨練的,記得《霍元甲》電影裡有句話,我這一拳20年的功夫,你們擋得住嗎!

是的,可能這些有深度的技術部落格你也擋不住!

  • 美團技術,美團技術沙龍由美團技術團隊主辦,每期沙龍邀請美團及其他網際網路公司的技術專家分享來自一線的實踐經驗,覆蓋前端、後臺、系統、演算法、測試、運維等技術領域。
  • 360 核心安全,分享奇虎360公司的技術,與安全的網際網路共同成長。病毒防護、安全監測、軟體漏洞等方面有深入學習的文章。
  • 阿里資料庫核心月報,阿里資料庫核心月報非常好的資料庫進階資料,文章多為阿里資料庫核心專家所寫,有深度)中分析,那種資料庫產品更被阿里的核心專家們青睞。
  • jenkov Tutorials,We tend to select projects that are related to entrepreneurship, one way or another. Our projects are either an entrepreneurial project in itself, or it helps other people's entrepreneurial projects.

為什麼你需要看這樣的部落格內容?

我遇到過很多好友夥伴問我,在網際網路做開發都需要什麼樣的技術,分散式的系統是怎麼搭建的、怎麼進行的分庫分表、系統上線後要進行壓測嗎,這些都是在什麼標準下怎麼進行的呢?

這裡以一篇美團部落格為例,給大家介紹下分庫分表的起因、過程和結果,文章為:MTDDL——美團點評分散式資料訪問層中介軟體

美團(背景):2016年Q3季度初,在美團外賣上單2.0專案上線後,商家和商品數量急速增長,預估商品庫的容量和寫峰值QPS會很快遇到巨大壓力。隨之而來也會影響線上服務的查詢效能、DB(資料庫,以下統一稱DB)主從延遲、表變更困難等一系列問題。

因為業務的急速發展,體量的暴增,原有的系統設計已經很難滿足現有的資料體量,因此會有一系列的技術問題需要解決。但從資料庫的使用上來看,單庫單表已經很難現有的業務體量了,通常一臺64核、7T的資料庫伺服器,在 tps 達到 1萬已經逼近極限。

那麼怎麼辦?把各個應用按照商品庫進行垂直拆分嗎,這也只能解決一時之痛呢,以後呢?所以分庫分表的設計是必然的,應運而生的就是美團的 MTDDL(Meituan Distributed Data Layer),美團點評分散式資料訪問層中介軟體,旨在為全公司提供一個通用資料訪問層服務,支援MySQL動態資料來源、讀寫分離、分散式唯一主鍵生成器、分庫分表、動態化配置等功能,並且支援從客戶端角度對資料來源的各方面(比如連線池、SQL等)進行監控,後續考慮支援NoSQL、Cache等多種資料來源。

美團,MTDDL 整個邏輯架構

分庫分表絕不只是一箇中介軟體的開發就完事了,還需要一整套的技術實現來支撐這樣的技術元件使用;

  • 系統拆分為分散式應用,RPC、MQ、分散式任務、配置中心等需要一併引入。
  • 分庫分表取模演算法,不知道大家有深入閱讀過 HashMap 的原始碼沒,HashMap 是一種基於雜湊桶和連結串列+紅黑樹的資料結構,每一個資料存放都需要經過雜湊求值、擾動函式、泊松分佈和拉鍊定址的方式進行計算資料索引和存放邏輯。那麼在你設計入美團的分庫分表元件時,你腦子中會有哪些個雜湊演算法嗎,雜湊雜湊除法雜湊法平方雜湊法斐波那契(Fibonacci)雜湊法嗎?各個雜湊演算法都有什麼特性,哪一個更適合你的元件開發,它會讓資料更加雜湊,減少碰撞嗎。碰撞了是什麼效果,HashMap 的碰撞是連結串列轉紅黑樹以及擴容拆解資料,那麼資料庫裡的資料碰撞嚴重是什麼效果
  • 另外是關於分散式唯一主鍵生成器的設計,因為你的每一條資料,都需要是全域性唯一的,那麼就需要給每一條資料都生成一個唯一ID。美團的分散式ID生成系統Leaf,其實是一種基於DB的Ticket服務,通過一張通用的Ticket表來實現分散式ID的持久化,執行update更新語句來獲取一批Ticket,這些獲取到的Ticket會在記憶體中進行分配,分配完之後再從DB獲取下一批Ticket。

看到這,你還敢說你是在卷技術、造火箭嗎?很多時候不是技術沒用,是你沒有想法去用,也沒有一個自身使用此類技術的土壤!所以不知道各個分散的技術模組都用在哪,只知道面試時會用一下,所以來學點乾貨吧,騷年!

三、我,都寫了啥?

抗了2年,寫了8個專題,22個類別,245篇+文章!

  • 兩年前,我只會寫程式碼,不會寫文章
  • 兩年前,我給同事做的分享,總讓別人聽的雲裡霧裡
  • 兩年前,我也吃過技術答辯的虧,沒有內容敘述能力
  • 兩年前,我缺少知識的成體系建設,很多內容都碎片化

所以從不太開心的那天開始,我陸續總結沉澱和輸出技術內容,成體系化的建設自己的技術棧維度,一點點嘗試編寫文章和吸收讀者的反饋,慢慢的把複雜技術內容的文章寫的儘可能通俗易懂。所以你會看到我的文章大部分以實戰為基準,通過對各類技術場景的驗證、歸納、總結,寫出成體系的技術內容,既滿足自己沉澱提升,也分享給同好成長!

我給自己在技術職業成長的定位上,是一個能抗住農夫三拳的架構師,所以我在編寫和輸出的技術內容上,也是以資料結構、演算法邏輯、設計模式、核心技術、系統架構、服務運維以及總結自身成長的幾個方面來進行彙總內容編寫文章。

而這幾大塊內容也是每一個較貴的 Java 程式設計師應該掌握的內容,可以包括:

  • Java&Spring:以講解Java、Spring核心知識為基礎,用數學邏輯思維分析關於Java、Spring、Mybatis、Dubbo等核心原始碼技術內容。其中如《Java 面經手冊》是一本以面試題為入口講解 Java 核心內容的技術書籍,書中內容極力的向你證實程式碼是對數學邏輯的具體實現。包括正在編寫的《手擼 Spring》通過手寫簡化版 Spring 框架,瞭解 Spring 核心原理。在手寫的過程中會簡化 Spring 原始碼,摘取整體框架中的核心邏輯,簡化程式碼實現過程,保留核心功能,例如:IOC、AOP、Bean生命週期、上下文、作用域、資源處理等內容實現。這些都程式設計師學習技術成長過程中非常重要的知識,如果能深入學習那麼對以後的個人成長幫助非常大。
  • 演算法邏輯和資料結構:這部分內容主要以Java原始碼為入手,講解其中的數學知識,包括:擾動函式、負載因子、拉鍊定址、開放定址、斐波那契(Fibonacci)雜湊法還有黃金分割點的使用等等,這也正式《Java 面經手冊》的核心內容所在。
  • 物件導向《Java 設計模式》的知識是在Java基礎鋪平,資料結構、演算法邏輯有了一定的瞭解後,在深入學習和使用的技術。同樣是一個需求在學過設計模式後,也閱讀了不少別人優秀的程式碼,那麼在他實現需求的時候,會拆分出很多的介面和介面的繼承、抽象類的職責隔離實現、具體業務模組的分層、功能服務元件的細化、具體實現過程中對設計模式的運用等等。這樣的程式碼實現後會非常具有易擴充套件和可維護的特點,否則一篇的ifelse不是坑自己就是坑下一個人。
  • 中介軟體:可能很大一部分研發並不會接觸到中介軟體,也不太可能有人告訴你可以使用中介軟體的方式解決一些實際遇到的問題。因為大部分時候你都會認為中介軟體只是公司專門部門的人寫的,或者是技術大牛搞的,總之與你沒關係。但其實程式碼知識對數學邏輯的具體實現,業務開發有業務開發的方式,《Spring 中介軟體和開發》也只是對Spring的關於容器中一些特定介面和類的使用,具體的還是普通的邏輯程式碼,比如暴露服務、採集日誌、監控系統等。但如果你能早些學到這樣技術的核心思想,那麼對於升值、加薪、跳槽,都是非常有幫助的。
  • 通訊專題:其實Netty是一項非常重要的技術,比如在RPC服務實現中的Dubbo、或者MQ、以及很多時候的通訊裡都是能用到的技術。就連小傅哥的第一次面試大廠也是靠著對Netty的學習,刷進來的!所以小傅哥編寫了很多Netty從基礎入門講解到核心原理,告訴你如何處理半包、粘包,怎樣定義訊息協議,並開發了一個基於Netty的仿微信聊天專案,這些技術內容你都可以在我的部落格學習到學習到。
  • 位元組碼程式設計:這項技術可能大多數研發,哪怕35歲的,可能也不一定接觸到。但這樣的技術你卻基本都用過,比如你的IDEA是購買的嗎,你怎麼給讓它能用的!你用過一些非入侵的全鏈路監控系統的,你通過位元組碼插樁搞過一些事情嗎,那你用過Cglib吧,它的底層就是通過ASM位元組碼框架對位元組碼進行的一些列操作。
  • 故事:除了技術學習以外,還有很多夥伴會經常問我一些關於學習、成長以及在職場中怎麼活下去。所以我結合我自己在大廠網際網路中的學習和成長經歷,給讀者夥伴寫了不少此類的內容。如簡歷編寫、招聘要求、技術資料、程式碼規範、評審晉升、薪資待遇、副業收入等等。這些內容可能很多會幫助你度過一個安定的職場生涯!

四、嗯,有些收穫!

叮,走在技術路上的一次打卡!

2021年04月23日,圖書節,我的第一本技術書《重學Java設計模式》出版了。不久以後我感受過圖書衝榜到銷量榜第一、在圖書館看到我的技術書、被國外的粉絲夥伴購買帶出國門,還看到有個女孩買來作為禮物送給他的男友。也於不久後看到百度百科還有我書籍的資訊,還真是蠻開心的,但不膨脹

輸出也僅僅是我作為技術人的一次成長打卡,我就想走走沒走過的路爬爬沒爬過的山看看風雨過後的彩虹是否絢爛。而通過這樣的經歷瞭解下出書的流程;選題、定稿、三審三校、申請書號、印刷裝訂、發貨上架、營銷售賣。

除此之外,當你的文章越寫越多,除了技術上成體系的完善,你還會獲得各個平臺的扶持,比如在掘金寫小冊,得到掘金的簽約作者邀請!加油,總有機會是你可以上的!

五、你,要動手不?

寫文章,如果你還不知道從哪下手!

從給自己看的日常筆記,到整理成分析給讀者閱讀的文章,其實並不好寫,無論是技術、生活、職場,都會有一定的編寫門檻。以我個人為例,一篇文章的編寫,即使不計算編寫前的內容歸納整理,也不包括寫完後的文案、推廣、分享,僅僅是編寫時間也需要 6-8 個小時,這包括內容的創作、PPT、xmind、visio等各類工具的繪圖、也可能會串聯進去一些故事性的圖片。所以近一篇文章的編寫就已經很費時間,尤其是對不喜歡寫作文的理科碼農來說,再初期更是難搞!

但其實,做任何事想做好,都是難度、有門檻的!以我編寫文章的經驗,一篇文章的編寫可以總結以下圖稿中幾個方面:

  • 選題:這是第一步,也是非常重要的一步。在開始之前你總得要花不少的時間來想好你要寫什麼,是熱門的、實踐的、創新的還是什麼,這是時候還沒具體定內容,因為無論熱門、實踐在每一個欄目下都可以寫不同的內容。
  • 型別:是寫自己的故事、還是職場發展的自身經歷,還是寫寫學到的技術總結成文章呢。其實前期對你來說,寫技術是最好下手的,因為只要你經歷過,就一定會有技術的總結,比如你出了一個技術事故,自己的秒殺商品系統掛了,那麼肯定是會總結出對應的技術經驗的。當然你胡說自己跳槽位元組拿到工牌了,或者說慘遭試用期解僱,也一定會上熱門,不過此類文章對你的個人成長來說,不具備長期價值。
  • 內容:當你確定選題,選好了要寫的內容,接下來需要彙總此類內容的資料總結了,這包括你自己對技術的看法、也包括你在學習此技術點時從一些有價值的網站獲取的資料,當然也包括你閱讀的原始碼、官方的文件,這些內容都是非常具有權威性的。不過千萬不要拿一些看著就磨磨唧唧、似懂非懂的內容作為引入,可能這樣的內容本身就有坑!
  • 賣點:一篇爆款的文章中一定是有此文章的亮點賣點的,比如有技術創新價值嗎、有閱讀趣味性嗎、有分享傳播共鳴嗎、有流量轉換嗎,都會是一篇文章的賣點。其實每一個文章也都可以看做是一個 sku,這個 sku 好不好幾本也是你的賣點決定的!
  • 配圖:記住所有技術號主的文章,一定會有配圖的!xmind 都玩的很溜,visio 也畫的非常好,ppt 更是漂亮的很,因為好的圖會讓整篇文字堆滿的文章更具有可閱讀性。與此同時你還會看到一些較為搞笑的圖,來增加文章的趣味性。

六、來,總結一下!

心懷天下,聲色犬“碼”。生有熱烈,藏於俗常!

寫到這的時候想起首歌,吃的是下鍋的米、走的是人間的道、扛的是頂風的旗。就像我自己,生抗 美團技術部落格,並不是挑戰美團技術,而是扛起自己對技術的追求,抗的是對技術的品質!

任何一個自己喜歡的方向,不斷的極致的追求下去,都可能成為你自身最具有價值的財富。為你的八小時內謀生存、八小時外謀發展!

如果你現在還不沒有意識到自己應該為八小時外努力,那麼 35 歲之前,你手裡還能抓幾張牌?健康的身體、和睦的家庭、充足的積蓄、執行的計劃等等用於抵抗你的房貸車貸、職場中的疲憊、生活裡的消費呢。

加油吧!願每一個在路上拼搏的人都能;所求皆如願、所行化坦途

七、系列推薦

相關文章