微服务Dubbo学习笔记
FANSEA集群与分布式概念

dubbo服务架构

SpringBoot整合Zookeeper
Dubbo高级特性
序列化
pojo对象必须实现serializable接口才能进行消费者和生产者数据传递
1 2 3 4
| public class User implement serializable{ private String name; private Long password; }
|
地址缓存
当注册中心挂掉之后,服务调用者不会因为这个原因而无法远程调用方法:
因为当第一次远程调用时,他虽然会从注册中心获取方法地址,但是也会保存此地址于本机缓存中,所以下次调用不需要经过注册中心
超时与重试
1 2 3 4 5 6
| @DubboService(timeout = 3000,retries = 2) public class UserServiceImpl implement UserService{ public User finUser(String name){ return new User(name,"123456") } }
|
多版本
通过指定版本注入;降低代码耦合,提高可扩展性。
1 2 3 4 5 6 7 8 9 10 11 12
| @DubboService(version = "1.0") public class UserServiceImpl implement UserService{ public User finUser(String name){ return new User(name,"123456") } } @DubboService(version = "2.0") public class UserServiceImpl2 implement UserService{ public User finUser(String name){ return new User(name,"123456") } }
|
1 2
| @Reference(version = "1.0") UserService userService;
|
负载均衡
使用方式
1 2
| @Reference(loadbalance = "random") private UserService userService;
|
集群容错
调用服务出错重试

1 2
| @Reference(cluster = "failover") private UserService userService;
|
服务降级


1 2
| @Reference(mock = "force:return null") private UserService userService;
|