天天看點

【Dubbo分布式服務架構】1.Dubbo基礎介紹

前言

Dubbo是一個常用的分布式服務架構,它緻力于提供高性能、透明化的RPC遠端服務方案。學習Dubbo有助于提高企業級應用的開發效率,以及可通過簡單的配置就可以實作負載均衡,提高服務的效率。

一、Dubbo基礎知識

什麼是Dubbo?在介紹Dubbo之前,我們首先了解一下企業級應用架構的整個變遷,有利于我們了解Dubbo的産生背景。

我們的企業級應用架構的變化如圖:

【Dubbo分布式服務架構】1.Dubbo基礎介紹

單一應用階段(ORM為主):

對于通路流量小的網站或系統,隻需要單一的應用架構即可,也就是隻需要一個應用就能将所有的功能都聚集到一起,來減少部署的成本,這個時候,用于簡化增删改查工作量的資料庫通路架構(ORM對象關系映射架構,如Hibernate、MyBatis),會提高開發的效率。

垂直應用架構(MVC為主):

當通路量稍微增大以後,單一的應用架構就不能滿足系統的日常需求,我們需要将系統之間耦合度較低的子產品拆分出來,來減少代碼的備援,提高效率。此時,用于提升前端頁面通路效率的Web架構應運而生(如Struts、SpringMVC),與之前的ORM架構結合起來,共同形成了MVC架構的Web應用體系。

分布式服務架構(RPC為主):

當應用越來越多,應用和應用之間不斷的互動,此時就需要将核心的業務抽取出來,提供獨立的服務,形成穩定的服務中心,使前端可以适應多變的市場需求。此時,使用分布式服務架構是一個關鍵,而我們的Dubbo就是一個分布式服務架構。

流動計算架構(SOA為主):

當提供的服務越來越多,我們就需要一個中心,來對不同服務的負載進行評估,實時的調配資源,提高叢集的應用率。此時,資源的排程和治理中心就是關鍵。而Duboo支援了完整的RPC調用的支援,以及服務治理中心相關的功能。

我們一般開發者大多數接觸最多的就是基于MVC架構的Web應用,學習Dubbo更有利于我們開發分布式的Web應用。

Dubbo介紹:

Dubbo是一個分布式服務架構,緻力于提高性能和透明化的RPC遠端服務調用方案,以及SOA服務治理方案。

Dubbo名稱來源于澳洲達博市。與Dubbo同類型的架構還有Apache的Thrift、Hessian,Java原生的RMI,WebService,以及淘寶的HSF,京東的JSF。

Apache的Thrift對多語言的支援比較好,但是負載均衡和SOA的治理這一塊比較缺乏。而Hessian和WebService都是傳統的HTTP調用架構,由于HTTP調用時使用的多是短連接配接形式,大部分資源都被浪費在伺服器的IO導上。Java的RMI隻支援Java語言,而且性能比較一般。淘寶的HSF和京東的JSF都沒有開源,那麼在開源架構中,Dubbo是一個比較優秀的分布式服務架構。

Dubbo的線上版本比較穩定,社群文檔多,運維方案比較成熟(admin控制台和monte監控平台)。

Duboo支援拓展,目前,國内有許多家大型生産型應用網際網路公司使用了Dubbo架構,如圖:

【Dubbo分布式服務架構】1.Dubbo基礎介紹

這裡,Dubbo是阿裡巴巴SOA服務化治理方案的核心架構,每天為2000+個服務提供30億次通路量支援,并被廣泛應用于阿裡巴巴集團的各個成員站點。

二、Dubbo涉及的知識

(1)遠端調用:RMI、hassion、webService、thrift

     Dubbo都會在底層真正調用的時候,使用這些架構來做遠端調用。

(2)通信互動:HTTP、mina、netty

     其中mina與netty都是NIO的架構。

(3)序列化:hessian2、java、json

     Dubbo預設使用hessian2

(4)容器:jetty、spring

     Dubbo在容器方面支援像jetty這樣的輕量級容器,或者spring這樣的IOC容器。

(5)多線程:異步,線程池

     Dubbo涉及了異步的調用和線程池的管理。

(6)負載均衡:zookeeper、redis

     Dubbo大部分使用zookeeper來實作負載均衡。

三、使用Dubbo可以做什麼

(1)作為對内提供服務應用的容器

我們可以開發很多業務處理的應用,然後使用Duboo這種容器來提供服務。

(2)拆分複雜Web應用到伺服器容器

把大量的邏輯放置在服務提供的應用之中,使Web應用調用服務容器。

(3)應用負載均衡協調

我們可以使用Duboo來實作軟體的負載均衡和協調,這樣不僅簡化了配置,還大大簡化了伺服器的使用率。

(4)應用服務治理

下圖完整的表示了Dubbo在服務治理提供的相關功能:

【Dubbo分布式服務架構】1.Dubbo基礎介紹

除了負載均衡,還可以做服務的降級、調用統計以及依賴關系的計算等等。使用這些功能我們可以很清晰了解一個應用的依賴關系,以及不同應用調用的負載情況,我們根據這些負載,來配置設定和計算,以增加對應的機器。

轉載請注明出處:http://blog.csdn.net/acmman/article/details/73008700

繼續閱讀