微服务架构 | 服务注册发现中心 - [Springcloud 整合 consul(简易)]
@
简易安装
下载 consul
选择自己的系统版本,注意一般电脑用 amd,否则用 arm
解压
tar zxvf consul_1.9.6_linux_amd64.zip -C /usr/local/bin/
运行
./consul agent -client=0.0.0.0 -dev -ui > /consul.log &
-client 如果不配置,则默认只能本机访问
访问UI
默认端口是8500
简易提供者
依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
配置
spring:
application:
name: payment-service-consul-1
cloud:
consul:
host: 192.168.3.10
port: 8500
discovery:
service-name: ${spring.application.name}
heartbeat:
enabled: true
启动类(@EnableDiscoveryClient)
@SpringBootApplication
@EnableDiscoveryClient
public class PaymentProviderApplication {
public static void main(String[] args) {
SpringApplication.run(PaymentProviderApplication.class,args);
}
}
验证
通过consul ui查看
若服务检查(service check)显示红叉,如下图:
需要检查心跳是否正常,也可能是未开启心跳(consul 默认不开启)
简易消费者
依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
配置
spring:
application:
name: order-service-consul-1
cloud:
consul:
host: 192.168.3.10
port: 8500
discovery:
service-name: ${spring.application.name}
启动类(@EnableDiscoveryClient)
@SpringBootApplication
@EnableDiscoveryClient
public class OrderComsummerApplication {
public static void main(String[] args) {
SpringApplication.run(OrderComsummerApplication.class,args);
}
}
验证
通过 consul ui 查看服务状态
调用消费者服务查看是否可以访问到提供者
调用服务提供者时,可能出现以下报错
java.lang.IllegalStateException: No instances available for payment-service-consul-1
xxx 没有可用实例(xxx是服务名)
原因可能为:
- 服务 xxx 没有成功启动
- 服务 xxx 没有成功注册
- 服务 xxx 心跳信息不正常(服务提供方的心跳异常可能导致消费者无法使用)
传送门:
微服务架构 | 组件目录