zeus00456

导航

微服务架构 | 服务注册发现中心 - [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 心跳信息不正常(服务提供方的心跳异常可能导致消费者无法使用)

传送门:
微服务架构 | 组件目录

posted on 2022-07-28 16:00  问仙长何方蓬莱  阅读(77)  评论(0编辑  收藏  举报