Consul服务注册与发现

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文件
       
        
            org.springframework.cloud
            spring-cloud-starter-consul-discovery
        
  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;
    }

}

启动

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述
  • 个人博客: http://blog.yanxiaolong.cn/.

你可能感兴趣的:(Consul服务注册与发现)