Dubbo簡單介紹及實例

1、概念


  Dubbo是一個分布式服務框架,以及阿里巴巴內部的SOA服務化治理方案的核心框架。其功能主要包含:高性能NIO通訊及多協議集成。服務動態尋址與路由。軟負載均衡與容錯,依賴分析與降級等。

  說通俗點,就是首先將程序組件化成一個個相對獨立的服務,然后就能夠對服務進行分布式。并且,它有注冊中心通過監聽,實時發現著新服務,并部署。還能夠推送給client;它還集成了負載均衡的解決方式。利用隨機算法來講各個服務科學地分配到多臺server上;當然,它也集成了容錯機制,來提高集群的穩定性。


  



2、架構


  


 節點角色說明:

  ?? Provider: 暴露服務的服務提供方。

  ?? Consumer: 調用遠程服務的服務消費方。

  ?? Registry: 服務注冊與發現的注冊中心。

  ?? Monitor: 統計服務的調用次調和調用時間的監控中心。

  ?? Container: 服務執行容器。

 調用關系說明:

  0. 服務容器負責啟動。載入,執行服務提供者。

  1. 服務提供者在啟動時。向注冊中心注冊自己提供的服務。

  2. 服務消費者在啟動時,向注冊中心訂閱自己所需的服務。

  3. 注冊中心返回服務提供者地址列表給消費者。假設有變更,注冊中心將基于長連接推送變更數據給消費者。

  4. 服務消費者。從提供者地址列表中,基于軟負載均衡算法。選一臺提供者進行調用,假設調用失敗,再選還有一臺調用。

  5. 服務消費者和提供者,在內存中累計調用次數和調用時間,定時每分鐘發送一次統計數據到監控中心。

 注冊中心(Registry)說明:

  對于Dubbo架構中的控制中心及Registry,阿里提供了兩種方案:Zookeeper和Redis。生產環境建議大家都使用Zookeeper,推薦理由是:

  1.?????Dubbo的官網上寫著,使用Dubbo-2.3.3及以上的版本號,推薦使用Zookeeper注冊中心。

  2.?????Zookeeper是Apache Hadoop的子項目。強度相對較好。可以全然勝任生產環境的扮演穩定的角色。

  3.?????Dubbo未對Zookeeper服務端做不論什么侵入改動。僅僅需安裝原生的Zookeeperserver就可以,全部注冊中心邏輯適配都在調用Zookeeperclient完畢。


3、實例


???? 以下將不貼出來源代碼,僅僅對項目結構即部分核心代碼進行簡單說明。

源代碼自行下載,下載地址:點擊打開鏈接

  為了簡單起見,這個實例中。我們沒有使用Zookeeper注冊中心暴露服務地址,而是使用外網的multicast廣播注冊中心暴露服務地址。這樣我們能夠高速的認識一下Dubbo的作用。

  案例中。我們建立了兩個WebProject:dubboprovider和dubboconsumer,前者為服務提供方。后者作為client。我們將dubboprovider服務類的接口引入到dubboconsumer項目中(不能引用服務的實現類)。然后通過multicast廣播注冊中心(真實環境用Registry)來遠程調用dubboprovider服務的實現,假設能成功調到,就算成功。(項目中applicationContext.xml會報錯,是由http://code.alibabatech.com/schema/dubbo/dubbo.xsd引起。說是阿里的相關服務換地方了,只是沒關系,能夠正常執行)


  


?????? 暴露服務和引用服務的核心配置例如以下。其他代碼比較簡單,這里不多介紹。直接下載源代碼(點擊打開鏈接)看就可以看懂:


  

?

轉載于:https://www.cnblogs.com/clnchanpin/p/6852709.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/395790.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/395790.shtml
英文地址,請注明出處:http://en.pswp.cn/news/395790.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Oracle 10.2.0.5升級至11.2.0.4

參照MOS 官方文檔Complete Checklist for Manual Upgrade to Oracle Database 11gR2 (11.2) (Doc ID 837570.1)一、升級前的準備1、復制utlu112i.sql腳本從11G數據庫復制$ORACLE_HOME/rdbms/admin/utlu112i.sql 腳本至10g 數據庫臨時目錄,準備執行如果不在10g數據庫…

脫殼_詳細_使用的方法_01

ZC: 如何確定被調試程序已經來到了 未加殼的程序中? ZC:  視頻中是使用判斷集中語言的特征 ZC:  我的方法:上面的方式 ESP平衡 1、第1課 (1)、單步跟蹤(原則:向下的跳轉>正常F8,向上的跳轉>F4跳過(或者用F2…

android 函數式編程_Android開發人員的函數式編程-第1部分

android 函數式編程by Anup Cowkur通過安納普考庫(Anup Cowkur) Android開發人員的函數式編程-第1部分 (Functional Programming for Android Developers — Part 1) Lately, I’ve been spending a lot of time learning Elixir, an awesome functional programming language…

java編程 內存_Java編程技術之淺析JVM內存

JVMJVM->Java Virtual Machine:Java虛擬機,是一種用于計算設備的規范,它是一個虛構出來的計算機,是通過在實際的計算機上仿真模擬各種計算機功能來實現的。基本認知:1.JVM是用于運行Java代碼的假象計算機,主要有一套字節碼指令…

bzoj1116: [POI2008]CLO

傳送門:http://www.lydsy.com/JudgeOnline/problem.php?id1116 題目大意:Byteotia城市有n個 towns m條雙向roads. 每條 road 連接 兩個不同的 towns ,沒有重復的road. 你要把其中一些road變成單向邊使得:每個town都有且只有一個入度 題解&am…

java排序算法大全_各種排序算法的分析及java實現

排序一直以來都是讓我很頭疼的事,以前上《數據結構》打醬油去了,整個學期下來才勉強能寫出個冒泡排序。由于要找工作了,也知道排序算法的重要性(據說是面試必問的知識點),所以又花了點時間重新研究了一下。排序大的分類可以分為兩…

Cocos2d-x 3.0 簡捷的物理引擎

Cocos2d-x 3.0 開發(九)使用Physicals取代Box2D和chipmunk http://www.cocos2d-x.org/docs/manual/framework/native/physics/physics-integration/zh -- 官網Demo 水墨魚的專欄 http://www.cocos2d-x.org/docs/catalog/zh --- 官方 搭“server” 須要哪…

google i/o_Google I / O 2017最有希望的突破

google i/oby Aravind Putrevu通過Aravind Putrevu Google I / O 2017最有希望的突破 (The most promising breakthroughs from Google I/O 2017) Google I/O is one of the biggest developer conferences. This year was particularly exciting. There were two keynotes: o…

java clex 中的 IloLPMatrix

最近看 cplex 在 java 的 callback,發現它給的 callback 例子中,都是用 IloLPMatrix 這個類放約束條件,在 IloLPMatrix 中, 每個約束條件存儲在 IloRange 中。 使用 IloLPMatrix 的好處是,這個類可以方便查看模型中的求…

6/12 Sprint2 看板和燃盡圖

轉載于:https://www.cnblogs.com/queenjuan/p/5578551.html

mailto 附帶附件_我和我的朋友如何將附帶項目發展為每月$ 17,000的業務

mailto 附帶附件In 2014, my friends and I set out to build the best possible web design tools. We built UI kits, Admin Dashboards, Templates, and Plugins. We’ve always tried to create products that are helpful in the development process, and that we oursel…

轉:PHP應用性能優化指南

程序員都喜歡最新的PHP 7,因為它使PHP成為執行最快的腳本語言之一(參考PHP 7 vs HHVM 比較)。但是保持最佳性能不僅需要快速執行代碼,更需要我們知道影響性能的問題點,以及這些問題的解決方案。本文涵蓋了保障PHP應用平…

java 運行異常處理_Java編程異常處理和I/O流

重點:  1.在編寫程序時,要正確地使用捕獲例外和聲明拋出異常的兩種例外處理的方法。2.遇到實際問題時,要根據需要正確使用各種輸入/輸出流,特別是對中文使用適當的字符輸入流。3.正…

反射練習

1.反射 一種計算機處理方式。是程序可以訪問、檢測和修改它本身狀態或行為的一種能力。 新建一個Person類: public class Person { private int age; private String name; public int getAge() { return age; } public void setAge(int age) { this.age age; } pu…

開源 物聯網接入_我們剛剛推出了開源產品。 那么接下來會發生什么呢?

開源 物聯網接入by Victor F. Santos由Victor F.Santos 我們剛剛推出了開源產品。 那么接下來會發生什么呢? (We just launched an open source product. So what happens next?) Last month me and the ninja god Pedro launched GitShowcase, a plug-and-play p…

Class? getClass()

getClass()方法屬于Object的一部分,它將產生對象的類,并且在打印該類時,可以看到該類類型的編碼字符串,前導"["表示這是一個后滿緊隨的類型的數組,而緊隨的"I"表示基本類型int, //: initialization/OptionalTrailingArgrments.java package object;import …

log4j使用說明

1.log4j代碼中修改輸出級別:如: protected final Logger logger LoggerFactory.getLogger(Test.class); 將其轉成實現類,修改輸出級別即可System.out.println(logger.isDebugEnabled()?"debug is true":"debug is false&quo…

java list集合增刪改_Java中集合類list的增刪改查

今天給大家帶來的是Java中list類的使用,java.util 包提供了list類來對線性數據操作List接口是Collection接口的子接口,List有一個重要的實現類--ArrayList類,List中的元素是有序排列的而且可重復,所以被稱為是序列List可以精確的控…

IIS6、IIS7和IIS8各版本的差別

一、寫在前面 目前市面上所用的IIS版本估計都是>6.0的.所以我們主要以下面三個版本進行講解 服務器版本IIS默認版本server20036.0server20087.0server20128.0二、IIS6的請求過程 由圖可知,所有的請求會被服務器中的http.sys組件監聽到,它會根據IIS中的 Metabase 查看基于該 …

Android Studio 插件的使用

1、GsonFormat https://github.com/zzz40500/GsonFormat 2、Android SelectorChapek http://blog.csdn.net/weifei554287925/article/details/41727541