spring cloud之注册中心(consul)

Consul

简介
- 官网地址:https://www.consul.io
- consul是一个可以提供服务发现,健康检查,多数据中心,key/value存储等功能的分布式服务框架,用于实现分布式系统的服务发现和配置。
安装和启动consul
以windows为例:
1.下载consul
	https://www.consul.io/downloads
2.在指定目录解压缩,不建议目录路径含有中文
3.启动服务注册中心,在consul安装目录中打开cmd
	consul agent -dev
4.访问consul管理界面
	localhost:8500(默认端口)
5.consul管理界面基本介绍
	dc1:数据中心名称,datacenter(默认为dc1)。指定数据中心启动: consul agent -dev -datacenter=aa
	services:当前consul服务中注册服务列表。默认client和server同时启动,自己注册自己,会出现一个consul服务
	Nodes:用来查看consul的集群节点
consul client(微服务)
  • 1.引入依赖
<dependency>
    <groupId>org.springframework.cloudgroupId>
    <artifactId>spring-cloud-starter-consul-discoveryartifactId>
dependency>
  • 2.在启动类上加注解@EnableDiscoveryClient
@SpringBootApplication
@EnableDiscoveryClient
public class ConsulClientApplication {

}
  • 3.配置文件
# consul server 服务注册地址
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
  • consul client 启动后,出现如下问题
    图片待补充

原因:consul server检测所有客户端心跳,但发送心跳时,client端必须给予响应才能正常使用,由于在consul client没有引入检查检查依赖,所以健康检查不通过,导致服务不能使用


<dependency>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-actuatorartifactId>
dependency>
# 关闭健康检查(不建议关闭,默认开启)
spring.cloud.consul.discovery.register-health-check=false

微服务间通信

如何解决微服务的服务间通信问题?

- 1.HTTP方式,使用http协议进行数据传递(JSON),spring cloud使用HTTP协议传递数据
	RestTemplate(GET,POST,DELETE,PUT,PATCH...)
	RestTemplate发送请求存在的问题:
		1.调用地址写死在代码中不利于维护
		2.在调用过程中无法实现请求负载均衡
    
- 2.RPC方式,远程服务调用(二进制)
	Dubbo(java 阿里巴巴)

OSI:物理层、数据链路层、网络层、传输层(RPC)、会话层、表示层、应用层(HTTP)

你可能感兴趣的:(Spring,Cloud,spring,cloud)