Consul服务注册与发现

简介: Consul是一种服务网格解决方案,提供具有服务发现,配置和分段功能的全功能控制平面。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建完整的服务网格。Consul需要一个数据平面,并支持代理和本机集成模型。Consul附带了一个简单的内置代理,因此一切都可以直接使用,还支持Envoy等第三方代理集成。

Consul服务注册与发现

-- --

Consul官网:https://www.consul.io/
Consul中文文档:https://www.springcloud.cc/spring-cloud-consul.html

简介

Consul是一种服务网格解决方案,提供具有服务发现,配置和分段功能的全功能控制平面。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建完整的服务网格。Consul需要一个数据平面,并支持代理和本机集成模型。Consul附带了一个简单的内置代理,因此一切都可以直接使用,还支持Envoy等第三方代理集成。

Consul 是一套开源的分布式中的服务治理、配置中心、控制总线功能。这些功能中的每一个都可以根据需要单独使用,也可以一起使用以构建全方位的服务网格,总之 Consul 提供了一种完整的服务网格解决方案


它具有很多有点。包括:基于 raft 协议,比较简洁;支持健康检查,同时支持HTTP 和 DNS 协议,支持跨数据中心的WAN集群 提供图形界面,跨平台,支持 linux mac windows

主要特点

  • 服务发现:Consul 的客户端可以注册服务,例如 api 或者 mysql ,其他客户端可以使用 Consul 来发现给定服务的提供者。使用DNS 或者 HTTP ,应用程序可以轻松找到他们依赖的服务
  • 健康检查:领事客户端可以提供任意数量的运行状况检查,这些检查可以与给定服务(“ Web服务器是否返回200 OK”)或本地节点(“内存利用率低于90%”)相关。操作员可以使用此信息来监视群集的运行状况,服务发现组件可以使用此信息将流量从不正常的主机发送出去。
  • KV存储:应用程序可以将Consul的分层键/值存储用于多种目的,包括动态配置,功能标记,协调,领导者选举等。简单的HTTP API使其易于使用。
  • 安全的服务通信:领事可以为服务生成并分发TLS证书,以简历相互TLS连接。意图 可用于定义允许那些服务进行通信,可以使用可以实时更改的意图轻松管理服务分段,而不必使用复杂的网络拓扑和静态防火墙规则。
  • 多数据中心:Consul开箱即用地支持多个数据中心。这意味着Consul的用户不必担心会构建其他抽象层以扩展到多个区域。
在docker上安装启动consul
#拉取consul镜像
docker pull consul

#启动consul
docker run -d  -p 8500:8500/tcp --name myConsul  consul agent -server -ui -bootstrap-expect=1 -client=0.0.0.0

访问 : http://http:// xx.xx.xx.xx/:8500 (linux的IP地址加上冒号8500, xx代表服务器ip地址)

在这里插入图片描述

服务提供者
  1. pom文件
       <!--SpringCloud consul-server-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>
  1. yml文件
server:
  port: 8006


spring:
  application:
    name: consul-provider-payment
  cloud:
    consul:
      host: 10.211.55.17  #用linux的ip地址(consul在本机就填localhost)
      port: 8500
      discovery:
        service-name: ${spring.application.name}
  1. springboot 启动类增加注解
@EnableDiscoveryClient    //该注解用于向使用consul或者Zookeeper作为注册中心时注册服务
  1. 编写测试Controller
@RestController
@Slf4j
public class PaymentController {

    @Value("${server.port}")        //获取端口号
    private String serverPort;

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

}
  1. 启动项目

在这里插入图片描述

服务消费者

和消费者相同除了端口

  • 控制层 RestTemplate 远程调用
@RestController
@Slf4j
public class OrderConsulController {

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

    @Resource
    private RestTemplate restTemplate;

    @RequestMapping("/consumer/payment/consul")
    public String paymentInfo(){
        String result = restTemplate.getForObject(INVOKE_URL + "/payment/consul", String.class);
        return result;
    }

}

启动

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

相关文章
|
6月前
|
存储 安全 Go
Golang 语言微服务的服务注册与发现组件 Consul
Golang 语言微服务的服务注册与发现组件 Consul
57 0
|
1月前
|
微服务
三个微服务注册中心eureka、consul、zookeeper之间的异同点以及CAP理论图
三个微服务注册中心eureka、consul、zookeeper之间的异同点以及CAP理论图
18 0
|
7月前
|
应用服务中间件 Shell nginx
Docker consul的容器服务注册与发现-2
Docker consul的容器服务注册与发现
65 0
|
7月前
|
前端开发 应用服务中间件 nginx
Docker consul的容器服务注册与发现-1
Docker consul的容器服务注册与发现
76 0
|
9月前
|
XML 监控 网络协议
手把手教你搭建SpringCloud项目(七)集成Consul服务注册中心
手把手教你搭建SpringCloud项目(七)集成Consul服务注册中心
193 0
|
10月前
|
监控
Springcloud整合consul作为注册中心需要注意的问题(No instances available for)
使用consul跟使用zookeeper的整合过程没有太大的区别,就是有一点需要注意, pom文件必须引入一个健康度监控的包,不然报错No instances available for
|
11月前
|
存储 Cloud Native 安全
【云原生】springcloud07—Consul的服务注册与发现
【云原生】springcloud07—Consul的服务注册与发现
|
11月前
|
存储 JSON 数据可视化
(6)go-micro微服务consul配置、注册中心
(6)go-micro微服务consul配置、注册中心
315 0
|
Windows
『Consul』Consul数据持久化配置并且注册为Windows服务
📣读完这篇文章里你能收获到 - Consul数据持久化配置并且注册为Windows服务
814 0
『Consul』Consul数据持久化配置并且注册为Windows服务