• 在线客服

  • 扫描二维码
    下载博学谷APP

  • 扫描二维码
    关注博学谷微信公众号

  • 意见反馈

原创 Dubbo相关配置说明

发布时间:2020-05-21 10:17:55 浏览 4098 来源:博学谷 作者:照照

    众所周知,Dubbo 是一个分布式服务框架,它运用了全Spring配置方式,今天我们就一起来看看Dubbo相关配置说明,内容具体包括包扫描、协议、启动时检查以及负载均衡。有兴趣学习的小伙伴就一起来看看吧~

     

    Dubbo

     

    1、包扫描

     

    ```xml

    <dubbo:annotation package="com.itheima.service" />

    ```

     

    服务提供者和服务消费者都需要配置,表示包扫描,作用是扫描指定包(包括子包)下的类。如果不使用包扫描,也可以通过如下配置的方式来发布服务:

     

    ```xml

    <bean id="helloService" class="com.itheima.service.impl.HelloServiceImpl" />

    <dubbo:service interface="com.itheima.api.HelloService" ref="helloService" />

    ```

     

    作为服务消费者,可以通过如下配置来引用服务:

     

    ```xml

    <!-- 生成远程服务代理,可以和本地bean一样使用helloService -->

    <dubbo:reference id="helloService" interface="com.itheima.api.HelloService" />

    ```

     

    上面这种方式发布和引用服务,一个配置项(<dubbo:service><dubbo:reference>)只能发布或者引用一个服务,如果有多个服务,这种方式就比较繁琐了。推荐使用包扫描方式。

     

    2、协议

     

    ```xml

    <dubbo:protocol name="dubbo" port="20880"/>

    ```

     

    一般在服务提供者一方配置,可以指定使用的协议名称和端口号。其中Dubbo支持的协议有:dubbormihessianhttpwebservicerestredis等。推荐使用的是Dubbo协议。

     

    Dubbo 协议采用单一长连接和 NIO 异步通讯,适合于小数据量大并发的服务调用,以及服务消费者机器数远大于服务提供者机器数的情况。不适合传送大数据量的服务,比如传文件,传视频等,除非请求量很低。也可以在同一个工程中配置多个协议,不同服务可以使用不同的协议,例如:

     

    ```xml

    <!-- 多协议配置 -->

    <dubbo:protocol name="dubbo" port="20880" />

    <dubbo:protocol name="rmi" port="1099" />

    <!-- 使用dubbo协议暴露服务 -->

    <dubbo:service interface="com.itheima.api.HelloService" ref="helloService" protocol="dubbo" />

    <!-- 使用rmi协议暴露服务 -->

    <dubbo:service interface="com.itheima.api.DemoService" ref="demoService" protocol="rmi" />

    ```

     

    3、启动时检查

     

    ```xml

    <dubbo:consumer check="false"/>

    ```

     

    上面这个配置需要配置在服务消费者一方,如果不配置默认check值为trueDubbo 缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止 Spring 初始化完成,以便上线时,能及早发现问题。可以通过将check值改为false来关闭检查。建议在开发阶段将check值设置为false,在生产环境下改为true

     

    4、负载均衡

     

    负载均衡:其实就是将请求分摊到多个操作单元上进行执行,从而共同完成工作任务。在集群负载均衡时,Dubbo 提供了多种均衡策略(包括随机、轮询、最少活跃调用数、一致性Hash),缺省为random随机调用。配置负载均衡策略,既可以在服务提供者一方配置,也可以在服务消费者一方配置,如下:

     

    ```java

        @Controller

        @RequestMapping("/demo")

        public class HelloController {

            //在服务消费者一方配置负载均衡策略

            @Reference(check = false,loadbalance = "random")

            private HelloService helloService;

     

            @RequestMapping("/hello")

            @ResponseBody

            public String getName(String name){

                //远程调用

                String result = helloService.sayHello(name);

                System.out.println(result);

                return result;

            }

        }

    ```

     

    ```java

    //在服务提供者一方配置负载均衡

    @Service(loadbalance = "random")

    public class HelloServiceImpl implements HelloService {

        public String sayHello(String name) {

            return "hello " + name;

        }

    }

    ```

     

    可以通过启动多个服务提供者来观察Dubbo负载均衡效果。

     

    注意:因为我们是在一台机器上启动多个服务提供者,所以需要修改tomcat的端口号和Dubbo服务的端口号来防止端口冲突。在实际生产环境中,多个服务提供者是分别部署在不同的机器上,所以不存在端口冲突问题。

     

    以上就是Dubbo相关配置说明的全部内容,如果大家还想继续学习Dubbo更多的内容,可以在博学谷申请免费试学名额,体验相关的在线课程,相信一定能收获多多~

    申请免费试学名额    

在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!

上一篇: Java核心技术汇总 Java开发必备技术 下一篇: Java学习笔记之方法

相关推荐 更多

热门文章

  • 前端是什么
  • 前端开发的工作职责
  • 前端开发需要会什么?先掌握这三大核心关键技术
  • 前端开发的工作方向有哪些?
  • 简历加分-4步写出HR想要的简历
  • 程序员如何突击面试?两大招带你拿下面试官
  • 程序员面试技巧
  • 架构师的厉害之处竟然是这……
  • 架构师书籍推荐
  • 懂了这些,才能成为架构师
  • 查看更多

扫描二维码,了解更多信息

博学谷二维码