• SpringCloud 系列之 consul


    简介

    Consul 是一种服务网格解决方案,提供具有服务发现、配置和分段功能的全功能控制平面。每个功能都可以根据需要单独使用,也可以一起使用以构建完整的服务网格。
    主要包括服务发现,健康检查,KV存储,安全服务通信和多数据中心,本文主要讲解的是其服务发现和健康检查。

    使用

    安装使用

    本文主要基于的是新手的练习使用,故在windows进行了安装和使用,其实关于Consul的安装使用在网上教程有很多,我在Linux和windows都试了,windows的入手简单,Linux的话,如果使用docker,可能回出现服务健康检查不通过的现象,因为在服务端的心跳检测发送的请求回发生问题,要是正常安装在Linux应该是没有问题的,这个我没有验证。关于安装步骤,我也放在了本文最后的参考链接,有兴趣的可以自行查看。

    项目中使用

    本文主要是为了新手简单的练习使用Consul的使用方法(当作注册中心,暂时没有涉及到其它部分),服务调用还是用到了ribbon。
    新建SpringBoot项目 springcloud-consul-a,并且导入pom依赖(没有加版本是因为写了maven的pom包):

            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-web</artifactId>
            </dependency>
            <dependency>
                <groupId>org.springframework.boot</groupId>
                <artifactId>spring-boot-starter-actuator</artifactId>
            </dependency>
            <!--SpringCloud consul-server-->
            <dependency>
                <groupId>org.springframework.cloud</groupId>
                <artifactId>spring-cloud-starter-consul-discovery</artifactId>
            </dependency>
    

    新建application.yml配置文件:

    server:
      port: 8888
    spring:
      application:
        name: springcloud-consul-a
      freemarker:
        suffix: .ftl
      cloud:
        consul:
          host: 127.0.0.1  #用linux的ip地址(consul在本机就填localhost)
          port: 8500
          discovery:
            service-name: ${spring.application.name}
    

    启动类上加注解:

    @EnableDiscoveryClient
    新建两个服务相互调用的demo:

    @RestController
    public class UserController {
    
        static final String URL="http://springcloud-consul-b";
        @Value("${server.port}")        //获取端口号
        private String serverPort;
        @Value("${spring.application.name}")
        private String serverName;
    
        @Autowired
        RestTemplate restTemplate;
    
        @GetMapping("getInfo/{name}")
        public String getServerInfo(@PathVariable("name")String name){
            if(StrUtil.isBlank(name)){
                return "请输入参数!";
            }
            if("a".equals(name)){
                return "响应服务名称:"+serverName+" 端口号:"+serverPort+" 时间戳:"+ DateUtil.now();
            }else {
                return restTemplate.getForObject(URL+"/getInfo/"+name,String.class);
            }
    
        }
    }
    

    仿照 springcloud-consul-a 新建 springcloud-consul-b 并修改对应配置文件中的 端口号和服务名。

    启动 Consul 服务

    在windows下,下载文件然后减压缩,并且把该文件位置加入到path环境(和Java一样)中(我的就是D:EdgeDoDownLoadconsul_1.9.0_windows_amd64加入path中):

    https://www.consul.io/downloads.html


    进入文件夹,打开命令行窗口(cmd),运行该exe文件

    consul agent -dev



    打开浏览器并访问:

    http://localhost:8500/

    启动项目 springcloud-consul-a 和 springcloud-consul-b,再看consul服务端:

    两个服务之间相互调用:

    项目地址

    git@gitee.com:anxc/study-demo-eureka.git

    参考链接

    window安装使用:

    https://blog.csdn.net/forezp/article/details/70188595
    https://blog.csdn.net/xulong5000/article/details/90233478

    其它参考链接

    https://www.consul.io/docs/intro
    https://blog.csdn.net/liuzhuchen/article/details/81913562

  • 相关阅读:
    ABP.NET 方法使用 HTTPPOST,HTTPGET,HTTPPUT 特性
    Asp.Net Core 获取配置系统的链接字符串
    ABP.NET CORE 框架 取消新增用户邮箱地址必填验证
    前端开发常用组件库
    微信RSA加密公钥API
    动手实现一个较为简单的MQTT服务端和客户端
    计算入职时间的时间算法
    Windows Terminal 安装及美化
    Windows10内置Linux子系统(WSL)安装
    分享powershell设定网卡,ip,网关,dns的命令
  • 原文地址:https://www.cnblogs.com/Anxc/p/14198981.html
Copyright © 2020-2023  润新知