dubbo 教程

1.添加依赖jar

<dependency> 
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.8.4</version>
</dependency>

2.使用xml进行dubbo provider

<?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/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd        
    http://code.alibabatech.com/schema/dubbo        
    http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    <!--<dubbo:application name="account-interface2.0"/>-->
<dubbo:provider timeout="${dubbo.provider.timeout}" token="${dubbo.provider.token}" />
   <dubbo:registry protocol="${dubbo.registry.protocol}"
address="${dubbo.registry.address}" username="${dubbo.admin.username}" password="${dubbo.admin.password}"
group="${dubbo.registry.group}"  timeout="${dubbo.registry.timeout}"/>
    <dubbo:protocol name="${dubbo.protocol.name}"  port="${dubbo.protocol.port}" charset="${dubbo.protocol.charset}"
threadpool="${dubbo.protocol.threadpool}" threads="${dubbo.protocol.threads}" payload="${dubbo.protocol.payload}" />
<dubbo:service interface="com.customer.account.service.DepositService" ref="depositServiceImpl" />
</beans>
 

 3.配置consumer.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/beans
    http://www.springframework.org/schema/beans/spring-beans.xsd        
    http://code.alibabatech.com/schema/dubbo        
    http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
    <dubbo:application name="consumer-account-interface"/>
	<dubbo:consumer timeout="${dubbo.consumer.timeout}" check="${dubbo.consumer.check}" />
    <dubbo:registry protocol="${dubbo.registry.protocol}" address="${dubbo.registry.address}"  group="${dubbo.registry.group}"  timeout="${dubbo.registry.timeout}"/>

    <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
    <!-- 经销商银行账户信息,包括代扣账户 -->
    <!--<dubbo:reference id="dealerBankAccountService" interface="com.shenma.channel.service.module.DealerBankAccountService" timeout="60000"/>-->
    <!-- 经销商法人 -->
    <!--<dubbo:reference id="dealerLegalPersonService" interface="com.shenma.channel.service.module.DealerLegalPersonService" timeout="60000"/>-->
    <!--<dubbo:reference id="dealerService" interface="com.shenma.channel.service.module.DealerService" timeout="60000"/>-->
    <!--<dubbo:reference id="dealerExtendService" interface="com.shenma.channel.service.module.DealerExtendService" timeout="60000"/>-->

    <dubbo:reference id="smartDataSyncService" interface="com.smjr.scf.api.SmartDataSyncService" timeout="60000" version="1.0.0"/>
    <dubbo:reference id="iDlegalPersonRpcService" interface="com.shenma.chnl.basic.rpc.dealer.IDlegalPersonRpcService" timeout="60000"/>
    <dubbo:reference id="iDealerRpcService" interface="com.shenma.chnl.basic.rpc.dealer.IDealerRpcService" timeout="60000"/>
    <dubbo:reference id="iDealerBankAccountRpcService" interface="com.shenma.chnl.basic.rpc.dealer.IDealerBankAccountRpcService" timeout="60000"/>
    <dubbo:reference id="iBankRpcService" interface="com.shenma.chnl.basic.rpc.basic.IBankRpcService" timeout="60000"/>
    <dubbo:reference id="iBranchRpcService" interface="com.shenma.chnl.basic.rpc.basic.IBranchRpcService" timeout="60000"/>
    <dubbo:reference id="iStoreRpcService" interface="com.shenma.chnl.basic.rpc.dealer.IStoreRpcService" timeout="60000"/>
</beans>

 4.配置属性

dubbo.registry.address=172.16.10.86:2181
dubbo.registry.protocol=zookeeper
dubbo.registry.check=false
dubbo.registry.subscribe=false
dubbo.registry.timeout=10000
dubbo.registry.group=dubbo
dubbo.consumer.timeout=60000
dubbo.consumer.check=false

#provider
dubbo.application.owner=account
dubbo.application.logger=slf4j

dubbo.monitor.protocol=registry
dubbo.protocol.name=dubbo
dubbo.protocol.port=28108
dubbo.protocol.threadpool=fixed
dubbo.protocol.payload=104857600

dubbo.provider.timeout=60000
dubbo.provider.check=false
dubbo.provider.token=true
dubbo.protocol.threads=500
dubbo.protocol.charset=UTF-8
dubbo.service.loadbalance=roundrobin
dubbo.admin.username=
dubbo.admin.password=

5. protocol dubbo常用有如下协议

   (1)dubbo协议 采用单一长连接和NIO异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。
   (2)RMI采用JDK标准的java.rmi.*实现,采用阻塞式短连接和JDK标准序列化方式。
   (3)Hessian协议用于集成Hessian的服务,Hessian底层采用Http通讯,采用Servlet暴露服务,Dubbo缺省内嵌Jetty作为服务器实现。
6.dubbo provider 负责均衡策略。
  (1).roundrobin 轮询,按公约后的权重设置轮循比率,存在慢的提供者累积请求问题,比如:第二台机器很慢,但没挂,当请求调到第二台时就卡在那,久而久之,所有请求都卡在调到第二台上。

  (2 ) .leastActive 最少活跃调用数,相同活跃数的随机,活跃数指调用前后计数差。使慢的提供者收到更少请求,因为越慢的提供者的调用前后计数差会越大。

   ( 3 ) .consistentHash 一致性Hash,相同参数的请求总是发到同一提供者。当某一台提供者挂时,原本发往该提供者的请求,基于虚拟节点,平摊到其它提供者,不会引起剧烈变动。
7. dubbo consumer 关键配置

  (1). timeout consumer 超时时间

   (2). retries 当consumer超时时 重试次数

8.注意事项
  (1).注册中心要配置缓存文件位置,即file项要指定

  (2).dubbo consumer的retries次数建议设置为0,如果consumer系统已经做了幂等配置,也可以自行安排。

  (3).如果遇到no provider的错误,可以去dubbo admin上查找dubbo服务是否存在

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值