• SpringCloud微服务(一)——Consul服务注册中心


    Consul服务注册中心

    SpringCloud

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

    Consul是一套开源的分布式服务发现和配置管理系统,Go语言开发。

    Consul是一个服务网格(微服务间的 TCP/IP,负责服务之间的网络调用、限流、熔断和监控)解决方案,它是一个分布式的,高度可用的系统,而且开发使用都很简便。它提供了一个功能齐全的控制平面,主要特点是:服务发现、健康检查、键值存储、安全服务通信、多数据中心。

    与其它分布式服务注册与发现的方案相比,Consul 的方案更“一站式”——内置了服务注册与发现框架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案,不再需要依赖其它工具。Consul 本身使用 go 语言开发,具有跨平台、运行高效等特点,也非常方便和 Docker 配合使用。

    Eureka、Zookeeper、Consul三个注册中心的异同点

    组件名语言健康检查对外暴露接口CAPSpring Cloud 集成
    EurekaJava可配支持HTTPAP集成
    ConsulGo支持HTTP/DFSCP集成
    Zookeeperjava支持客户端CP集成

    安装Consul

    可以docker安装,win也可。consul --version查看版本。

    win开启:

    # 先进到consul目录 ,cmd
    # 开发模式启动
    consul agent -dev
    
    • 1
    • 2
    • 3

    通过localhost:8500访问控制界面

    在这里插入图片描述

    服务提供者

    
    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-consul-discoveryartifactId>
    dependency>
    
    • 1
    • 2
    • 3
    • 4
    • 5
    server:
      # consul服务端口
      port: 8006
    
    spring:
      application:
        name: cloud-provider-payment
      cloud:
        consul:
          # consul注册中心地址
          host: localhost
          port: 8500
          discovery:
            hostname: 127.0.0.1
            # 服务名字
            service-name: ${spring.application.name}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16

    启动类添加**@EnableDiscoveryClient**,该注解用于向使用consul或者zookeeper作为注册中心时注册服务。控制界面多了服务名称。

    服务消费者

    依赖配置一样,消费者使用RestTemplate调用服务提供者接口,@LoadBalanced实现集群负载均衡,轮询。

    /**
     * @author zzyy
     * @date 2020-02-18 17:27
     **/
    @Configuration
    public class ApplicationContextConfig {
        @Bean
        @LoadBalanced
        public RestTemplate getRestTemplate() {
            return new RestTemplate();
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    /**
     * @author zzyy
     * @create 2020-02-18 17:23
     **/
    @RestController
    @Slf4j
    public class OrderZkController {
    
        public static final String INVOKE_URL = "http://cloud-provider-payment"; //提供者服务名字,前提是消费者和提供者都要注册到注册中心
    
        @Resource
        private RestTemplate restTemplate;
    
    
        /**
         * http://localhost/consumer/payment/consul
         *
         * @return
         */
        @GetMapping("/consumer/payment/consul")
        public String paymentInfo() {
            return restTemplate.getForObject(INVOKE_URL + "/payment/consul", String.class);
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24

    查看控制页面。

    集群搭建

    注册中心集群:加多个地址即可,查看eureka、zookeeper和consul官网。

    服务集群保证服务名一致即可。

  • 相关阅读:
    线程的学习
    Vim使用手册
    Fibonacci数列那些事!
    【教程】Autojs使用OpenCV进行SIFT/BRISK等算法进行图像匹配
    新版本Android Studio logcat日志过滤提示
    Java01-JDK1.8下载安装教程(win11版)
    golang优化命令执行
    Bear and Prime 100(交互题)
    【UVM基础】5、sequence和sequencer相关宏
    Kotlin协程:MutableStateFlow的实现原理
  • 原文地址:https://blog.csdn.net/qq_43409401/article/details/127950977