目录
1.Dubbo可进行容器配置 2.Dubbo的多协议支持 3.Dubbo的多注册中心支持 4.Dubbo的循环依赖问题 5.关于dubbo的负载均衡
1.Dubbo可进行容器配置
dubbo支持的容器
- Spring container
- Jetty Container
- Log4j Container 之前我们用基于Bootsrap利用ClassPathXmlApplicationContext实现provider-dubbo的启动,快速启动Dubbo现在我们测试一下用Dubbo提供的Main.main方法启动
对于用spring容器启动,由于其原码的规定我们需要把相关xml配置文件放在资源文件resources的META-INF.spring下。
源码规定
dubbo配置容器启动,测试结果
2.Dubbo的多协议支持
dubbo支持的协议
RMI/hessian/webservice/http/thirft/Dubbo(默认)
如图,我们可以去除单独的协议配置,在服务端每个service上进行配置,当然我们在客户端xml dubbo:reference也要进行相应的指定
这个反应到客户端其实就是一个协议头的关系而已,比如由原来的dubbo://ip:port转为hessian://ip:port,但是通过这个我们可以进行其他比较灵活的配置,比如搞两个接口做俩协议在做服务迁移时候很方便。
3.Dubbo的多注册中心支持
如果说我们像上面一样配置了多个注册中心,那么我们在进行服务发布时候也需要指定注册中心。
4.Dubbo的循环依赖问题
有时候我们A依赖了B模块提供的信息,B模块依赖的A模块提供的信息,那么总有一个要先于另一个模块启动啊,但是启动时候发现另一个模块没有就会报错停止。为了防止这种情况,我们可以在调用方的reference里设置启动检查provider里是否有该提供者为false,就可以安全启动了
5.关于dubbo的负载均衡
负载均衡实际上是多个相同的服务放在多个服务器上,我们客户端调用会得到相同的结果,但是这里我们为了区别对统一接口做了两个不同实现类,由于机器不够就放在一台机器上了,但是用不同端口提供服务。客户端配置方面我们不需要做修改。
结构
对于同样的接口的调用,我们循环测试一下会发现两个接口实现类是随即被调用的。
以上结果的原因是Dubbo的负载均衡算法默认是随机算法。查看dubbo源码中集群模块有发现负载均衡算法默认指定了随机算法,且可设置权重。