maven
将接口maven项目install安装,在需要那个接口的地方引入maven
序列化,反序列化
在pojo类上implements Serializable
public class User implements Serializable{}
service层
在service层类上写注解
@Service(timeout = 3000,retries = 2,version = "v1.0",weight = 100)
public class UserServiceImpl implements UserService{
}
controller层
@RestController
@RequestMapping("/user")
public class UserController {
@Reference(timeout = 1000,version = "v2.0")
private UserService userService;
@RequestMapping("/sayHello")
public String sayHello(){
return userService.sayHello();
}
}
超时&重试
@Service(timeout = 3000,retries = 2)
版本控制
@Service(version = "v1.0")
@Reference(version = "v1.0")
灰度发布
出现新功能时,会让一部分用户先使用新功能,如果用户反馈没有问题的话,再将所有用户都迁移到新的版本上
具体使用, 参考上面的版本控制
负载均衡
@Service(weight = 100)
@Reference(loadbalance = "random")
不同机器需要不同端口
<dubbo:protocol port="20880" />
<dubbo:application name="dubbo-service">
<dubbo:parameter key="qos.port" value="33333"/>
</dubbo:application>
集群容错
@Reference(cluster = "failover")
服务降级
@Reference(mock = "force:return null")
@Reference(mock = "fill:return null")
一个机器有多个服务, 机器CPU占用太高了, 马上要崩了, 就要让一些不太重要的服务降级, 以保证重要的服务可以正常的运行.
|