JAVAEE细细看 框架32 - SpringCloud 微服务(三) 服务治理-Consul

Consul 概述

Consul 是由 HashiCorp 基于 Go 语言开发的,支持多数据中心,分布式高可用的服务发布和注册服务软件。
• 用于实现分布式系统的服务发现与配置。
• 使用起来也较 为简单。具有天然可移植性(支持Linux、windows和Mac OS X);安装包仅包含一个可执行文件,
方便部署 。
• 官网地址:https://www.consul.io

开发模式
consul agent -dev

服务模式 可以保留以前数据
consul agent -server -ui -bootstrap-expect 1 -data-dir E:\xczxbefore\springcloud\consul\data -node=n1 -bind=127.0.0.1

1. Consul 快速入门

提供者

①导依赖

<!--consul 客户端-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

②application.yml配置相关配置

server:
  port: 8000
spring:
  cloud:
    consul:
      host: localhost # consul 服务端的 ip
      port: 8500 # consul 服务端的端口 默认8500
      discovery:
        service-name: ${spring.application.name} # 当前应用注册到consul的名称
        prefer-ip-address: true # 注册ip

  application:
    name: consul-provider # 应用名称

消费者

①导依赖

<!--consul 客户端-->
<dependency>
	<groupId>org.springframework.cloud</groupId>
	<artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>
<dependency>
	<groupId>org.springframework.boot</groupId>
	<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>

②application.yml配置相关配置

server:
  port: 9000

spring:
  cloud:
    consul:
      host: localhost # consul 服务端的 ip
      port: 8500 # consul 服务端的端口 默认8500
      discovery:
        service-name: ${spring.application.name} # 当前应用注册到consul的名称
        prefer-ip-address: true # 注册ip

  application:
    name: consul-consumer # 应用名称

③OrderController

@GetMapping("/goods/{id}")
public Goods findGoodsById(@PathVariable("id") int id){
    //演示discoveryClient 使用
    List<ServiceInstance> instances = discoveryClient.getInstances("consul-PROVIDER");
    //判断集合是否有数据
    if(instances == null || instances.size() == 0){
        //集合没有数据
        return null;
    }
    ServiceInstance instance = instances.get(0);
    String host = instance.getHost();//获取ip
    int port = instance.getPort();//获取端口
    System.out.println(host);
    System.out.println(port);
    String url = "http://"+host+":"+port+"/goods/findOne/"+id;
    // 3. 调用方法
    Goods goods = restTemplate.getForObject(url, Goods.class);
    return goods;
}

启动提供者 消费者

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

更详细内容,请参照 服务治理-Eureka

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值