黑马程序员技术交流社区

标题: 【广州校区】+【原创】+Springcloud微服务注册中心之Consul [打印本页]

作者: wujianhui    时间: 2020-2-27 17:26
标题: 【广州校区】+【原创】+Springcloud微服务注册中心之Consul
本帖最后由 wujianhui 于 2020-2-27 17:29 编辑

序言
       现在市面上越来越多的企业采用分布式微服务来搭建项目,而在微服务架构中,注册中心是其核心的基础服务之一。注册中心的作用是提供完善实现服务治理功能,而选择什么注册中心也是微服务项目架构中的一环。
一、什么是注册中心
       在现实生活中,当我们想要联系某一个人的时候,我们会拿出手机,打开通讯录,找到那个人的电话号码,然后拨出去,之后只要那个人接了电话,我们就可以通话了。其实,注册中心就相当于这个“通讯录”,只不过这个“通讯录”中记录服务与服务地址的映射关系。在微服务架构中,如果服务A想要调用服务B时,就需要到注册中心里面找到服务B的地址,之后进行调用,如下图:

二、注册中心的作用
      前面我们知道注册中心是什么,那么注册中心有什么用呢。如果仅仅是在注册中心中找到服务与服务地址的映射关系,那么不一定需要单独的服务来去管理这些。在分布式系统中,需要考虑更多更复杂的问题:如服务在注册之后,如何被及时的发现;服务宕机后,如何及时下线;服务如何进行扩展;服务出现异常时,如何进行处理等等一系列问题。而这些问题的解决都依赖与注册中心。
       在我看来,注册中心解决了服务的注册与发现,同时给与其他问题解决提供了支持。
三、常见的注册中心
       在java体系中,我们常见的注册中心有Dubbo,Eureka,Nacos,Consul等,具体采用哪种,就见仁见智了,我们下面要讲的就是Consul。
四、Consul简介
       Consul 是 HashiCorp 公司推出的开源工具,官方网址:https://www.consul.io/ ,用于实现分布式系统的服务发现与配置。与其它分布式服务注册与发现的方案,Consul 的方案更“一站式”,内置了服务注册与发现框 架、分布一致性协议实现、健康检查、Key/Value 存储、多数据中心方案,不再需要依赖其它工具(比如 ZooKeeper 等)。使用起来也较 为简单。Consul 使用 Go 语言编写,因此具有天然可移植性(支持Linux、windows和Mac OS X);安装包仅包含一个可执行文件,方便部署,与 Docker 等轻量级容器可无缝配合。
五、Consul工作原理
工作原理如下图:

具体流程如下:


六、Consul安装
    可以直接去官网下载,下载地址:https://www.consul.io/downloads.html。

下载后,解压到一个没有中文的目录下,之后以管理员身份运行cmd,进入Consul目录,运行下面的命令:

[Shell] 纯文本查看 复制代码
consul agent -dev -ui -node=cy
# -dev开发服务器模式启动,-node结点名为cy,-ui可以用界面访问,默认能访问

访问http://localhost:8500/,看到下面的界面表示成功:

七、使用Consul作为注册中心整合springcloud
使用maven创建工程ConsulTest,在pom.xml中引入依赖:
[XML] 纯文本查看 复制代码
 <parent>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-parent</artifactId>
        <version>2.1.4.RELEASE</version>
        <relativePath/><!--表示每次都不从本地仓库找jar包,优先从中央仓库找-->
    </parent>
<dependencies>
        <!-- SpringBoot整合Web组件 -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>
    </dependencies>

创建配置文件application.yml

创建启动类:
[Java] 纯文本查看 复制代码
@SpringBootApplication
@EnableDiscoveryClient
@RestController
public class ConsulApp {

    public static void main(String[] args) {
        SpringApplication.run(ConsulApp.class, args);
    }
    @GetMapping("/testConsul")
    public String testConsul(){
        return "注册进入consul成功!";
    }
}

运行测试类,在Consul界面查看服务:

之后在浏览器中访问http://localhost:8083/testConsul,出现对应输出则为成功。





欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2