Dubbo配置

Posted 暮尘时雨

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Dubbo配置相关的知识,希望对你有一定的参考价值。

一、XML的配置

1、配置提供者

<dubbo:application name="gmall-user"></dubbo:application>
<!--指定注册中心的地址  -->
<dubbo:registry address="zookeeper://118.24.44.169:2181" />
<!--使用dubbo协议,将服务暴露在20880端口  -->
<dubbo:protocol name="dubbo" port="20880" />
<!-- 指定需要暴露的服务 -->
<dubbo:service interface="com.atguigu.gmall.service.UserService" ref="userServiceImpl" />

2、配置消费者信息

<dubbo:application name="gmall-order-web"></dubbo:application>
<!-- 指定注册中心地址 -->
<dubbo:registry address="zookeeper://118.24.44.169:2181" />
<!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
<dubbo:reference id="userService" interface="com.atguigu.gmall.service.UserService"></dubbo:reference>

二、注解

1、服务提供方

  <dubbo:application name="gmall-user"></dubbo:application>
  <dubbo:registry address="zookeeper://118.24.44.169:2181" />
  <dubbo:protocol name="dubbo" port="20880" />
  <dubbo:annotation package="com.atguigu.gmall.user.impl"/>

  @Service //使用dubbo提供的service注解,注册暴露服务
  public class UserServiceImpl implements UserService {
        @Autowired
    UserAddressMapper userAddressMapper;

2、服务消费方

 <dubbo:application name="gmall-order-web"></dubbo:application>
 <dubbo:registry address="zookeeper://118.24.44.169:2181" />
 <dubbo:annotation package="com.atguigu.gmall.order.controller"/>

  @Controller
  public class OrderController {
  @Reference  //使用dubbo提供的reference注解引用远程服务
  UserService userService;

三、重试次数

失败自动切换,当出现失败,重试其它服务器,但重试会带来更长延迟。可通过 retries="2" 来设置重试次数(不含第一次)

重试次数配置如下:
<dubbo:service retries="2" />
或
<dubbo:reference retries="2" />
或
<dubbo:reference>
    <dubbo:method name="findFoo" retries="2" />
</dubbo:reference>

四、超时时间

由于网络或服务端不可靠,会导致调用出现一种不确定的中间状态(超时)。为了避免超时导致客户端资源(线程)挂起耗尽,必须设置超时时间

1、Dubbo消费端 

    全局超时配置
    <dubbo:consumer timeout="5000" />

    指定接口以及特定方法超时配置
    <dubbo:reference interface="com.foo.BarService" timeout="2000">
        <dubbo:method name="sayHello" timeout="3000" />
    </dubbo:reference>

2、Dubbo服务端

  全局超时配置
  <dubbo:provider timeout="5000" />

  指定接口以及特定方法超时配置
  <dubbo:provider interface="com.foo.BarService" timeout="2000">
      <dubbo:method name="sayHello" timeout="3000" />
  </dubbo:provider>

五、版本号

      当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用。
      可以按照以下的步骤进行版本迁移:
      在低压力时间段,先升级一半提供者为新版本
      再将所有消费者升级为新版本
      然后将剩下的一半提供者升级为新版本

      老版本服务提供者配置:
      <dubbo:service interface="com.foo.BarService" version="1.0.0" />

      新版本服务提供者配置:
      <dubbo:service interface="com.foo.BarService" version="2.0.0" />

      老版本服务消费者配置:
      <dubbo:reference id="barService" interface="com.foo.BarService" version="1.0.0" />

      新版本服务消费者配置:
      <dubbo:reference id="barService" interface="com.foo.BarService" version="2.0.0" />

六、高可用

    1、zookeeper宕机与dubbo直连

          注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯

    2、集群下dubbo负载均衡配置

         负载均衡策略
              a:Random LoadBalance(随机)
              b:RoundRobin LoadBalance(轮询)
              c:LeastActive LoadBalance(最少活跃数)
              d:ConsistentHash LoadBalance(一致性hash)

    3、服务熔断与降级处理

        当服务器压力剧增的情况下,根据实际业务情况及流量,对一些服务和页面有策略的不处理或换种简单的方式处理,从而释放服务器资源以保证核心交易正常运作或高效运作

      a:mock=force:return+null 表示消费方对该服务的方法调用都直接返回 null 值,不发起远程调用。用来屏蔽不重要服务不可用时对调用方的影响
      b:mock=fail:return+null 表示消费方对该服务的方法调用在失败后,再返回 null 值,不抛异常。用来容忍不重要服务不稳定时对调用方的影响

    4、集群容错

            Failover Cluster
            失败自动切换,当出现失败,重试其它服务器。通常用于读操作,但重试会带来更长延迟。可通过 retries="2" 来设置重试次数(不含第一次)。

            重试次数配置如下:
            <dubbo:service retries="2" />
            或
            <dubbo:reference retries="2" />
            或
            <dubbo:reference>
                  <dubbo:method name="findFoo" retries="2" />
            </dubbo:reference>

            Failfast Cluster
            快速失败,只发起一次调用,失败立即报错。通常用于非幂等性的写操作,比如新增记录。

            Failsafe Cluster
            失败安全,出现异常时,直接忽略。通常用于写入审计日志等操作。

            Failback Cluster
            失败自动恢复,后台记录失败请求,定时重发。通常用于消息通知操作。

            Forking Cluster
            并行调用多个服务器,只要一个成功即返回。通常用于实时性要求较高的读操作,但需要浪费更多服务资源。可通过 forks="2" 来设置最大并行数。

            Broadcast Cluster
            广播调用所有提供者,逐个调用,任意一台报错则报错 [2]。通常用于通知所有提供者更新缓存或日志等本地资源信息。

            集群模式配置
            按照以下示例在服务提供方和消费方配置集群模式
                <dubbo:service cluster="failsafe" />
                或
                <dubbo:reference cluster="failsafe" />

以上是关于Dubbo配置的主要内容,如果未能解决你的问题,请参考以下文章

VSCode自定义代码片段11——vue路由的配置

VSCode自定义代码片段11——vue路由的配置

稳定性 耗时 监控原因分析-- dubbo rpc 框架 的线程池,io 连接模型. 客户端,服务端

Dubbo -- Dubbo快速入门代码编写

VS Code配置markdown代码片段

VS Code配置markdown代码片段