首页 > 其他分享 >nacos配置使用

nacos配置使用

时间:2023-03-31 16:34:21浏览次数:48  
标签:服务 配置 Nacos nacos yaml 注册 使用

一、什么是nacos?

Nacos 是构建以“服务”为中心的现代应用架构 (例如微服务范式、云原生范式) 的服务基础设施。

二、Nacos可以做什么?

  • 1、动态配置服务:支持以中心化、外部化和动态化的方式管理所有环境的配置。动态配置消除了配置变更时重新部署应用和服务的需要。配置中心化管理让实现无状态服务更简单,也让按需弹性扩展服务更容易。

  • 2、服务发现及管理:支持DNS-Based和RPC-Based(Dubbo、gRPC)模式的服务发现,同时提供实时健康检查,以防止将请求发往不健康的主机或服务实例。借助Nacos,可以更容易地为服务实现断路器。 3、动态DNS服务:通过支持权重路由,轻松实现中间层负载均衡、更灵活的路由策略、流量控制及简单数据中心内网的简单DNS解析服务。更加容易地实现以DNS协议为基础的服务发现,以消除耦合到厂商私有服务发现API上的风险。

三、安装Nacos环境

Nacos的环境安装非常简单,首先从 GitHub 上 checkout 源码,编译获取安装包,命令如下:

mvn -Prelease-nacos clean install -U

在Windows系统下,可以取target下的nacos-server-0.8.0.zip包(当然也可以从Github上直接下载安装包),将其解压到任意目录下。

注意:所解压目录的文件路径不能包含空格,例如:D:/Program Files/Nacos,否则在启动Nacos Server时,会提示错误:找不到或无法加载主类 Files/Nacos/bin/Files/Nacos/plugins/cmdb

解压后,进入bin目录,双击startup.cmd,此时,Nacos Server就开始启动了。

在启动界面中,可以看到Nacos的版本、运行模式、端口号、进程号、Console等信息,其中Console:http://xxx:xx/nacos/index.html的地址就是Nacos的控制台,可以直接在浏览器访问:

Nacos控制台的默认账号密码为:nacos/nacos
登录后可以看到如下界面,在控制台可以进行配置和服务的管理。

四、nacos注册中心

什么是注册中心:

注册中心是微服务架构中的纽带,类似于“通讯录”,它记录了服务和服务地址的映射关系。在分布式架构中,服务会注册到这里,当服务需要调用其它服务时,就到这里找到服务的地址并进行调用。注册中心本质上是为了解耦服务提供者和服务消费者。对于任何一个微服务,原则上都应存在或者支持多个提供者,这是由微服务的分布式属性决定的,更进一步,为了支持弹性扩缩容特性,一个微服务的提供者的数量和分布往往是动态变化的,也是无法预先确定的。因此,原本在单体应用阶段常用的静态LB机制就不再适用了,需要引入额外的组件来管理微服务提供者的注册与发现,而这个组件就是服务注册中心。

注册中心的核心功能:

  • 服务注册:服务实例将自身服务信息注册到注册中心
  • 服务发现:服务实例通过注册中心,获取到注册到其中的服务实例的信息,通过这些信息去请求它们提供的服务
  • 服务剔除:服务注册中心将出问题的服务自动剔除到可用列表之外,使其不会被调用到

为了帮大家快速理解其概念,这里用一个通俗的案例:

小明和小新住在同一家沃尔玛超市附近,他俩都办了会员,经常关注超市的一些优惠活动,元宵节快到了,沃尔玛准备搞一个元宵节特惠活动,需要通知到附近的住户。对于沃尔玛来说,可以安排工作人员电话通知到小明和小新;而对于小明和小新来说,可以去超市咨询相关信息。

那么问题来了,住在超市附近的,不只有小明和小新两个消费者,如果每个人都打电话去通知就显得太麻烦了,小明和小新提前在超市了解了相关信息,可是不巧的是,由于各种原因,沃尔玛元宵特惠活动要从上午改到下午才开始,他们又该从何得知呢?

其实,沃尔玛关心的是通知能不能传达到附近的住户,小明和小新关心的是沃尔玛优惠活动的详情动态。沃尔玛不必给每个住户挨个电话通知,它只需要在它的微信公众号上推送一条消息即可,小明和小新也不用去超市咨询,只要随时关注沃尔玛公众号的推送消息即可。

在上面这个例子中,沃尔玛就是服务提供者,小明和小新是服务消费者,微信公众号类似于注册中心,沃尔玛将“服务”发布到注册中心,小明和小新作为消费者,订阅注册中心上沃尔玛提供的“服务”,通过微信公众号,沃尔玛(服务方)和小明、小新(消费方)就“解耦”了。

在现有的技术方案中,注册中心主要分为两类,一类是CP类注册中心,另一类是AP类注册中心,Nacos属于后者,为什么会有 CP 和 AP 两种不同类型的注册中心呢?这就不得不提到分布式的一个理论:CAP理论。它是由加州大学的计算机科学家 Eric Brewer 提出,在一个分布式系统中,Consistency(一致性)、Availability(可用性)、Partition tolerance(分区容错性)无法同时满足,正所谓“鱼和熊掌与虾不可兼得也”。

CP类注册中心更强调一致性,而AP类注册中心更强调可用性,它们之间的区别,推荐阅读阿里中间件博客的文章:《阿里巴巴为什么不用 ZooKeeper 做服务发现?》。如果你看完文章后,得到的结论是以后再也不把 Dubbo 和 Zookeeper 结合起来使用了,那么你便错了。因为,对于绝大多数公司的绝大多数系统,无论是 Dubbo + Zookeeper,还是 Dubbo + Nacos,都能够满足需求,有的公司甚至都不需要使用Dubbo,所以,一定要结合实际的业务场景来分析判断。

五、Nacos在Spring Boot中配置

引入SpringcloudAlibaba依赖

	<!-- 注册中心 -->
        <dependency>
            <groupId>com.alibaba.cloud</groupId>
            <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
            <version>2.1.1.RELEASE</version>
        </dependency>

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

创建一个bootstrap.yaml文件

在配置文件中填写nacos信息

spring:
  application:
    name: xx-xxx-service # 应用名称
  profiles:
    active: local
  cloud:
    nacos:
      server-addr: 127.0.0.1:8008 #这里填写注册服务地址
      config:
        # prefix
        file-extension: yaml
        prefix: common
        # ext配置 refresh: true支持动态刷新,各专业分别增加需要的xxx.
        ext-config:
          - data-id: xx.yaml # 配置名称
            refresh: false # 是否实时刷新
          - data-id: xx.yaml
            refresh: false
          - data-id: xx.yaml
            refresh: true
          - data-id: xx.yaml
            refresh: true
          - data-id: xx.yaml
            refresh: true
          - data-id: xx.yaml
            refresh: true
          - data-id: xx.yaml
            refresh: true
        enabled: true # 是否使用

在配置文件

在bootstrap.yaml中读取所配置的值

在自己的项目文件中如下注解

我们在开发当中,经常会有开发,生产,测试不同的环境,那么我们命名空间新建命名空间,分别取prod,dev,test就可以了。

再在bootstrap.yaml文件中设置

spring.cloud.nacos.config.namespace=9de62e44-cd2a-4a82-bf5c-95878bd5e871

其中的Id为配置空间

其中的每一个配置可以用在不同的空间,相当于空间是一个数据集,只是用在不同的服务中,也可以分组区别。

这样可以做到每个微服务,每个环境下的配置文件,还可以把不同配置类型的文件分开,比如数据库配置,mybatis配置,其他配置,项目配置nacos地址,连接不上时会默认到本地去找


原文地址:https://blog.csdn.net/qq_38784203/article/details/121658730

标签:服务,配置,Nacos,nacos,yaml,注册,使用
From: https://www.cnblogs.com/2393920029-qq/p/17276592.html

相关文章

  • Mac 上启动nacos 出现异常java.lang.IllegalArgumentException: the length of secret
    这个异常提示是因为Nacos的配置中加密相关的参数未正确填写所导致的。我们只需要找到nacos/conf/application.properties文件,然后给nacos.core.auth.plugin.nacos.token.secret.key这个属性配置一个大于32位的随机字符串即可这个字符串大家可以在jwt的官网去生成:https://jwt.......
  • webpack的基本使用(十)@ 表示路径
      使用@的目的是不想用./。用./可读性很差,用@可以更好。......
  • 地图:leaflet基本使用
    leaflet:一个开源并且对移动端友好的交互式地图JavaScript库中文文档:https://leafletjs.cn/reference.html官网(英文):https://iclient.supermap.io/examples/leaflet/examples.html#iServer该项目基于vue3+ts搭建项目地址gitee:https://gitee.com/philippines-kisses-snow/leaf......
  • 如何实现根据环境切换不同配置?
    首发于公众号:BiggerBoy前言在企业开发中,系统的配置信息往往会分不同的环境,如开发环境、测试环境、生产环境。当我们使用nacos作为配置中心时,一定会遇到的问题就是在应用中配置nacos的server-addr时测试环境的nacos地址和线上nacos地址如何区分的问题拿开发环境和正式环境来说......
  • Less.html基本使用
    背景:做一件代发业务的时候,订单中的产品描述含有大量广告,公司业务需要动态添加/删除指定的数据参考文档:Less.Html1.找出描述中含有多个的数据Dictionary<string,string>keyValues=newDictionary<string,string>();foreach(DataRowdataRowindataRowCollection){......
  • gulp笔记 2 (进阶一点点:使用bower来管理前端依赖)
    其实gulp比例1中的内容已经基本满足开发要求了。此文为进阶的一点点知识#1 安装bower(bower是个纯web前端依赖管理工具。)   npminstall-gbower #版本为1.8.14,必须安装在全局   bowerinit#会生成一个bower.json文件,选项寂寞默认就行,bower的库户自动放到bowe......
  • @RequestBody使用与否的差别
    ......
  • 使用zip命令删除压缩包中的某个文件?(不解压),向压缩包增加文件?
    1、删除压缩包中的文件 如何在不解压压缩包的情况下,删除压缩包中的某个文件? 下面通过一个例子,说明整个过程... 现在,在环境中存在一个压缩包(war)[root@nccztsjb-node-01tmp0]#ls-ltrtotal421448-rw-r--r--1rootroot431560771Mar3113:50ROOT.war[root@nc......
  • vue3 - 在单独的项目制作自定义组件插件,支持vite【前提不要使用webpack专属语法】
    1.背景与vue2组件不一样,没有那么随意,如果想要支持vite,那么不要使用webpack专属语法,如defide和 require等2.解决在 package.json文件属性  main配置为插件入口文件位置,至于是js还是ts随意 目录  简单做了个组件  入口文件内容如下importComponentf......
  • 使用SpringBoot异步方法优化报销单查询接口,提高接口响应速度
    合理使用异步方法可以提高接口性能。异步方法适用于逻辑与逻辑之间可以相互分割互不影响的业务中。SpringBoot支持异步方法调用。具体用法:在启动类添加@EnableAsync注解,声明开启异步方法在异步方法添加@Async注解,被@Async注解修改的方法由SpringBoot默认线程池(SimpleAsyncTas......