在线客服
扫描二维码
下载博学谷APP扫描二维码
关注博学谷微信公众号
众所周知,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服务的端口号来防止端口冲突。在实际生产环境中,多个服务提供者是分别部署在不同的机器上,所以不存在端口冲突问题。
以上就是Dubbo相关配置说明的全部内容,如果大家还想继续学习Dubbo更多的内容,可以在博学谷申请免费试学名额,体验相关的在线课程,相信一定能收获多多~
— 申请免费试学名额 —
在职想转行提升,担心学不会?根据个人情况规划学习路线,闯关式自适应学习模式保证学习效果
讲师一对一辅导,在线答疑解惑,指导就业!
相关推荐 更多
Docker开发教程学习资源
Docker开发教程学习资源,需要学习Docker概览、Docker版本与安装介绍、Docker核心技术之镜像、Docker核心技术之容器、Docker核心技术之容器与镜像、Docker核心技术之数据卷、Docker核心技术之仓库、Docker核心技术之Dockerfile、Docker核心技术之Docker-Compose。
4472
2019-11-11 19:14:44
2020年九大Java开发框架都有什么?
2020年九大Java开发框架,小编主要介绍Spring框架、Hibernate框架、Struts框架、Play框架、GoogleWebToolkit框架、Grails框架、Blade框架、JavaServerFaces框架、Vaadin框架九大框架,希望您可以多Java框架有更多的认识。
5269
2019-12-18 16:34:54
Spring Cloud Gateway工作原理是什么?
Spring Cloud Gateway工作原理是Gateway 接收客户端请求。客户端请求与路由信息进行匹配,匹配成功的才能够被发往相应的下游服务。请求经过 Filter 过滤器链,执行 pre 处理逻辑,如修改请求头信息等。请求被转发至下游服务并返回响应。响应经过 Filter 过滤器链,执行 post 处理逻辑。向客户端响应应答。
8783
2020-02-20 15:30:31
Java Web之Filter学习笔记
今天要学习的是关于Filter的内容,主要包括Filter的概念、快速入门、代码演示、过滤器细节,对Filter有学习需要的小伙伴可以在看完本文后,再把文章收藏起来以便于以后的复习,现在一起来看看Java Web之Filter的学习笔记吧~
4312
2020-05-07 11:07:11
Java编程入门教程和学习资源怎么找?
Java编程入门教程和学习资源怎么找?入门Java前先明确自己的学习目标,感兴趣入门学习了解还是想通过学习Java获得一份高薪的工作,然后结合自己的实际情况,目前是待业还是在职根据每天能拿出多少的时间来的学习,制定自己的学习的计划。
4412
2020-07-17 11:16:20