微服務化路上的只言片語

2022-01-10 06:34:52 字數 1958 閱讀 1011

類似於雜談性質的文,總結下公司實行微服務化上遇到的一些問題。

雖然參與了開發過程,但整體更像是個旁觀者,前期還是大家討論怎麼做,後來慢慢就由負責架構的同事專職做規劃,拆分任務去完成。

最初的架構(資料庫和其他部分都做了簡化)

初衷並不是為了趕時髦,為了團隊kpi之類的,而是遇到了乙個很現實的問題。

研發團隊慢慢從幾個人發展為十幾,幾十人,所有人都在乙個專案上開發,**倉庫越來越大,merge衝突越來越頻繁,部署時也往往會因為一些bug導致全站部署拖延。

再加上訪問量越來越高,帶來的不確定性越來越大,一些流量較大的業務可能會導致整站都掛掉。

內部和外部都出現了問題。

當時雖然研發團隊的人比較多了,但大家都基本是做業務兼做非業務的東西,沒有成立專門的非業務部門。

大家都是在業務開發之外安排了微服務化相關的開發,這導致了程序緩慢,並且也隱式確定了微服務化不能影響現有業務開發。

最開始設想劃分粒度應該粗一些,按照各個大頻道來劃分(有點類似於分子站)。

但遇上了乙個問題,bl和dal層的**是共用的,再加上之前的模組化不合理,導致乙個模組直接使用了屬於另乙個模組的業務**。

讓這更糟糕的是業務還在飛快迭代,這兩層的**也會發生很大的改變。

這時就有兩種選擇:

一種是複製,把需要的bl和dal層**複製到各服務中;

另一種是抽取依賴,把bl和dal層**抽離成乙個單獨的jar,被各個服務依賴。

前者會需要做頻繁的同步,容易出現問題,很耗費精力。

當時我們選擇了後者,先將他變為乙個技術債解決現在的問題。

結構就成為了這樣

組內也有同事開始脫離業務,慢慢專注在微服務化這一方向上,隨後從業務組中慢慢抽離出了乙個基礎架構組(簡稱基架)。

至此其實已經稍微有點微服務的樣子了... ...

但還存在很多問題。

細心的朋友可能發現了上圖中所有的服務還都依賴乙個db!(以及對應的唯讀例項等)

所以...儲存掛了,該掛的還是都掛了。

於是再接下來的一段時間裡,基架那邊進行了一些比較大的業務拆分,將一些核心業務進行了分表分庫使用單獨的儲存,這工作今日還在進行,為**的穩定做出來很大貢獻。

其實還有很多東西都沒有(鏈路監控已經做好了...插不進上面 這裡說下):

一些服務間直接呼叫的解耦,舉個例子,乙個使用者發完帖子後,現在是在**裡依次呼叫其他服務去執行一些操作,其實這裡應該用訊息發布的模式去做;

配置中心;

安全性;

等等。其實想一想這些是現在的spring cloud開箱即用的功能,如果當時這方案已經成熟或許可以少走一些彎路也說不定。

和技術和業務無關。

專門成立了基架組其實有好處也有壞處,好處是有一部分人可以專門攻堅**遇到的問題,壞處是其他人怎麼辦。

首先這並不是說業務組沒有機會做一些技術相關的事,而是業務組做這些事的機會其實減少了,這給人帶來的技術提公升也不一樣。

那在業務組怎麼提公升自己的技術能力呢?

這也是我一直思考的問題。

我現在的一些方式無非就是課餘多看書看資料,增長自己的知識和視野。

但其實這樣也挺容易迷茫的,如何實用化呢,怎麼確保自己所學落地呢?

我的想法以及之後的做法會是直接在專案裡用上,但這也不是說隨便往專案中加入不必要的東西,而是要加入會帶來效能提公升潛力的東西,至於能否提公升就要看自己的實戰了。

書看完就過,沒有自己的想法和思考終究只是表面上的東西,會隨著時間漫漫淡忘,昨天在看nio.2的筆記,14年記的現在基本已經忘卻了,這就很糟糕了。

最悲慘的不是學過後忘記了相關知識,而是忘記了曾經自己學過。

關於「關聯」函式的只言片語

關聯函式的結果需要請求結束後才能獲得,所以提取關聯結果的值必須在請求後,而關聯函式必須在請求前。由於我們在訪問請求前設定規則,伺服器返回的動態內容都會被關聯函式捕捉並且儲存到引數中,這樣就實現了對動態資料的捕獲,通過後期處理過程,即可完成對於動態物件的操作功能。關聯步驟流程圖 簡單的說,關聯就是對伺...

擠出來的只言片語

寫在正題之前先宣布訊息一條 我已經重新投入到社會主義現代化建設的偉大程序中來了。感謝在這段日子裡,眾多給予我幫助和支援的熟悉朋友及陌生朋友。更要感謝 默默地傾聽 祝幸福。話是客套點,可心是誠的。呵呵 開始切題。感悟到中國人多,是在北京 感悟到北京人多,是在地鐵 感悟到地鐵人多,是在早上上班的時候。摩...

關於本體的只言片語3

表達差異詞彙孤島 傳統的資訊檢索技術缺乏知識處理能力和理解能力 語義檢索是把資訊檢索與人工智慧技術 自然語言技術相結合的檢索,核心是用形式化本體描述背景知識,並明確化文件的語義,以便綜合利用本體的表達能力和推理機制。owl語言有望稱為未來語義web上標準的本體表示語言。本體描述語言研究 本體構建方法...