微服務(wù)學(xué)習(xí)(2)-微服務(wù)框架實(shí)現(xiàn)-Dubbo簡介

一、微服務(wù)實(shí)現(xiàn)框架

? ?當(dāng)前隨著微服務(wù)的應(yīng)用,越來越多的商用公司和開源團(tuán)體開發(fā)微服務(wù)的實(shí)現(xiàn)框架。主要有:

1)Dubbo

? ?Dubbo是阿里巴巴公司開源的一個(gè)高性能優(yōu)秀的服務(wù)框架,使得應(yīng)用可通過高性能的 RPC 實(shí)現(xiàn)服務(wù)的輸出和輸入功能,可以和 Spring框架無縫集成。

? ? ? 由于該框架由于資料文檔較多,并且經(jīng)過阿里內(nèi)部系統(tǒng)、其他公司大量驗(yàn)證,對于國內(nèi)開發(fā)人員來說是學(xué)習(xí)和實(shí)現(xiàn)微服務(wù)首選框架。

2)Spring Cloud

? ? ?Spring Cloud是一系列框架的有序集合。它利用Spring Boot的開發(fā)便利性巧妙地簡化了分布式系統(tǒng)基礎(chǔ)設(shè)施的開發(fā),如服務(wù)發(fā)現(xiàn)注冊、配置中心、消息總線、負(fù)載均衡、斷路器、數(shù)據(jù)監(jiān)控等,都可以用Spring Boot的開發(fā)風(fēng)格做到一鍵啟動和部署。Spring并沒有重復(fù)制造輪子,它只是將目前各家公司開發(fā)的比較成熟、經(jīng)得起實(shí)際考驗(yàn)的服務(wù)框架組合起來,通過Spring Boot風(fēng)格進(jìn)行再封裝屏蔽掉了復(fù)雜的配置和實(shí)現(xiàn)原理,最終給開發(fā)者留出了一套簡單易懂、易部署和易維護(hù)的分布式系統(tǒng)開發(fā)工具包。

? ? 該框架中最為出名的便是Spring Cloud Netflix 微服務(wù)框架。從項(xiàng)目的背景來看,Dubbo 國內(nèi)用的公司挺多,國內(nèi)影響力大,Spring Cloud 自然在國外影響力較大,所以這個(gè)來看不分伯仲了,畢竟都有大公司在使用。

3)Dubbox

Dubbox是當(dāng)當(dāng)網(wǎng)擴(kuò)展了Dubbo,

dubbx是當(dāng)當(dāng)網(wǎng)對原阿里dubbo2.x的升級,并且兼容原有的dubbox。其中升級了zookeeper和spring版本,并且支持restfull風(fēng)格的遠(yuǎn)程調(diào)用。

dubbox git地址:https://github.com/dangdangdotcom/dubbox

dubbox 關(guān)于restfull的介紹:http://dangdangdotcom.github.io/dubbox/rest.html

--------------------------------------------------------------------------------------------------------------------------------------------

dubbox的新特性介紹:

支持REST風(fēng)格遠(yuǎn)程調(diào)用(HTTP + JSON/XML):基于非常成熟的JBossRestEasy框 架,在dubbo中實(shí)現(xiàn)了REST風(fēng)格(HTTP + JSON/XML)的遠(yuǎn)程調(diào)用,以顯著簡化企業(yè)內(nèi)部的跨語言交互,同時(shí)顯著簡化企業(yè)對外的Open API、無線API甚至AJAX服務(wù)端等等的開發(fā)。事實(shí)上,這個(gè)REST調(diào)用也使得Dubbo可以對當(dāng)今特別流行的“微服務(wù)”架構(gòu)提供基礎(chǔ)性支持。 另外,REST調(diào)用也達(dá)到了比較高的性能,在基準(zhǔn)測試下,HTTP + JSON與Dubbo 2.x默認(rèn)的RPC協(xié)議(即TCP + Hessian2二進(jìn)制序列化)之間只有1.5倍左右的差距,詳見文檔中的基準(zhǔn)測試報(bào)告。

支持基于Kryo和FST的Java高效序列化實(shí)現(xiàn):基于當(dāng)今比較知名的KryoFST高性能序列化庫,為Dubbo默認(rèn)的RPC協(xié)議添加新的序列化實(shí)現(xiàn),并優(yōu)化調(diào)整了其序列化體系,比較顯著的提高了Dubbo RPC的性能,詳見文檔中的基準(zhǔn)測試報(bào)告。

支持基于Jackson的JSON序列化:基于業(yè)界應(yīng)用最廣泛的Jackson序列化庫,為Dubbo默認(rèn)的RPC協(xié)議添加新的JSON序列化實(shí)現(xiàn)。

支持基于嵌入式Tomcat的HTTP remoting體系:基于嵌入式tomcat實(shí)現(xiàn)dubbo 的HTTP remoting體系(即dubbo-remoting-http),用以逐步取代Dubbo中舊版本的嵌入式Jetty,可以顯著的提高REST等的遠(yuǎn) 程調(diào)用性能,并將Servlet API的支持從2.5升級到3.1。(注:除了REST,dubbo中的WebServices、Hessian、HTTP Invoker等協(xié)議都基于這個(gè)HTTP remoting體系)。

升級Spring:將dubbo中Spring由2.x升級到目前最常用的3.x版本,減少版本沖突帶來的麻煩。

升級ZooKeeper客戶端:將dubbo中的zookeeper客戶端升級到最新的版本,以修正老版本中包含的bug。

支持完全基于Java代碼的Dubbo配置:基于Spring的Java Config,實(shí)現(xiàn)完全無XML的純Java代碼方式來配置dubbo

調(diào)整Demo應(yīng)用:暫時(shí)將dubbo的demo應(yīng)用調(diào)整并改寫以主要演示REST功能、Dubbo協(xié)議的新序列化方式、基于Java代碼的Spring配置等等。

修正了dubbo的bug包括配置、序列化、管理界面等等的bug。

注:dubbox和dubbo 2.x是兼容的,沒有改變dubbo的任何已有的功能和配置方式(除了升級了spring之類的版本)

4)ServiceComb框架


? ? ?該框架是華為的HWCloud在6月發(fā)布開源的一款微服務(wù)框架,基于Go/YAML進(jìn)行配置,部署特別快,源碼量也小,可以輕松地在一臺機(jī)子上分析與斷點(diǎn)。詳細(xì)參考http://www.lxweimin.com/p/ba432eae0a8f

二.Dubbo簡介

1)Dubbo的框架


上面從Dubbo官網(wǎng)直接拿來,看一下基于RPC層,服務(wù)提供方和服務(wù)消費(fèi)方之間的調(diào)用關(guān)系。

Provider: 暴露服務(wù)的服務(wù)提供方。

Consumer: 調(diào)用遠(yuǎn)程服務(wù)的服務(wù)消費(fèi)方。

Registry: 服務(wù)注冊與發(fā)現(xiàn)的注冊中心。

Monitor: 統(tǒng)計(jì)服務(wù)的調(diào)用次數(shù)和調(diào)用時(shí)間的監(jiān)控中心。

調(diào)用流程

0.服務(wù)容器負(fù)責(zé)啟動,加載,運(yùn)行服務(wù)提供者。

1.服務(wù)提供者在啟動時(shí),向注冊中心注冊自己提供的服務(wù)。

2.服務(wù)消費(fèi)者在啟動時(shí),向注冊中心訂閱自己所需的服務(wù)。

3.注冊中心返回服務(wù)提供者地址列表給消費(fèi)者,如果有變更,注冊中心將基于長連接推送變更數(shù)據(jù)給消費(fèi)者。

4.服務(wù)消費(fèi)者,從提供者地址列表中,基于軟負(fù)載均衡算法,選一臺提供者進(jìn)行調(diào)用,如果調(diào)用失敗,再選另一臺調(diào)用。

5.服務(wù)消費(fèi)者和提供者,在內(nèi)存中累計(jì)調(diào)用次數(shù)和調(diào)用時(shí)間,定時(shí)每分鐘發(fā)送一次統(tǒng)計(jì)數(shù)據(jù)到監(jiān)控中心

2)Dubbo的注冊中心

? ? ?注冊中心需要服務(wù)的提供者和消費(fèi)者在啟動和停止時(shí)自動注冊,消費(fèi)者在選擇提供者也先通過在注冊中心根據(jù)集群的選擇策略來確定服務(wù)者。Dubbo的注冊中心支持Zookeeper注冊中心、Multicast注冊中心、Redis注冊中心等。其中,Zookeeper使用較為普遍。

3)Dubbo項(xiàng)目

Dubbo項(xiàng)目可以在? http://dubbo.io/? 下載,目前版本是2.5.8。目錄結(jié)構(gòu)如下圖:


可以通過Dubbo的代碼(使用Maven管理)組織,與上面的模塊進(jìn)行比較。簡單說明各個(gè)包的情況:

dubbo-common 公共邏輯模塊,包括Util類和通用模型。

dubbo-remoting 遠(yuǎn)程通訊模塊,相當(dāng)于Dubbo協(xié)議的實(shí)現(xiàn),如果RPC用RMI協(xié)議則不需要使用此包。

dubbo-rpc 遠(yuǎn)程調(diào)用模塊,抽象各種協(xié)議,以及動態(tài)代理,只包含一對一的調(diào)用,不關(guān)心集群的管理。

dubbo-cluster 集群模塊,將多個(gè)服務(wù)提供方偽裝為一個(gè)提供方,包括:負(fù)載均衡、容錯、路由等,集群的地址列表可以是靜態(tài)配置的,也可以是由注冊中心下發(fā)。

dubbo-registry 注冊中心模塊,基于注冊中心下發(fā)地址的集群方式,以及對各種注冊中心的抽象。

dubbo-monitor 監(jiān)控模塊,統(tǒng)計(jì)服務(wù)調(diào)用次數(shù),調(diào)用時(shí)間的,調(diào)用鏈跟蹤的服務(wù)。

dubbo-config 配置模塊,是Dubbo對外的API,用戶通過Config使用Dubbo,隱藏Dubbo所有細(xì)節(jié)。

dubbo-container 容器模塊,是一個(gè)Standalone的容器,以簡單的Main加載Spring啟動,因?yàn)榉?wù)通常不需要Tomcat/JBoss等Web容器的特性,沒必要用Web容器去加載服務(wù)。

參考地址:http://blog.csdn.net/noaman_wgs/article/details/70214612

http://dubbo.io/

http://www.lxweimin.com/p/ba432eae0a8f

http://shiyanjun.cn/archives/325.html

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

推薦閱讀更多精彩內(nèi)容

  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • Dubbo是什么 Dubbo是Alibaba開源的分布式服務(wù)框架,它最大的特點(diǎn)是按照分層的方式來架構(gòu),使用這種方式...
    Coselding閱讀 17,287評論 3 196
  • 聽到這個(gè)消息,我以為是傳說,或者是電視劇看多了,把生活等同于電視劇里的狗血情節(jié)。 可是生活遠(yuǎn)比電視劇更精彩。 同學(xué)...
    花妖呀閱讀 1,872評論 2 3
  • 今天去打疫苗,孩子一開始說的好好的去打針。到了目的地,很多小孩子已經(jīng)在那里了,排隊(duì)叫號的隊(duì)伍已經(jīng)排了很長,等待中孩...
    2019影閱讀 161評論 0 1
  • 1313.感恩這個(gè)天使數(shù)字作為我今天記錄的開篇。 1314.感恩這個(gè)一生一世,讓我的生活越來越精彩。 1315.感...
    李馨蘭閱讀 1,455評論 0 1