隨筆- 27  評論- 18  文章- 0 

6月9号安徽快三开奖结果: 淺談微服務架構與服務治理的Eureka和Dubbo

陕西十一选五 www.eoxav.com 前言

        本來計劃周五+周末三天自駕游,誰知人算不如天算,周六恰逢臺風來襲,湖州附近的景點全部關停,不得已只能周五玩完之后,于周六踩著臺風的邊緣逃回上海。周末過得如此艱難,這次就聊點務虛的話題,一是淺談微服務的架構設計,二是聊聊微服務中廣泛用于服務治理的Eureka與RPC框架Dubbo異同點。

一、微服務的架構設計

        之所以想聊一下這個話題,主要有感于最近接觸的兩個新的微服務項目--兩個項目的架構設計出自兩個人之手,卻不約而同的使用了相同的設計理念,項目結構非常類似。又想到就職于上家公司時接觸到的項目的結構設計,于是迸發出了些微的想法。用微服務的架構設計來作為議題,很有喧嘩取寵的偏向,所以需要聲明一下,本文說的都是基于博主當前淺薄的軟件開發經驗與貧瘠的架構設計思想得出的淺見,僅是一家之言,而且其中必定包含了很多的確認型偏誤,對此現在無法避免。本文的目的只是與大家分享一下自己的想法,僅此而已。

        言歸正傳,當前流傳的比較廣且提的比較多的設計理念,當屬2004年Eric Evans提出的Domain Drive Design,即領域驅動設計,簡稱DDD。該設計理念可以說與微服務具有相當大的共生依賴關系,也因此,直到最近幾年微服務興起,DDD設計理念才大行其道。該設計理念就是先確定領域,再在此基礎上進行設計開發。而領域怎么理解?通俗的理解方式就是一個獨立的業務???,以業務的范圍來確定領域的邊界。以電商項目為例子,購物車可以看成一個領域,下訂單看成一個領域,商城看成一個領域,而當某個領域發展的過于龐大的時候,再對其進行拆分,分成更細分的領域,原則就是保證每一個領域做的是一個單獨的事情,做到最大程度的解耦。

        以實際項目為例,將一個項目劃分成三個一級???,分別為微服務啟動類???、核心業務???、通用的中間件等技術???。而每個一級??櫓卸加腥舾篩齠賭??,每個二級??榫褪且桓雋煊?,比如業務??橄碌畝賭?橛校荷壇?、購物車、下訂單、支付等。技術??橄掠校簉edis???、swagger???、數據庫???、消息隊列??櫚鵲?。業務??橛爰際蹌?櫓械畝賭??,都通過啟動類??榻型騁壞惱?,即確定哪個微服務需要用到哪些???。這樣就可以以最大的靈活性對已有??榻兇楹嚇帕?。

        稍微高深一些的技術人員都知道,沒有完美的架構設計,只有更適合當前場景的設計。良好的架構設計不能一勞永逸的解決未來所有的問題,但絕對可以在解決問題時給你提供極大的便捷性。

二、Eureka與Dubbo

        現在網上,更多的是用Dubbo與Spring Cloud進行比較,從微服務的??楣δ萇媳冉隙叩囊焱?。但這樣比較未免有點偏,Dubbo的定位更多的是做服務治理,而不是提供一攬子的微服務架構解決辦法,所以比較的結果就是Spring Cloud這個功能有那個功能有,但Dubbo這個沒有那個沒有。今天咱們從服務治理的角度,用Spring Cloud常用的Eureka與Dubbo進行比較,看看二者的異同。

        要說這兩者,不得不提一下分布式架構中的CAP理論,即一個分布式框架,只能同時滿足C一致性、A可用性、P網絡分區容錯性這三者中的兩個,不可能同時兼備三者。

        從這個角度上來看,Dubbo推薦的注冊中心首選ZK,而ZK是一個滿足CP的框架;Eureka由于其架構設計,更多專注于AP。

        對于容錯機制,Dubbo自身實現了多個錯誤處理方式,比如失敗切換Failover、快速失敗Failfast、失敗安全Failsafe等,Eureka是借助于Spring Cloud中的熔斷器Hytrix實現的容錯。

        對于負載均衡,Dubbo自身實現了多種負載均衡方式,比如隨機權重、哈希一致性等,Eureka同樣是將此功能外放,通過Ribbon等實現了負載均衡。

        服務注冊及發現,Dubbo自身封裝了NettyClient等通訊工具,而Eureka都是采用的應用層通訊HttpClient。

        由此可以看出,微服務框架本身也是采用了領域拆分的設計理念,將相對獨立的不同功能拆分成單獨的???,想用什么??榫妥楹鮮裁茨??。從這個角度上看,Dubbo更多的是提供了一個組合起來不可拆分的整體功能,而Eureka與其他組件則簡單輕便的多。

后記

        其實可以再延伸一步,感覺微服務的這種DDD設計理念,可以對比人類社會中的分工產生效能。每一個工種代表一個領域,不同的領域內部做好自己的功能即可,通過分工能極大提升社會整體的生產力,而通過領域劃分,也能提升一個框架、一個組織的工作效能。萬事萬物皆有聯系,古人誠不我欺。

posted on 2019-08-11 13:56 張曾經 閱讀(...) 評論(...) 編輯 收藏