Nacos 入门篇(一)

一、引言

  今天来学习下微服务必会的注册中心Nacos~

二、目录

目录

一、引言

二、目录

三、Nacos 介绍

四、Nacos 单机搭建

五、Nacos 集群搭建 

六、Nacos 注册服务 

七、Nacos 配置中心服务 

本章小节​​​​​​​


三、Nacos 介绍

          在早期Spring Cloud开始流行的时候,Eureka使用的比较广泛,后来这个项目在2018年7月的时候,官方就宣布Eureka 2.0不再维护了。

再后来阿里推出了全新的 Spring Cloud Alibaba 系列,nacos 就是其中的一员。

接下来就跟小编一起来了解下:

nacos官方地址:Nacos官网 | Nacos 官方社区 | Nacos 下载 | Nacos 

从官方首页nacos我们能发现三个关键词:

动态服务发现: 动态服务发现很好理解,就是新增或者下线微服务实例,nacos能感知到。这也是作为注册中心最基本的功能。

配置管理: 就是将项目中的微服务配置文件(properties、yml)放在nacos配置管理中进行统一的管理。它还是动态化的,那什么是动态化的呢?就是微服务的配置文件(properties、yml)修改后不需要重启服务就能生效。

服务管理平台: Naocs提供了一套web管理平台,在这个后台当中,我们可以监控整个服务的运行状态和配置管理进行操作。

接着我们来看下Nacos的文档中的架构图: 

从上图我们可以得到信息:Provider(服务提供者)、Consumer(消费者)。都需要借助于 Name(服务名称、服务地址),这是最外层。

Provider、Consumer 都是需要依赖 Nacos Server。

接着往下看,Nacos Server 的最上层,有一层OpenAPI,这是对外提供服务的,接着我们往下看都提供了哪些服务 ?

  • Config Service: 注册服务,我们微服务的实例的注册、销毁、服务管理都是在这一块进行实现的。
  • Naming Service: 配置服务,它在微服务架构中,提供了统一配置中心管理的功能。Nacos 配置中心为服务提供了编辑、存储、分发、变更的管理、历史版本管理等功能。并且支持在实例中运行,更改配置。

初次之外,Naming Service 、Config Service 都是依赖于 Nacos Core核心来实现的。

至于Nacos Console 是nacos的web管理平台,也是依赖于Nacos Server 中的OpenAP提供的I接口进行扩展的功能。

四、Nacos 单机搭建

光说不练假把式,简单了解完nacos,我们来搭建个单机模式,上手试一试~

搭建环境:Nacos1.4.1版本,系统用的是CentOS 7,安装好 JDK 1.8 版本或以上,安装 Maven 3.2+ 版本,建议 2 核 CPU/4G 内存及其以上

Nacos 搭建核心文件 Nacos-server.1.4.1.zip 给同学们准备好了,把文件下载后,解压上传到 CentOS 系统对应目录位置即可。

百度网盘 请输入提取码

提取码:69S9

单机启动nacos 命令:bin/startup.sh -m standalone (看到nacos is starting 表示nacos 运行成功!)

访问成功:

地址:http://ip:8848/nacos

nacos默认账号密码都是:nacos

nacos 停止命令:bin/shutdown.sh,如下图:

注意:在这里提醒一点,Nacos 建议在内部隔离网络环境中部署,强烈建议不要部署在公共网络环境中。Nacos 属于微服务内部所使用的组件,是没有必要暴露在公网当中。

五、Nacos 集群搭建 

在生产环境当中,我们的nacos不可能单机使用,要保证高可用,就得使用到Nacos的集群。

这种架构,官方称之为 “ 域名 + SLB 模式 ” ,其优点可读性好,而且换 IP 方便。

不管是访问Nacos后台、还是微服务集成Nacos实例进行访问,所使用的地址都是域名,这样的好处就是,哪怕域名后面的IP进行变动了,对于客户都是无感的。

域名是直接解析到负载均衡上,再由负载均衡选择具体 Nacos 实例来进行访问,这种架构也是 Nacos 官方推荐集群模式。

ok,简单了解完Nacos的集群架构模式后,我们来简单上手操作一下~

准备环境:

准备一个可用的Mysql数据库,因为在Nacos集群下,每一个Nacos实例用的都是同一个Mysql数据库。(数据的持久化是需要公用的)

准备好了mysql的库,这时候把nacos的相关表导入进来就行。nacos的表结构在 nacos-server-1.4.1.zip 文件中的 conf目录下nacos-mysql.sql文件中。

结果如图下:

三步法搭建Nacos集群 

本次集群搭建,按理来说应该准备三台服务器,分别部署一个Nacos。

我们这里为了方便演示,就在一台机器上部署三个Nacos,把 nacos-server-1.4.1.zip 文件解压后放到Linux对应的目录,复制三份,

改一下端口号就好了。如下图:

第一步:修改Mysql的配置信息

修改nacos目录下的conf文件夹,修改 application.properties 配置信息

  • spring.datasource.platform=mysql 前面的 #去掉,默认是注释掉的
  • db.num=1 前面的 #去掉,默认是注释掉的
  • 把自己的mysql的连接信息配置上去

注意:如果跟我一样都是在同一台服务器上部署的话,记得把端口号也改下

第二步:修改配置集群信息

这一步骤的话就是告诉nacos每一个nacos所在的服务器ip节点。

首先的话我们先找到nacos目录下的conf文件,把 cluster.conf.example 文件改为 cluster.conf文件。然后更改nacos节点信息,如下图:

第三步:修改集群内存大小

这一步骤的话,我们修改nacos集群的内存大小,因为集群启动是很占用内存的,如果内存够大可忽略这一步。我这里是放在同一台服务器上的,内存有点顶不住。这里我把内存调小一点,nacos目录下的bin/startup.sh 当中。

修改前:

改为:

JAVA_OPT="${JAVA_OPT} -server -Xms64m -Xmx64m -Xmn32m -XX:MetaspaceSize=128m -XX:MaxMetaspaceSize=320m"

启动集群

把三台Nacos节点都启动起来,启动命令:

bin/startup.sh

节点启动成功,如下图:

六、Nacos 注册服务 

假设现在有两个springboot项目,一个订单服务,一个库存服务,如下图:

项目示例:链接: 百度网盘 请输入提取码 提取码: 69S9

需求分析: 

现在项目经理有个需求,需要订单服务查询的时候,先去库存服务查询存不存在。

按照我们之前的方式,简单粗暴。直接使用 HttpUtils 工具类调用库存服务查询接口即可。但现在我们是 微服务项目就不能这么做了。

就好比:XX租房,房东需要找到中介,登记房屋信息。然后房客也需要找到中介匹配合适的房源。

如上图:库存服务和订单服务都把(ip+port)注册到nacos当中,订单服务需要调用库存服务的时候,直接从nacos当中获取对应的信息(ip+port)即可。

实战

1、导入maven依赖

<!--nacos 服务注册-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

2、配置yml文件

spring:
  application:
    name: stock-service
  cloud:
    nacos:
      # 服务注册
      discovery:
        server-addr: http://127.0.0.1:8848

完成上面的配置,成功启动项目,我们查看下Nacos web管理平台,发现stock-service服务已经注册进去了:

对应的服务ip和端口信息也能看到:

重复上面的操作,把订单服务也注册进去:

然后这个时候,订单服务和库存服务都注册到nacos当中了,我们就可以使用 Feign 进行调用了。

@Component
@FeignClient(name = "stock-service")
public interface StockFeign {

    /**
     * 查询库存是否存在
     * @param id
     * @return
     */
    @RequestMapping(value = "stock/get")
    String stockById(@RequestParam("id") Integer id);

}

最后结果图,请求订单服务的地址,通过集成Nacos服务,从而以微服务(Feign)的形式,去请求库存服务的查询接口,拿到结果。

七、Nacos 配置中心服务 

Nacos 相比其他注册中心,多了一个核心的功能,那就是 配置服务

配置服务:可以把微服务的配置文件进行统一的管理,并且修改不需要重启服务,就能够生效。

接下来我们上手操作一波~

分为四步:

第一步:在Nacos管理中心创建对应的配置文件

1、如下图操作进行新建文件

2、按照下图进行创建一个配置文件

第二步:导入Nacos配置中心的Maven依赖

<!--nacos 配置中心-->
<dependency>
    <groupId>com.alibaba.cloud</groupId>
    <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency>

第三步:修改配置文件名

把配置文件名改为 bootstrap.yml,默认的是 application.yml

第四步:配置yml文件

spring:
  application:
    name: stock-service
  cloud:
    nacos:
      # 配置中心
      config:
        # 配置地址
        server-addr: http://127.0.0.1:8848
        # 配置文件名(注意: 和Nacos web管理平台上新建的文件名称保持一致)
        prefix: stock-service
        # 配置文件的类型
        file-extension: yml

配置中心演示

按照上面的步骤,我们已经配置好了。现在我们在 stock-service 服务当中新建一个 User的实体类,进行测试一下。

@Value注解是从配置文件读取对应的配置信息,@RefreshScope 是实现nacos 动态刷新的注解

/**
 * @Author WangYan
 * @Date 2024/2/23 16:13
 * @Version 1.0
 */
@Data
@Component
@RefreshScope
public class User {

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

现在我写给Controller请求接口测试一下,原本的 userName是王武,现在我们在Nacos web管理平台中,配置管理里的stock-service进行修改,userName改为赵四,试一下:

请求接口调用一下:

没有重启项目,配置yml就生效了!

本章小节

1、Nacos入门介绍了,看了架构图,从中知道了Nacos的两大核心,Config Service(配置服务)和 Naming Service(注册服务)

2、对 Nacos1.4.1版本 在Centos7的系统上搭建了单机版、集群版

3、Springboot集成Config Service(配置服务)和 Naming Service(注册服务),项目实战演示。

  • 19
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论
要解决Nacos安装一闪的问题,首先需要检查以下几个方面: 1. 确保已经正确下载Nacos的最新版本。可以在GitHub上找到下载地址,选择适合的版本进行下载。 2. 确保已经正确配置负载均衡器。可以使用nginx作为负载均衡器,确保已经正确配置了3个Nacos节点的代理。 3. 检查启动文件的配置。当在windows本机上搭建3台Nacos集群时,启动文件startup.cmd中的配置可能需要进行修改。例如,在68行可能需要设置合适的JVM参数,如-Xms和-Xmx的内存大小。确保启动文件的配置与本地环境匹配。 如果问题仍然存在,可以尝试以下步骤: 1. 检查系统日志。查看系统日志以获取更多关于闪退的详细信息,这有助于确定问题的原因。 2. 检查端口是否被占用。确保每个Nacos节点使用不同的端口号,并确保这些端口没有被其他应用程序占用。 3. 检查系统依赖项。确保系统中已经安装了Nacos所需的所有依赖项,如Java等。 4. 尝试使用不同的启动方式。除了使用startup.cmd启动文件启动Nacos之外,还可以尝试使用其他启动方式,如命令行或者IDE来启动Nacos,以了解是否存在特定的问题。 总结来说,如果Nacos安装一闪,需要检查下载版本、负载均衡器配置、启动文件配置以及系统日志等方面来定位问题的原因,并进行相应的调整和排查。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *2* *3* [解决nacos集群启动一闪而过的问题&nacos集群搭建](https://blog.csdn.net/fengxiandada/article/details/124779618)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 100%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

逸航不吃瓜

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值