码迷,mamicode.com
首页 > 编程语言 > 详细

SpringCloud 系列之 Consul

时间:2021-01-01 12:09:04      阅读:0      评论:0      收藏:0      [点我收藏+]

标签:work   没有   target   包括   解决   cat   app   数据   减压   

简介

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:\EdgeDoDownLoad\consul_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服务端:
技术图片

两个服务之间相互调用:
技术图片
技术图片

项目地址

参考链接

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

SpringCloud 系列之 Consul

标签:work   没有   target   包括   解决   cat   app   数据   减压   

原文地址:https://www.cnblogs.com/Anxc/p/14198981.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!