Consul

概述

1、Consul 是一套开源的分布式服务发现和配置管理系统,由 HashiCorp 公司用 Go 语言开发

2、Consul 提供服务发现、服务网格、流量管理、网络基础设施设备的自动更新,可以在单个 Consul 部署中单独或一起使用这些功能

 

安装

1、Windows

(1)下载对应版本压缩包

(2)解压压缩包,运行 .exe

2、Linux

(1)CentOS / RHEL 软件包管理器

sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://rpm.releases.hashicorp.com/RHEL/hashicorp.repo
sudo yum -y install consul

 

服务提供者(例)

1、核心依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>

2、yaml 配置文件

server:
  # Consul服务端口号
  port: 8006

spring:
  application:
    # 服务提供者名称
    name: consul-provider-payment
  cloud:
    consul:
      # Consul 注册中心地址
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}

3、Spring Boot 启动类

@SpringBootApplication
@EnableDiscoveryClient
public class PaymentMain8006 {
    public static void main(String[] args) {
        SpringApplication.run(PaymentMain8006.class,args);
    }
}

4、Controller

@RestController
public class PaymentController {

    @Value("${server.port}")
    private String serverPort;

    @GetMapping("/payment/consul")
    public String paymentInfo() {
        return "springcloud with consul:" + serverPort + "\t" + UUID.randomUUID().toString();
    }
}

 

服务消费者(例)

1、核心依赖

<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
</dependency>

2、yaml 配置文件

server:
  # Consul服务端口号
  port: 80

spring:
  application:
    # 服务消费者名称
    name: consul-consumer-order
  cloud:
    consul:
      # Consul 注册中心地址
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}

3、Spring Boot 启动类

@SpringBootApplication
@EnableDiscoveryClient
public class OrderConsulMain80 {
    public static void main(String[] args) {
        SpringApplication.run(OrderConsulMain80.class,args);
    }
}

4、配置类,注入 Bean

@Configuration
public class ApplicationContextBean {
    @Bean
    @LoadBalanced
    public RestTemplate getRestTemplate() {
        return new RestTemplate();
    }
}

5、Controller

@RestController
public class OrderConsulController {

    public static final String INVOKE_URL = "http://cloud-provider-payment";

    @Autowired
    private RestTemplate restTemplate;

    @GetMapping(value = "/consumer/payment/consul")
    public String paymentInfo() {
        String result = restTemplate.getForObject(INVOKE_URL+"/payment/consul", String.class);
        return result;
    }
}
posted @   半条咸鱼  阅读(51)  评论(0编辑  收藏  举报
(评论功能已被禁用)
相关博文:
阅读排行:
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
点击右上角即可分享
微信分享提示