dubbo实际项目应用

dubbo实际应用

上一期,我们虽然搭建了dubbo项目,但是并没有利用其它的注册中心,我们直接使用的 N/A 本地地址.
但是实际上我们需要使用的是一个可以为我们提供一个消费者与生产者之间,管理这些服务并分配服务的一个中间件.因此我们引入了zookeeper

一丶配置注册中心

  1. 添加依赖
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.3.3</version>
        </dependency>
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>

2.修改配置文件

<dubbo:registry address="zookeeper://127.0.0.1:2181"/>

常用配置

  • 超时时间
  • 异步调用
  • 多协议支持
  • 多注册中心支持
  • 启动检查
  • 版本兼容
  • 服务只订阅、服务只注册
  • 集群容错
  • 负载均衡策略

超时时间-配置

客户端超时:
针对当前服务:  <dubbo:provider timeout="1000"/>

针对当前接口:<dubbo:service interface="com.lerning.dubbo.user.api.service.UserService" class="com.lerning.dubbo.user.service.UserServiceImpl" timeout="1000"/>

服务端超时:
针对当前服务:  <dubbo:consumertimeout="1000"/>

针对当前接口: <dubbo:reference interface="com.lerning.dubbo.user.api.service.UserService" id="userService" timeout="1000"/>

版本兼容-配置

版本不兼容的接口那么会访问不到,只有版本兼容,才能正确的访问对应的接口

配置生产者API版本号
<dubbo:service interface="com.dubbo.sms.api.SmsService" class="com.dubbo.sms.service.SmsServiceImpl" version="1"/>

消费者指定消费版本号
<dubbo:reference  id="smsService" interface="com.dubbo.sms.api.SmsService"  check="false" version="2"/>

消费端服务启动检查

配置:<dubbo:refrence  check=true>

注意:服务启动的时候检查依赖的服务是否启动,服务循环依赖的时候需要设置成false

只订阅、只注册

当我们的服务只是单一的作为生产者/消费者时,我们可以利用这个配置实现我们的目的

服务只订阅不注册

<dubbo:registry client="zkclient" address="zookeeper://39.98.180.29:2181" register="false" />

服务只注册不订阅

<dubbo:registry  address="zookeeper://39.98.180.29:2181" client="zkclient" subscribe="false"/>

集群容错机制

针对自己的项目,选择合适的集群容错机制
  • failover cluster(失败重试)
    说明:请求失败后会切换服务地址调用其他服务,默认3次,可通过retry设置。
  • failfast cluster(快速失败)说明:只会发送一次请求
    场景:一般用于非幂等性请求(比如转账、添加、修改数据建议使用)
  • failsafe cluster(失败安全)
    说明:调用异常后直接忽略
    场景:比如日志记录成功与否不影响程序运行
  • failback cluster(失败恢复)
    说明:请求失败后后台记录请求,定时重发
    场景:类似消息重发机制的场景
  • forking cluster(分叉调用)
    说明:并行调用多个服务,有一个请求返回则返回
    场景:类似于抢答机制的场景,谁快谁获得权力
  • broadcast cluster(广播)
    说明:广播调用所有服务,有一个失败则返回失败。
    场景:类似数据同步,只要有一个未同步成功则失败。

负载均衡策略

  • random:随机调用;
  • roundrobin: 轮询调用;
  • leastActive LoadBalance:最少活跃调用数,响应时间断服务优先调用。
  • Consistent LoadBalance:一致性哈希 ,根据服务地址

异步调用设置

消费端

针对当前服务:

<dubbo:consumer async="true"/>

针对当前接口:

<dubbo:reference interface="com.lerning.dubbo.user.api.service.UserService" id="userService"  async="ture"/>

多协议支持

  • 服务端配置:

针对当前服务:

<dubbo:protocol name ="hessian" port="8090" server="jetty"/>

针对当前接口

:<dubbo:service interface="com.lerning.dubbo.user.api.service.UserService" class="com.lerning.dubbo.user.service.UserServiceImpl" protocol="hessian" />
  • 客户端配置:

针对当前服务:

<dubbo:protocol  name ="hessian" />

针对当前接口:

<dubbo:reference  protocol="hessian"  interface="com.lerning.dubbo.user.api.service.UserService" id="userService"  async="ture"/>

多注册中心

  • 生产端:
<dubbo:registry  id="zk1" address="zookeeper://127.0.0.1:2181" />
<dubbo:registry  id="zk2" address="zookeeper://localhost:2181" />
  • 消费端:
<dubbo:reference   interface="com.lerning.dubbo.user.api.service.UserService" id="userService" client="zk1"/>

配置优先级

第一个原则:粒度越小的优先级越高

方法级配置>接口配置> 全局配置
生产者配置方法的延时时间
消费者也配置方法的延时时间

第二个原则:客户是上帝

当生产者和消费者都配置了相同级别的属性,那么以消费者的属性为准。在这里插入图片描述

dubbo管理控制台

  1. 下载dubbo-admin源码
    https://github.com/apache/incubator-dubbo/tree/dubbo-2.6.0

  2. 修改源码 dubbo.properties配置

  3. 使用maven 打包dubbo-admin源码

  4. 把打包后的war部署到tomcat

  5. 访问 ip:8080 (用户名密码在dubbo.properties配置)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Dubbo是一个分布式服务框架,可以帮助我们快速构建高性能、可扩展的分布式应用。下面是一个简单的Dubbo项目搭建的步骤: 1. 创建Maven项目:首先,在你的IDE中创建一个新的Maven项目。 2. 添加Dubbo依赖:在项目的pom.xml文件中添加Dubbo的依赖。示例代码如下: ```xml <dependencies> <dependency> <groupId>org.apache.dubbo</groupId> <artifactId>dubbo-spring-boot-starter</artifactId> <version>2.7.12</version> </dependency> </dependencies> ``` 3. 配置Dubbo服务提供者:创建一个Java类作为Dubbo服务提供者,并在类上添加Dubbo的注解。示例代码如下: ```java import org.apache.dubbo.config.annotation.DubboService; @DubboService public class DemoServiceImpl implements DemoService { // 实现接口方法 } ``` 4. 配置Dubbo服务消费者:创建一个Java类作为Dubbo服务消费者,并在类上添加Dubbo的注解。示例代码如下: ```java import org.apache.dubbo.config.annotation.DubboReference; public class DemoConsumer { @DubboReference private DemoService demoService; // 调用远程服务方法 } ``` 5. 配置Dubbo注册中心:在项目的配置文件中配置Dubbo的注册中心,比如Zookeeper。示例配置如下: ```properties # dubbo.registry.address指定注册中心地址 dubbo.registry.address=zookeeper://127.0.0.1:2181 ``` 6. 运行项目:启动Dubbo服务提供者和消费者,通过Dubbo的注册中心进行服务的注册和发现。 以上是一个简单的Dubbo项目搭建的步骤,具体可以根据你的实际需求进行相应的配置和调整。希望对你有所帮助!如有更多问题,请继续提问。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值