熟人Dubbo 系列1-Dubbo什么
生活随笔
收集整理的這篇文章主要介紹了
熟人Dubbo 系列1-Dubbo什么
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
Dubbo阿里巴巴內(nèi)部SOA治理方案和服務(wù)的核心框架。每天2000+ 個服務(wù)提供3,000,000,000+ 次訪問量支持,并被廣泛應(yīng)用于阿里巴巴集團的各成員網(wǎng)站。Dubbo自2011年開源后,已被很多非阿里系公司使用。
Dubbo[]是一個分布式服務(wù)框架,致力于提供高性能和透明化的RPC遠程服務(wù)調(diào)用方案,以及SOA服務(wù)治理方案。
其核心部分包括:
- 遠程通訊: 提供對多種基于長連接的NIO框架抽象封裝,包含多種線程模型。序列化。以及“請求-響應(yīng)”模式的信息交換方式。
- 集群容錯: 提供基于接口方法的透明遠程過程調(diào)用,包含多協(xié)議支持。以及軟負載均衡,失敗容錯,地址路由,動態(tài)配置等集群支持。
- 自己主動發(fā)現(xiàn): 基于注冊中心文件夾服務(wù),使服務(wù)消費方能動態(tài)的查找服務(wù)提供方,使地址透明。使服務(wù)提供方能夠平滑添加或降低機器。
Dubbo能做什么?
- 透明化的遠程方法調(diào)用。就像調(diào)用本地方法一樣調(diào)用遠程方法,僅僅需簡單配置。沒有不論什么API侵入。
- 軟負載均衡及容錯機制,可在內(nèi)網(wǎng)替代F5等硬件負載均衡器,降低成本,降低單點。
- 服務(wù)自己主動注冊與發(fā)現(xiàn),不再須要寫死服務(wù)提供方地址,注冊中心基于接口名查詢服務(wù)提供者的IP地址,而且可以平滑加入或刪除服務(wù)提供者。
高速啟動
?
| Dubbo採用全Spring配置方式。透明化接入應(yīng)用,相應(yīng)用沒有不論什么API侵入,僅僅需用Spring載入Dubbo的配置就可以,Dubbo基于Spring的Schema擴展進行載入。 |
| 假設(shè)不想使用Spring配置。而希望通過API的方式進行調(diào)用(不推薦),請參見:API配置 (+) |
服務(wù)提供者
?
| 完整安裝步驟,請參見:演示樣例提供者安裝 (+) |
定義服務(wù)接口: (該接口需單獨打包,在服務(wù)提供方和消費方共享)
DemoService.java package com.alibaba.dubbo.demo; public interface DemoService { ????String sayHello(String name); } |
在服務(wù)提供方實現(xiàn)接口:(對服務(wù)消費方隱藏實現(xiàn))
DemoServiceImpl.java package com.alibaba.dubbo.demo.provider; import com.alibaba.dubbo.demo.DemoService; public class DemoServiceImpl implementsDemoService { ????publicString sayHello(String name) { ????????return"Hello " + name; ????} } |
用Spring配置聲明暴露服務(wù):
provider.xml <?xmlversion="1.0"encoding="UTF-8"?
<beansxmlns="http://www.springframework.org/schema/beans" ????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ????xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" ????xsi:schemaLocation="http://www.springframework.org/schema/beans??????? http://www.springframework.org/schema/beans/spring-beans.xsd??????? http://code.alibabatech.com/schema/dubbo??????? http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> ????<!-- 提供方應(yīng)用信息。用于計算依賴關(guān)系 --> ????<dubbo:applicationname="hello-world-app"?/> ????<!-- 使用multicast廣播注冊中心暴露服務(wù)地址 --> ????<dubbo:registryaddress="multicast://224.5.6.7:1234"/> ????<!-- 用dubbo協(xié)議在20880port暴露服務(wù) --> ????<dubbo:protocolname="dubbo"port="20880"/> ????<!-- 聲明須要暴露的服務(wù)接口 --> ????<dubbo:serviceinterface="com.alibaba.dubbo.demo.DemoService"ref="demoService"/> ????<!-- 和本地bean一樣實現(xiàn)服務(wù) --> ????<beanid="demoService"class="com.alibaba.dubbo.demo.provider.DemoServiceImpl"/> </beans> |
載入Spring配置:
Provider.java import org.springframework.context.support.ClassPathXmlApplicationContext; public class Provider { ????publicstatic void main(String[] args) throws Exception { ????????ClassPathXmlApplicationContext context =new ClassPathXmlApplicationContext(newString[] {"http://10.20.160.198/wiki/display/dubbo/provider.xml"}); ????????context.start(); ????????System.in.read();// 按隨意鍵退出 ????} } |
服務(wù)消費者
?
| 完整安裝步驟。請參見:演示樣例消費者安裝 (+) |
通過Spring配置引用遠程服務(wù):
consumer.xml <?xmlversion="1.0"encoding="UTF-8"?> <beansxmlns="http://www.springframework.org/schema/beans" ????xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ????xmlns:dubbo="http://code.alibabatech.com/schema/dubbo" ????xsi:schemaLocation="http://www.springframework.org/schema/beans??????? http://www.springframework.org/schema/beans/spring-beans.xsd??????? http://code.alibabatech.com/schema/dubbo??????? http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> ????<!-- 消費方應(yīng)用名。用于計算依賴關(guān)系,不是匹配條件。不要與提供方一樣 --> ????<dubbo:applicationname="consumer-of-helloworld-app"?/> ????<!-- 使用multicast廣播注冊中心暴露發(fā)現(xiàn)服務(wù)地址 --> ????<dubbo:registryaddress="multicast://224.5.6.7:1234"/> ????<!-- 生成遠程服務(wù)代理。能夠和本地bean一樣使用demoService --> ????<dubbo:referenceid="demoService"interface="com.alibaba.dubbo.demo.DemoService"/> </beans> |
載入Spring配置,并調(diào)用遠程服務(wù):(也能夠使用IoC注入)
Consumer.java import org.springframework.context.support.ClassPathXmlApplicationContext; import com.alibaba.dubbo.demo.DemoService; public class Consumer { ????publicstatic void main(String[] args) throws Exception { ????????ClassPathXmlApplicationContext context =new ClassPathXmlApplicationContext(newString[] {"http://10.20.160.198/wiki/display/dubbo/consumer.xml"}); ????????context.start(); ????????DemoService demoService = (DemoService)context.getBean("demoService");// 獲取遠程服務(wù)代理 ????????String hello = demoService.sayHello("world");// 運行遠程方法 ????????System.out.println( hello );// 顯示調(diào)用結(jié)果 ????} } |
版權(quán)聲明:本文博客原創(chuàng)文章,博客,未經(jīng)同意,不得轉(zhuǎn)載。
轉(zhuǎn)載于:https://www.cnblogs.com/blfshiye/p/4711727.html
總結(jié)
以上是生活随笔為你收集整理的熟人Dubbo 系列1-Dubbo什么的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 魅族5多少钱啊?
- 下一篇: “色衰方事人”下一句是什么