SpringCloud微服务架构之注册中心 | Consul、Nacos

思维导图

SpringCloud微服务架构之注册中心 | Consul、Nacos_第1张图片

文章已收录Github精选,欢迎Star:https://github.com/yehongzhi/learningSummary

一、前言

伴随着Eurka2.0版本已停止维护,开始要考虑使用微服务新一代的开源的注册中心替代Eureka。

SpringCloud微服务架构之注册中心 | Consul、Nacos_第2张图片

目前据我了解,Consul和Nacos是比较流行的两种替代方案。这篇文章就介绍一下这两种注册中心在微服务中的简单使用,希望对读者有所帮助。

二、注册中心的作用

注册中心在微服务的架构中相当于一个“服务的通讯录”。当一个服务启动时,需要向注册中心注册服务,注册中心保存了所有服务的服务名称和服务地址的映射关系。当服务A想调用服务D时,则从注册中心获取服务D的服务地址,然后调用。

我画张图给大家描述会更清楚一点,大概如下:
SpringCloud微服务架构之注册中心 | Consul、Nacos_第3张图片
可能会有人问,为什么不直接通过服务地址调用服务D呢,还要从注册中心去获取服务D的服务地址。因为一个服务背后是不止一台机器的,比如服务D可能在实际生产中是由三台机器支持的,对外只暴露一个服务名称,这样可以避免写死服务的IP地址在代码中(写在配置文件里),在服务扩展时就非常方便了。

除了服务注册之外,注册中心还提供服务订阅,当有新的服务注册时,注册中心会实时推送到各个服务。

还有服务健康监测,可以在管理界面看到注册中心中的服务的状态。

三、Consul

由Go语言开发,支持多数据中心分布式高可用的服务发布和服务注册,采用ralt算法保证服务的一致性,且支持健康检查。

3.1 安装(win10版)

第一步,上官网下载安装包。

SpringCloud微服务架构之注册中心 | Consul、Nacos_第4张图片

第二步,解压zip包,并配置环境变量。

SpringCloud微服务架构之注册中心 | Consul、Nacos_第5张图片
第三步,唱跳rap篮球键ctrl+R,cmd,输入命令consul

SpringCloud微服务架构之注册中心 | Consul、Nacos_第6张图片

这就安装成功了,超简单!输入consul -version验证一下,会显示版本号:

第四步,启动。输入命令consul.exe agent -dev本地启动:

SpringCloud微服务架构之注册中心 | Consul、Nacos_第7张图片

第五步,在浏览器中输入http://localhost:8500打开管理界面。

SpringCloud微服务架构之注册中心 | Consul、Nacos_第8张图片

3.2 服务注册

接下来就需要创建两个服务,分别是订单(order)和用户(user),注册到consul。下面我就演示其中一个user服务。

首先创建一个SpringBoot工程,Maven配置如下:

<parent>
    <groupId>org.springframework.bootgroupId>
    <artifactId>spring-boot-starter-parentartifactId>
    <version>2.0.1.RELEASEversion>
parent>
<groupId>io.github.yehongzhigroupId>
<artifactId>userartifactId>
<version>0.0.1-SNAPSHOTversion>
<dependencies>
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starterartifactId>
    dependency>
    <dependency>
        <groupId>org.springframework.bootgroupId>
        <artifactId>spring-boot-starter-actuatorartifactId>
    dependency>
    <dependency>
        <groupId>org.springframework.cloudgroupId>
        <artifactId>spring-cloud-starter-consul-discoveryartifactId>
        <version>2.0.1.RELEASEversion>
    dependency>
    <dependency>
        <groupId>org.springframework.bootgroupId>

你可能感兴趣的:(java,java)