dubbo和dubboX與微服務架構
一、傳統三層架構模式的缺陷
三層架構(3-tier architecture) 通常意義上的三層架構就是將整個業務應用劃分為:界面層(User Interface layer)web、業務邏輯層(Business Logic Layer)service、數據訪問層(Data access layer)dao。
區別於MVC
1)MVC中的模型(Model)指的是數據模型,用於封裝與應用程序的業務邏輯相關的數據,除此之外還可以封裝數據的處理方法(相當於業務邏輯)。這是完全區別於三層架構的模型層(Model)的。
MVC中模型(Model)的特點:
①有對數據直接訪問的權利,如:對數據庫的訪問;
②模型(Model)“不依賴”視圖(View)和控制器(Controller),即模型(Model)不關心它會被如何顯示或者如何被操作;
③模型(Model)中數據的變化一般會通過一種刷新機制被“公布”;
④為了實現③中的“機制”用於監視此模型的視圖必須事先在此模型上註冊。從而,視圖可以了解在數據模型上發生的改變。
2)視圖(View),這裏的視圖基本跟三層中的視圖一樣,都是為了顯示數據,沒有程序上的邏輯。為了實現視圖上數據的刷新,視圖(View)需要訪問它監視的模型(Model),所以應該事先在被它監視的數據那裏進行註冊。
3)控制器(Controller),這個概念是在三層中不存在的概念。它主要起到不同層面的組織作用,用於控制應用程序的流程。主要處理事件並作出相應。“事件”主要包括:用戶的行為和數據的改變。
那麽具體的傳統的三層架構模式缺點有什麽呢?
1、所有的代碼都在同一個項目中維護,部署在同一個系統中
2、所有的代碼都在一個代碼庫,代碼量大,訪問人數多,導致訪問效率低下
3、分模塊開發,各模塊耦合度大,改一發動全身
4、多層間有交叉,導致同步改變,失去分層獨立性
5、代碼可讀性差(模塊耦合),運維團隊看不懂代碼
6、拆分多個子系統時,做公共代碼的服務化(解決重復性問題)量大
二、什麽是微服務架構?
從上圖可以看出,微服務架構是:按功能拆分模塊,每個模塊有 服務消費者和服務提供者兩個項目。
並且每個模塊又是三層架構,服務提供者是service和dao層,服務消費者是web層。每個模塊可以獨立
技術選型,獨立開發,獨立部署,獨立運維。
三、為什麽需要微服務架構?
解決傳統三層架構的不足
四、微服務架構的優缺點
優點:
1、每個模塊(項目),可以獨立技術選擇(語言、數據庫、架構),充分發揮各種語言技術的特長,博采眾長
2、每個模塊都獨立開發,代碼量小,業務簡單,可控性強
3、服務模塊之間不用直接依賴,可以使用一些服務治理框架來完成一個類似esb功能.
ESB全稱為Enterprise Service Bus,即企業服務總線。它是傳統中間件技術與XML、Web服務等技術結合的產物。ESB提供了網絡中最基本的連接中樞,是構築企業神經系統的必要元素。ESB的出現改變了傳統的軟件架構,可以提供比傳統中間件產品更為廉價的解決方案,同時它還可以消除不同應用之間的技術差異,讓不同的應用服務器協調運作,實現了不同服務之間的通信與整合。從功能上看,ESB提供了事件驅動和文檔導向的處理模式,以及分布式的運行管理機制,它支持基於內容的路由和過濾,具備了復雜數據的傳輸能力,並可以提供一系列的標準接口。
4、隨著系統架構的演變,微服務架構是當今時代的產物。
缺點:
因為每個功能都是獨立服務,在一個大型項目中監控管理這些服務變得復雜,定位排除問題難度增大
五、架構使用場景
微服務架構使用大型項目
傳統三層架構使用中小型項目
六、什麽是微服務治理框架?
微服務治理框架就是在微服務架構中用來治理服務的框架
七、常見的服務治理框架
1):dubbo
國產,來自於阿裏巴巴,開源,國內用的比較多。缺點是以前更新不及時,在2014年更新了2.4版本後一直到
2017年9月7日才發布了2.5.4版本,三年沒更新。先出來的東西思想不是很先進。
2):spring cloud
國外,開源,國外用的多,國內在逐漸流行。更新相當及時,後出來的思想較為先進。學習難度較大。
Spring Cloud對於中小型互聯網公司來說是一種福音,因為這類公司往往沒有實力或者沒有足夠的資金投入去開發自己的
分布式系統基礎設施,使用Spring Cloud一站式解決方案能在從容應對業務發展的同時大大減少開發成本。
八、什麽是dubbo?
dubbo是服務治理框架,可以與spring 無縫集成。是阿裏巴巴SOA服務化治理方案的核心方案,每天為2000+個服務提供
超過30億次的訪問量支持。有良好的實用價值。
dubbo采用一種非常簡單的模型,要麽提供方提供服務,要麽消費方消費服務。所以基於這一點可以抽象出服務方(provider)
和消費方(consumer)兩個角色。
九、dubbo能做什麽?
1、解決URL強依賴,只依賴服務註冊中心。
2、自動畫出依賴圖,理清調用關系
3、支持集群
十、dubboX是什麽?
因為dubbo更新比較慢,在2014年更新2.4版本後2017年9月7日才發布2.5.4版本。期間,當當網根據自身需求,
對dubbo進行了擴展,就是現在的dubboX
十一、dubboX的主要功能有哪些?
1、支持rest風格(http+json/xml)
2、支持基於kryo和fst的java高效序列化的實現
3、支持基於嵌入式tomcat的http remoting體系
4、升級了spring,將dubbo的2.x版本升級到了3.x版本
5、升級了服務註冊中心zookeeper客戶端,將dubbo中的zookeeper升級到了當時最新版本,以修正老版本中
包含的BUG
6、dubboX和dubbo2.x是兼容的,沒有改變dubbo的任何功能和配置方式(除了升級spring之類版本)
dubbo和dubboX與微服務架構