dubbo环境搭建
1.安装zookeeper
我这边建的是springboot工程
用它当父模块
添加依赖
<dependency>
<groupId>com.alibaba.boot</groupId>
<artifactId>dubbo-spring-boot-starter</artifactId>
<version>0.2.0</version>
</dependency>
创建maven工程,common模块
创建一个maven工程,服务提供者
dubbo_provider
dubbo_provider依赖common
<dependency>
<groupId>com.Zh</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
创建配置文件
application.properties
dubbo.application.name=service-provide
dubbo.registry.address=192.168.200.134:2181
#集群
#dubbo.registry.address=zookeeper://192.168.200.130:2191?backup=192.168.200.130:2192,192.168.200.130:2193
#注册中心
dubbo.registry.protocol=zookeeper
#协议
dubbo.protocol.name=dubbo
#协议端口号
dubbo.protocol.port=20881
创建启动类
创建dubbo_consumer子模块:消费者模块(调用生产者模块)
依赖
<dependency>
<groupId>com.Zh</groupId>
<artifactId>common</artifactId>
<version>0.0.1-SNAPSHOT</version>
</dependency>
总结:两个注解,两个配置,启动一个注解
服务提供者:com.alibaba.dubbo.config.annotation.Service
注册中心的Ip 地址
服务消费者:com.alibaba.dubbo.config.annotation.Reference
注册中心的Ip 地址
启动类:com.alibaba.dubbo.config.spring.context.annotation.EnableDubbo
找不到服务提供者:
1. 看注解使用的是哪个包!
2. 看注册中心地址是否正确,以及防火墙是关闭!建议 :linux ,本地防火墙都关闭!
3. 重启服务提供者{进入到注册中心,rmr 删除服务提供者的节点!}
dubbo配置
1、重试次数
失败自动切换,当出现失败,重试其它服务器,但重试会带来更长延迟。可通过 retries=“2”{默认} 来设置重试次数(不含第一次)。
1、在调用端,Reference注解添加属性 retries,设置重试次数,如果不设置默认重试两次
@RestController
@RequestMapping("/user")
public class UserController {
@Reference(retries = 4)
private UserService userService;
@GetMapping("{name}")
public String getData(@PathVariable String name) {
String value = userService.sayHello(name);
return value;
}
}
2、在服务端通过Thread.sleep来实现测试效果
2、版本号
当一个接口实现,出现不兼容升级时,可以用版本号过渡,版本号不同的服务相互间不引用。
可以按照以下的步骤进行版本迁移:
1、提供者添加版本配置:
@Service(version = “1.0.1”)
public class UserServiceImpl implements UserService {
2、消费者调用配置:
@Reference(version = “1.0.1”)
private UserService userService;
3、如果不需要区分版本,可以按照以下的方式配置:
@Reference(version = “*”)
private UserService userService;