Dubbo實戰(二)多協議配置
阿新 • • 發佈:2019-01-22
本文將展示如何在Dubbo中使用多協議來暴露服務。
1、不同服務不同協議
例如:不同服務在效能上適用不同協議進行傳輸,比如大資料用短連線協議,小資料大併發用長連線協議。配置如下:
provider-multi-protocol.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- 提供方應用資訊,用於計算依賴關係 -->
<dubbo:application name="dubbo-provider-app" />
<!-- 使用zookeeper註冊中心暴露服務地址 -->
<dubbo:registry id="zk_registry" address="zookeeper://127.0.0.1:2181" />
<!-- 多協議配置 -->
<dubbo:protocol name="dubbo" port="20880" />
<dubbo:protocol name="rmi" port="20980" />
<!-- 使用dubbo協議暴露服務 -->
<dubbo:service interface="com.ricky.dubbo.api.DemoService" ref="demoService" protocol="dubbo" />
<!-- 使用rmi協議暴露服務 -->
<dubbo:service interface="com.ricky.dubbo.api.HelloService" ref="helloService" protocol="rmi" />
<bean id="demoService" class="com.ricky.dubbo.provider.impl.DemoServiceImpl"/>
<bean id="helloService" class="com.ricky.dubbo.provider.impl.HelloServiceImpl"/>
</beans>
2、多協議暴露服務
例如,需要與http客戶端互操作,配置如下:
provider-multi-protocol.xml
<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="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/beanshttp://www.springframework.org/schema/beans/spring-beans.xsdhttp://code.alibabatech.com/schema/dubbohttp://code.alibabatech.com/schema/dubbo/dubbo.xsd">
<!-- 提供方應用資訊,用於計算依賴關係 -->
<dubbo:application name="dubbo-provider-app" />
<!-- 使用zookeeper註冊中心暴露服務地址 -->
<dubbo:registry id="zk_registry" address="zookeeper://127.0.0.1:2181" />
<!-- 多協議配置 -->
<dubbo:protocol name="dubbo" port="20880" />
<dubbo:protocol name="hessian" port="20980" />
<!-- 使用dubbo協議暴露服務 -->
<dubbo:service interface="com.ricky.dubbo.api.DemoService" ref="demoService" protocol="dubbo" />
<!-- 使用rmi協議暴露服務 -->
<dubbo:service interface="com.ricky.dubbo.api.HelloService" ref="helloService" protocol="dubbo,hessian" />
<bean id="demoService" class="com.ricky.dubbo.provider.impl.DemoServiceImpl"/>
<bean id="helloService" class="com.ricky.dubbo.provider.impl.HelloServiceImpl"/>
</beans>
其中,HelloService同時使用dubbo,hessian協議對外提供服務。