其他 Demo

服务提供者和服务消费者在同一个应用中

把application信息放在总dubbo配置文件中,并引用provider和consumer的配置文件

dubbo-demo.xml
<dubbo:application name="dubbo_demo" owner="kelly.li" organization="tcdev" />
<import resource="dubbo-demo-provider.xml" />
<import resource="dubbo-demo-consumer.xml" />

provider中不配置application信息

dubbo-demo-provider.xml
<context:property-placeholder location="classpath:dubbo_provider.properties" ignore-unresolvable="true" />
<dubbo:registry protocol ="zookeeper" address="各环境zk地址" group="/demo/group/default" />
<dubbo:protocol name="dubbo" port="20880"  />
<dubbo:provider>
    <dubbo:parameter key="qloglevel" value="10" />
    <dubbo:parameter key="server" value="netty4" />
    <!--因为考虑client不会同时升级,兼容netty3,不然会出异常-->
    <dubbo:parameter key="client" value="netty" />
</dubbo:provider>
<dubbo:service interface="qunar.tc.dubbo.demo.api.HelloService" ref="helloService" version="1.0" timeout="3000"/>
<bean id="helloService" ></bean>

consumer中不配置application信息

dubbo-demo-consumer.xml
<context:property-placeholder location="classpath:dubbo_consumer.properties" ignore-unresolvable="true" />
<dubbo:registry protocol="zookeeper" address="各环境zk地址" group="/demo/group/default" />
<dubbo:consumer>
	<dubbo:parameter key="qloglevel" value="10" />
	<dubbo:parameter key="client" value="netty4" />
</dubbo:consumer>
<dubbo:reference id="helloService" interface="qunar.tc.dubbo.demo.api.HelloService" version="1.0" check="false" />
<bean id="helloAction" class="qunar.tc.demo.consumer.HelloAction" ></ bean>

Dubbo直连

在开发及测试环境下,经常需要绕过注册中心,只测试指定服务提供者,这时候可能需要点对点直连,点对点直联方式,将以服务接口为单位,忽略注册中心的提供者列表
在<dubbo:reference>中配置url指向提供者,多个地址用分号隔开

dubbo-demo-consumer.xml
<context:property-placeholder location="classpath:dubbo.properties" ignore-unresolvable="true" />
<dubbo:reference id="helloService" interface="qunar.tc.dubbo.demo.api.HelloService" version="1.0" check="false" 
url="dubbo://服务ip地址:服务port" />
<bean id="helloAction" class="qunar.tc.demo.consumer.HelloAction"></bean>

服务分组 :一个服务接口多种实现

delay Q中有这样一个应用场景,delay server和broker server 都实现BrokerMessageService接收消息。delay Q需要提供一个BrokerMessageService从client端接收消息,然后引用broker server的同一接口发送消息。服务分组做法采用不同的zookeeper注册中心。配置如下:

<dubbo:application name="qmq-delay"  ></dubbo:application>
<dubbo:registry id="broker" address="各环境zk地址" protocol="zookeeper" group="/qmq/broker/default" />
<dubbo:registry id="delay" address="各环境zk地址" protocol="zookeeper" group="/qmq/delay/default" />
<dubbo:protocol name="dubbo" port="20880"/>
<!-- delay server  接收消息服务 -->
<dubbo:service id="delayMessageService" interface="qunar.tc.qmq.service.BrokerMessageService" ref="scheduleMessageService" 
registry="delay" version="1.0"  cluster="failfast" />
 <!--broker server 接收消息服务 -->
<dubbo:reference id="messageService" interface="qunar.tc.qmq.service.BrokerMessageService" 
registry="broker" version="1.0" scope="remote"   />
每个服务默认都会在本地暴露;在引用服务的时候,默认优先引用本地服务;如果希望引用远程服务可以使用一下配置(@scope="remote")强制引用远程服务
@cluster 容错

failover (缺省)
失败自动切换,当出现失败,重试其它服务器。
通常用于读操作,但重试会带来更长延迟。
可通过retries="2"来设置重试次数(不含第一次)。
failfast
快速失败,只发起一次调用,失败立即报错。
通常用于非幂等性的写操作,比如新增记录。
failsafe
失败安全,出现异常时,直接忽略。
通常用于写入审计日志等操作。
failback
失败自动恢复,后台记录失败请求,定时重发。
通常用于消息通知操作。
forking
并行调用多个服务器,只要一个成功即返回。
通常用于实时性要求较高的读操作,但需要浪费更多服务资源。
可通过forks="2"来设置最大并行数。
broadcast (2.1.0开始支持)
广播调用所有提供者,逐个调用,时间较长。
通常用于通知所有提供者更新缓存或日志等本地资源信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值