SpringCloud 系列之 nacos

简介

nacos简单来说就是一个服务注册和配置中心,我们可以像使用其它注册中心一样使用它,它也可以当作配置中心,可以实现SpringCloud Config和SpringCloud Bus 一样的功能,可以实现在线的项目信息配置。本文主要讲述其作为注册中心和配置中心的快速上手的用法。

使用

使用说明

本文是在windows环境下进行并使用的,读者也可以根据自己的需要在Linux下单独部署或者使用docker进行部署,不过docker下或者Linux下需要对其进行相应的修改,还要注意对应的端口安全组是否开放,集群版的话,数据存储配置是否正常,Linux内存是否够用,因为集群版会发生反复重启的现象,有兴趣的可以自己去研究一下。本文是单机windows下进行部署的,其实集群版也不是很复杂,不过存留的bug比较多,就不做了,因为环境不同,我这可能正常你那里可能就不行了。

下载并启动

由于官网说1.3.1比较稳定,我就下载了1.3.1版本的(Linux下我用的是0.9的)

https://github.com/alibaba/nacos/releases/tag/1.3.1

这里我选择的是windows版的1.3.1.zip 读者可自行选择

然后下载完成以后,我们需要对其减压,然后进行配置信息的修改:

  • 数据持久化
  • 单机版集群版的选择

数据持久化

打开压缩包,然后进行到conf文件夹下,我们找到如图这两个文件:
如果想要数据持久保存,配置文件的信息下一次还想要使用的话,我们可以进行数据库配置,如果不想,请忽略数据持久化配置

在MySQL数据库中,根据nacos-mysql.sql 中信息,创建对应的数据库及表,然后进入到 application.properties 文件中进行数据库配置:
去掉对应的注释并添加数据库信息。

### Count of DB:
 db.num=1

### Connect URL of DB:
 db.url.0=jdbc:mysql://你的数据库连接信息:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
 db.user=root
 db.password=123456

单机版集群版的选择

进入到bin 文件夹下,找到startup.cmd 并进行编辑,单例默认不用修改,看一下就行,集群需要对截图红色部分进行对应的修改:



启动

双击 bin/startuo.cmd 文件进行启动。

访问

输入网址进行访问(账号密码都为nacos),如果你进行了对应的修改,请输入你修改后的文件

http://localhost:8848/nacos/

配置中心的用法

首先创建一个Springcloud项目 springcloud-nacos-config-demo,并引入依赖pom:

(由于有父pom来做版本管理,所以这里没有写版本,详情请在项目地址中查看)

<dependencies>
        <!--SpringCloud Alibaba nacos 注册中心-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!-- nacos config-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        </dependency>
        <!--常用的web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--spring boot 的健康检测-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
</dependencies>

编写配置文件application.yml

server:
  port: 3377
spring:
  profiles:
    active: devs
  application:
    name: springcloud-nacos-config-demo
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 #Nacos服务注册中心地址
      config:
        server-addr: localhost:8848 #Nacos作为配置中心地址
        file-extension: yaml #指定yaml格式配置
        group: DEVS_GROUP
        namespace: ba55d245-23bd-4244-ae2e-6392f30a2945

启动类加注解

@EnableDiscoveryClient

编写用例去获取在nacos中的配置:

@RestController
@RefreshScope //支持Nacos的动态刷新功能。
public class DemoController {

    @Value("${myserver.name}")
    private String name;

    /**
     * 获取 nacos 中的配置信息
     * @return
     */
    @GetMapping("getConfigInfo")
    public String getConfigInfo(){
        return name;
    }
}

nacos编写配置文件

配置文件的映射关系

启动项目进行访问

http://localhost:3377/getConfigInfo

可以看到已经获取到值了

服务注册

创建一个springboot项目 springcloud-nacos-client-a,并且导入pom:

        <!--SpringCloud Alibaba nacos 注册中心-->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        </dependency>
        <!--常用的web-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <!--spring boot 的健康检测-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
        <!--热加载插件,可不加-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-devtools</artifactId>
            <scope>runtime</scope>
            <optional>true</optional>
        </dependency>
        <!--日志插件,可不加-->
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <!--test插件,可不加-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>cn.hutool</groupId>
            <artifactId>hutool-all</artifactId>
            <version>5.5.4</version>
        </dependency>

添加application.yml配置文件

server:
  port: 7777

spring:
  application:
    name: springcloud-nacos-client-a
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848  #配置的Nacos地址(本机的写localhost:8848,服务器的写IP地址)

management:
  endpoints:
    web:
      exposure:
        include: '*'

启动类加注解

@EnableDiscoveryClient

添加服务调用ribbon 的配置

@Configuration
public class ApplicationContextConfig {
    @Bean
    @LoadBalanced    //ribbon 服务调用
    public RestTemplate restTemplate() {
        return new RestTemplate();
    }
}

编写测试用例

@RestController
public class UserController {

    public static final String URL="http://springcloud-nacos-client-b";
    @Value("${server.port}")
    private String serverPort;
    @Value("${spring.application.name}")
    private String serverName;

    @Autowired
    RestTemplate restTemplate;

    @GetMapping("/getServerInfo/{name}")
    public String getServerInfo(@PathVariable("name")String name){
        String result ="服务名:"+serverName+" 端口:"+serverPort+" 时间戳:"+ DateUtil.now()+"\n";
        if("a".equals(name)){
            return result;
        }else {
            return result+ "实际请求地址:"+restTemplate.getForObject(URL+"/getServerInfo/"+name,String.class);
        }

    }
}

仿照 springcloud-nacos-client-a 创建springcloud-nacos-client-b ,并修改其对应的配置文件和端口号

启动nacos服务,springcloud-nacos-client-a 和springcloud-nacos-client-b

在nacos 的服务列表,我们可以看到我们注册的服务:

服务调用

a 调用 a


a 调用 b


b 调用 a


b 调用 b

项目地址

关于项目的地址,有兴趣的可以自行下载
git@gitee.com:anxc/study-demo-eureka.git

参考文档:

https://nacos.io/zh-cn/docs/quick-start.html

https://www.cnblogs.com/gchh/p/13724416.html
https://www.freesion.com/article/7939864046/
https://www.pianshen.com/article/25711907017/
https://www.pianshen.com/article/2236929088/
https://blog.csdn.net/qq_20667511/article/details/107378047

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Nacos 中的参数有很多,如:命名空间、分组名、服务名、保护阈值、服务路由类型、临时实例等,那这些参数都是什么意思?又该如何设置?接下来我们一起来盘它。 1.命名空间 在 Nacos 中通过命名空间(Namespace)+ 分组(Group)+服务名(Name)可以定位到一个唯一的服务实例。 命名
Nacos 支持两种 HTTP 服务请求,一个是 REST Template,另一个是 Feign Client。之前的文章咱们介绍过 Rest Template 的调用方式,主要是通过 Ribbon(负载均衡) + RestTemplate 实现 HTTP 服务调用的,请求的核心代码是这样的: @
Nacos 是 Spring Cloud Alibaba 中一个重要的组成部分,它提供了两个重要的功能:服务注册与发现和统一的配置中心功能。 服务注册与发现功能解决了微服务集群中,调用者和服务提供者连接管理和请求转发的功能,让程序的开发者无需过多的关注服务提供者的稳定性和健康程度以及调用地址,因为这
Spring Cloud Alibaba 是阿里巴巴提供的一站式微服务开发解决方案,目前已被 Spring Cloud 官方收录。而 Nacos 作为 Spring Cloud Alibaba 的核心组件之一,提供了两个非常重要的功能:服务注册中心(服务注册和发现)功能,和统一配置中心功能。 Nac
在 Nacos 的路由策略中有 3 个比较重要的内容:权重、保护阈值和就近访问。因为这 3 个内容都是彼此独立的,所以今天我们就单独拎出“保护阈值”来详细聊聊。 保护阈值 保护阈值(ProtectThreshold):为了防止因过多实例故障,导致所有流量全部流入剩余健康实例,继而造成流量压力将剩余健
前两天遇到了一个问题,Nacos 中的永久服务删除不了,折腾了一番,最后还是顺利解决了。以下是原因分析和解决方案,建议先收藏,以备不时之需。 临时实例和持久化实例是 Nacos 1.0.0 中新增了一个特性。临时实例和持久化实例最大的区别是健康检查的方式:临时实例使用客户端主动上报的健康检查模式,而
Spring Cloud Alibaba 技术体系中的 Nacos,提供了两个重要的功能:注册中心(服务注册与发现)功能和配置中心功能。 其中注册中心解决了微服务调用中,服务提供者和服务调用者的解耦,让程序开发者可以无需过多的关注服务提供者和调用者的运行细节,只需要通过 Nacos 的注册中心就可以
负载均衡通器常有两种实现手段,一种是服务端负载均衡器,另一种是客户端负载均衡器,而我们今天的主角 Ribbon 就属于后者——客户端负载均衡器。 服务端负载均衡器的问题是,它提供了更强的流量控制权,但无法满足不同的消费者希望使用不同负载均衡策略的需求,而使用不同负载均衡策略的场景确实是存在的,所以客
本篇文章为大家展示了如何解决Spring Cloud 服务冲突问题,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。一、背景...
本篇内容主要讲解“spring cloud服务的注册与发现怎么实现”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“spri...
本篇内容介绍了“Dubbo怎么实现Spring Cloud服务治理 ”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处...
本篇内容主要讲解“SpringCloud相关面试题有哪些”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“SpringCloud相...
如何分析Spring Cloud Ribbon、Spring Cloud Feign以及断路器,相信很多没有经验的人对此束手无策,为此本文总结了问题出现的原因和解决方法,通过这篇文章希
这篇文章主要讲解了“springcloud微服务的组成部分有哪些”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“s...
这篇文章主要讲解了“SpringCloud的OpenFeign项目怎么创建”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习...
本篇内容主要讲解“spring cloud oauth3整合JWT后获取用户信息不全怎么办”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带...
怎样解析微服务架构SpringCloud,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。...
这篇文章主要介绍spring cloud中API网关的示例分析,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!一、服务网关简介1、外观模式客户端...
本篇内容介绍了“Spring Cloud微服务的相关问题有哪些”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处...
本文小编为大家详细介绍“spring cloud config整合gitlab如何搭建分布式的配置中心”,内容详细,步骤清晰,细节处理妥当,希望这篇“spring cloud config整合gi...