zookeeper注册中心宕机,消费者能否调用提供者(三)
2019-07-29 本文已影响0人
小怪兽打葫芦娃
Dubbo入门案例(一)
Dubbo入门案例(二)
Dubbo入门案例(三)
Dubbo入门案例(四)
Dubbo入门案例(五)
Dubbo入门案例(六)
Dubbo入门案例(七)
Dubbo入门案例(八)
现象:zookeeper注册中心宕机,还可以消费dubbo暴露的服务,直接与dubbo直连
原因:
健壮性
监控中心宕掉不影响使用,只是丢失部分采样数据
数据库宕掉后,注册中心仍能通过缓存提供服务列表查询,但不能注册新服务
注册中心对等集群,任意一台宕掉后,将自动切换到另一台
注册中心全部宕掉后,服务提供者和服务消费者仍能通过本地缓存通讯
服务提供者无状态,任意一台宕掉后,不影响使用
服务提供者全部宕掉后,服务消费者应用将无法使用,并无限次重连等待服务提供者恢复
代码演示:
关闭zookeeper注册中心服务器,直接运行代码,发现还是可以链接,因为本地有缓存可以通讯,如果不使用缓存代码如下:
修改 工程 dubbodemo_consumer,给注解@Reference 添加url地址,把之前在工程dubbodemo_provider配置文件里面配置的端口号放到url地址后面,直接运行,与dubbo直连
package com.maweiqi.controller;
import com.alibaba.dubbo.config.annotation.Reference;
import com.maweiqi.service.HelloService;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
/**
* HelloController
*
* @Author: 马伟奇
* @CreateTime: 2019-07-19
* @Description:
*/
@Controller
@RequestMapping("/demo")
public class HelloController {
@Reference(url = "127.0.0.1:20882")
private HelloService helloService;
@RequestMapping("/hello")
@ResponseBody
public String getName(String name){
//远程调用
String result = helloService.sayHello(name);
System.out.println(result);
return result;
}
}