服务节点分成了临时节点和持久节点
停止8004后,立刻再查[zk: localhost:2181(CONNECTED) 2] ls /services
会发现8004还在注册中,但再过一会之后就会发现已经消失了
所以是临时节点
接下来将消费者也注册进zookeeper中
Pom和服务提供者一样
Yml:
server:
port: 80
spring:
application:
name: cloud-consumer-order
cloud:
zookeeper:
connect-string: 192.168.174.128:2181
主程序:
@SpringBootApplication
@EnableDiscoveryClient
public class OrderZKMain80 {
public static void main(String[] args) {
SpringApplication.run(OrderZKMain80.class,args);
}
}
Config:
@Configuration
public class ApplicationContextConfig {
@Bean
@LoadBalanced
public RestTemplate getRestTemplate(){
return new RestTemplate();
}
}
Controller:
@RestController
public class OrderZKController {
// zookeeper服务中心的服务名称
public static final String INVOKE_URL = "http://cloud-provider-payment";
@Resource
private RestTemplate restTemplate;
@GetMapping(value = "/consumer/payment/zk")
public String paymentInfo() {
String result = restTemplate.getForObject(INVOKE_URL + "/payment/zk", String.class);
return result;
}
}
启动项目,回linux输入ls /services可以看到服务者和消费者都注册进来了
输入:
http://localhost:8004/payment/zk
http://localhost/consumer/payment/zk
都正常显示,即代表成功
接下来是consul的内容
consul是google开源的一个使用go语言开发的服务发现、配置管理中心服务。内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value存储、多数据中心方案,不再需要依赖其他工具(比如ZooKeeper等)。
consul是分布式的、高可用、横向扩展的。consul提供的一些关键特性:
service discovery:consul通过DNS或者HTTP接口使服务注册和服务发现变的很容易,一些外部服务,例如saas提供的也可以一样注册。
health checking:健康检测使consul可以快速的告警在集群中的操作。和服务发现的集成,可以防止服务转发到故障的服务上面。
key/value storage:一个用来存储动态配置的系统。提供简单的HTTP接口,可以在任何地方操作。
multi-datacenter:无需复杂的配置,即可支持任意数量的区域。
Consul还有可视化web页面
下载解压Consul(1.6.1版本),将conusl文件的位置直接加到环境变量中。
然后打开终端:
小坑:直接consul.exe agent -dev是无法识别的,只能用以下方式
PS D:\consul> .\consul.exe agent -dev
启动成功后在浏览器输入:http://localhost:8500/ 就会自动出现http://localhost:8500/ui/dc1/services 的地址和页面出来