天天看點

dubbo服務提供與消費

  項目中用到了Dubbo,臨時抱大腿,學習了dubbo的簡單實用方法。現在就來總結一下dubbo如何提供服務,如何消費服務,并做了一個簡單的demo作為參考。

  Dubbo是一個分布式服務架構,緻力于提供高性能和透明化的RPC遠端服務調用方案,以及SOA服務治理方案。簡單的說,dubbo就是個服務架構,如果沒有分布式的需求,其實是不需要用的,隻有在分布式的時候,才有dubbo這樣的分布式服務架構的需求,并且本質上是個服務調用的東東,說白了就是個遠端服務調用的分布式架構(告别Web Service模式中的WSdl,以服務者與消費者的方式在dubbo上注冊)

其核心部分包含:

  1. 遠端通訊: 提供對多種基于長連接配接的NIO架構抽象封裝,包括多種線程模型,序列化,以及“請求-響應”模式的資訊交換方式。

  2. 叢集容錯: 提供基于接口方法的透明遠端過程調用,包括多協定支援,以及軟負載均衡,失敗容錯,位址路由,動态配置等叢集支援。

  3. 自動發現: 基于注冊中心目錄服務,使服務消費方能動态的查找服務提供方,使位址透明,使服務提供方可以平滑增加或減少機器。

  摘自:http://www.cnblogs.com/Javame/p/3632473.html

  實作dubbo服務的接口

  dubbo服務提供者配置:classpath:dubbo-provider-example.xml

  由于是提供者作為一個web項目,是以web.xml檔案如下。

  dubbo服務消費者測試類

  dubbo服務消費者配置:dubbo-consumer-example.xml

  首先啟動dubbo生産者,然後運作消費者的測試類,可以看到控制台中有如下資訊輸出:

  1.如果一個工程中有dubbo消費者,也有dubbo生産者,則<dubbo:application name="hjz-dubbo" owner="hjzgg"/>配置隻有一個就可以了。

  2.測試環境一般采用dubbo直聯方式,生産環境一般将dubbo服務注冊到zookeeper。

  3.配置檔案中 dubbo:reference id="dubboServiceTest"  和 dubbo:service ref="dubboServiceTest", id和ref的對應的value要一緻。

  4.配置檔案中 dubbo:service ref="dubboServiceTest",ref對應的value是服務的名稱,例如@Service("dubboServiceTest")。

  5.如果抛出下面異常,

   dubbo服務提供者的配置檔案中加上下面紅色的代碼。

  注:測試demo工程是個maven工程,eclipse可以通過 Check out as Maven Project from SCM 來導入即可,URL:https://github.com/hjzgg/dubbo_demo.git