Java就业培训教程之Dubbo相关配置

Java就业培训教程之Dubbo相关配置

深圳达内教育      2022-04-10 02:49:01     7

Java就业培训教程之Dubbo相关配置,Dubbo是一个分布式服务框架,它运用了全Spring配置方式,今天我们就一起来看看Dubbo相关配置说明,内容具体包括包扫描、协议、启

课程价格 请咨询

上课时段: 授课校区:

详细介绍

Dubbo是一个分布式服务框架,它运用了全Spring配置方式,今天我们就一起来看看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支持的协议有:dubbo、rmi、hessian、http、webservice、rest、redis等。推荐使用的是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值为true。Dubbo缺省会在启动时检查依赖的服务是否可用,不可用时会抛出异常,阻止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服务的端口号来防止端口冲突。在实际生产环境中,多个服务提供者是分别部署在不同的机器上,所以不存在端口冲突问题。

Java相关内容教程

Dubbo视频教程:http://www.bjpowernode.com/javavideo/129.html

以上就是深圳达内教育java培训机构的小编针对“Java就业培训教程之Dubbo相关配置”的内容进行的回答,希望对大家有所帮助,如有疑问,请在线咨询,有专业老师随时为你服务。

Java培训教程

培训啦提醒您:交易时请核实对方资质,对于过大宣传或承诺需谨慎!任何要求预付定金、汇款等方式均存在风险,谨防上当。