持續提升程序員幸福指數——使用abp vnext設計一款面向微服務的單體架構


可能你會面臨這樣一種情況,在架構設計之前,你對業務不甚了解,需求給到的也模棱兩可,這個時候你既無法明確到底是要使用單體架構還是使用微服務架構,如果使用單體,后續業務擴展可能帶來大量修改,如果使用微服務,前期可能在工期上把項目給耽誤了,你該怎么辦?這就是這篇文章想要研討的面向微服務的單體架構的由來。

為什么不用傳統單體架構?

  

  

  我們可以看到隨着業務的升級,單塊的代碼的拆分會變得越來越困難,如果在前期沒有做好規划和伏筆,那么后續的演化就是一場災難。所以,目前的設計如果是企業級別的,都必然要做架構的適當冗余,因為沒有人能知道未來長什么樣,架構必然和業務一樣是隨着綜合因素慢慢長出來的,不可能一蹴而就,一步到位。

為什么不用微服務架構?

微服務痛點
  • 數據一致性分發
  • 數據聚合 Join
  • 分布式事務
  • 單體系統解耦拆分
什么時候開始用微服務

  這里引用架構師楊波(前Ebay架構師/攜程/拍拍貸研發部總監,資深技術架構師,微服務技術專家)的一些觀點:

“企業一開始不推薦直接使用微服務,因為微服務需要前期基礎設施的投資,復雜性很高(詳見下面微服務的四大痛點),如果對問題領域並不是很理解,一開始用微服務,你很難去划分服務的邊界,你的生產力反而會比較低,而且你花了很大精力進行開發,你的產品並沒有被市場驗證過,有可能會失敗,所以這個選項風險會比較高。所以我們推薦的是單塊優先,先從單塊運用做起,這樣成本低,團隊成員也比較少,無須太多研發投入,就可以交付一些基本的功能給客戶使用。

  隨着應用越來越成功,客戶增加,你的系統復雜度會越來越高,就會出現單塊應用和團隊規模之間的矛盾,生產力會隨着業務復雜度逐漸降低。所以在一些初創型公司,你更多看到的是單塊應用,只有一些中大型的公司會看到微服務架構。”

      

  “交叉點表明,業務已經到達了一定的復雜性,單塊應用已經無法滿足業務增長的需要,研發效率開始下降了,而微服務可以提升研發和交付的效率。這個點需要架構師去綜合、權衡。個人經驗,一般團隊需要達到百人規模,才去考慮微服務。”

  • 發量不高——業務流量並沒有達到千萬或億級別
  • 團隊規模——團隊成員並沒有達到百位規模
  • 系統復雜度——沒有高並發也就談不上復雜度
  • 適用場景——互聯網/物聯網

微服務兼容的單體架構

演化方便——低代碼演化

  如上所示,我們可以看到API在拆解過程中,基本沒有做任何代碼變更(具體代碼可以查看我的GitHub或者你也可以參看我的視頻《ABP vNext框架實戰系列》),Domain的演化也只是做代碼簡單遷移,整個重構過程並沒有做多大的變化。這就是所謂“持續提升程序員幸福指數"的模塊化之道啊。

總結

  ABP vNext的模塊化思想給了微服務演化提供了底層能力,我在這兒只是拋磚引玉,希望有更多的人能參與進來進行分享。如果你想了解更多ABP vNext的地方,你也可以參看我的另外一篇文字《淺談Abp vNext的模塊化設計》,謝謝您的捧場。

  Abp vNext是一款優秀的框架,但是要從零開始能把每個角落都熟悉起來需要不少摸索時間,希望通過自己的經驗給你的快速學習賦能,拋開生成器,一起從零開始,手工打磨一款生產級別的框架,讓你對AbpvNext知其然,知其所以然。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM