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