一文看懂微服务架构之注册中心Consul、Nacos

思维导图

一文看懂微服务架构之注册中心Consul、Nacos

文章插图
 
文章已收录Github精选 , 欢迎Star:https://github.com/yehongzhi/learningSummary
一、前言伴随着Eurka2.0版本已停止维护 , 开始要考虑使用微服务新一代的开源的注册中心替代Eureka 。
一文看懂微服务架构之注册中心Consul、Nacos

文章插图
 
目前据我了解 , Consul和Nacos是比较流行的两种替代方案 。这篇文章就介绍一下这两种注册中心在微服务中的简单使用 , 希望对读者有所帮助 。
二、注册中心的作用注册中心在微服务的架构中相当于一个“服务的通讯录” 。当一个服务启动时 , 需要向注册中心注册服务 , 注册中心保存了所有服务的服务名称和服务地址的映射关系 。当服务A想调用服务D时 , 则从注册中心获取服务D的服务地址 , 然后调用 。
我画张图给大家描述会更清楚一点 , 大概如下:
一文看懂微服务架构之注册中心Consul、Nacos

文章插图
 
可能会有人问 , 为什么不直接通过服务地址调用服务D呢 , 还要从注册中心去获取服务D的服务地址 。因为一个服务背后是不止一台机器的 , 比如服务D可能在实际生产中是由三台机器支持的 , 对外只暴露一个服务名称 , 这样可以避免写死服务的IP地址在代码中(写在配置文件里) , 在服务扩展时就非常方便了 。
除了服务注册之外 , 注册中心还提供服务订阅 , 当有新的服务注册时 , 注册中心会实时推送到各个服务 。
还有服务健康监测 , 可以在管理界面看到注册中心中的服务的状态 。
三、Consul由Go语言开发 , 支持多数据中心分布式高可用的服务发布和服务注册 , 采用ralt算法保证服务的一致性 , 且支持健康检查 。
3.1 安装(win10版)第一步 , 上官网下载安装包 。
一文看懂微服务架构之注册中心Consul、Nacos

文章插图
 
第二步 , 解压zip包 , 并配置环境变量 。
一文看懂微服务架构之注册中心Consul、Nacos

文章插图
 

一文看懂微服务架构之注册中心Consul、Nacos

文章插图
 
第三步 , 唱跳rap篮球键ctrl+R , cmd , 输入命令consul:
一文看懂微服务架构之注册中心Consul、Nacos

文章插图
 
这就安装成功了 , 超简单!输入consul -version验证一下 , 会显示版本号:
一文看懂微服务架构之注册中心Consul、Nacos

文章插图
 
第四步 , 启动 。输入命令consul.exe agent -dev本地启动:
一文看懂微服务架构之注册中心Consul、Nacos

文章插图
 
第五步 , 在浏览器中输入http://localhost:8500打开管理界面 。
一文看懂微服务架构之注册中心Consul、Nacos

文章插图
 
3.2 服务注册接下来就需要创建两个服务 , 分别是订单(order)和用户(user) , 注册到consul 。下面我就演示其中一个user服务 。
首先创建一个SpringBoot工程 , Maven配置如下:
<parent>    <groupId>org.springframework.boot</groupId>    <artifactId>spring-boot-starter-parent</artifactId>    <version>2.0.1.RELEASE</version></parent><groupId>io.github.yehongzhi</groupId><artifactId>user</artifactId><version>0.0.1-SNAPSHOT</version><dependencies>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter</artifactId>    </dependency>    <dependency><!-- 健康监测的包 -->        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-actuator</artifactId>    </dependency>    <dependency><!-- spring-cloud-consul服务治理的jar包 -->        <groupId>org.springframework.cloud</groupId>        <artifactId>spring-cloud-starter-consul-discovery</artifactId>        <version>2.0.1.RELEASE</version>    </dependency>    <dependency>        <groupId>org.springframework.boot</groupId>        <artifactId>spring-boot-starter-web</artifactId>    </dependency></dependencies><dependencyManagement>    <dependencies>        <dependency>            <groupId>org.springframework.cloud</groupId>            <artifactId>spring-cloud-dependencies</artifactId>            <version>Finchley.SR1</version>            <type>pom</type>            <scope>import</scope>        </dependency>    </dependencies></dependencyManagement>


推荐阅读