Nacos笔记

 nacos注册中心:

nacos注册中心得单击非持久化搭建:

  • 单机:指的是 Nacos 运行在单个实例上,通常用于开发和测试环境。
  • 非持久化:表示注册的信息(如服务实例、元数据等)不会被保存在数据库中。Nacos 运行时的数据是在内存中,重启或崩溃后,所有的注册信息将会丢失。

     优点:

  • 简单易用,启动速度快,适合开发测试用。
  • 无需额外配置数据库。

    缺点:

  • 数据不持久化,产品环境不适用,无法保证服务注册信息的持久性和可靠性。

Nacos 快速开始 | Nacos 官网 

官网上有详细步骤:

1:详细上来说就是下载解压压缩包

2:注册服务并用startup.cmd -m standalone命令开启,注意这里开发需要到nacos的bin目录下打开cmd输入startup.cmd -m standalone开启

 3:第三步我们就可以照着这上面的网址进行访问了

进入之后,如果我们有注册方法的话,这里就会有提示。

4:根据Dubbo框架的官方文档来使用nacos注册中心:

使用 Nacos 作为注册中心实现自动服务发现 | Apache Dubbo

总体说起来就是、

引入对应依赖(包括dubbo的依赖和nacos的依赖)

        <dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo</artifactId><version>3.0.9</version></dependency><dependency><groupId>com.alibaba.nacos</groupId><artifactId>nacos-client</artifactId><version>2.1.0</version></dependency>

在配置文件中配置

# 以下配置指定了应用的名称、使用的协议(Dubbo)、注册中心的类型(Nacos)和地址
dubbo:application:# 设置应用的名称name: dubbo-springboot-demo-provider# 指定使用 Dubbo 协议,且端口设置为 -1,表示随机分配可用端口protocol:name: dubboport: -1registry:# 配置注册中心为 Nacos,使用的地址是 nacos://localhost:8848id: nacos-registryaddress: nacos://localhost:8848

这些东西直接复制官网就行。

注意点:

这些配置和依赖在provider引入了,在consumer也需要引入,并且需要保持一致

上面是在本地部署,本地部署相对简单安装一个压缩包,输入命令即可。


nacos注册中心的持久化到 MySQL 模式:

  • 持久化:表示 Nacos 运行时的服务注册信息会保存在 MySQL 数据库中。这意味着即使 Nacos 实例重启或发生故障,注册的信息仍然可以恢复,确保服务的可用性和数据的一致性。

优点

  • 数据持久化,增强了系统的可靠性,适合生产环境。
  • 支持高可用部署,可以通过多个 Nacos 实例搭建集群。

缺点

  • 需要配置和维护 MySQL 数据库,增加了部署成本和复杂性。
  • 启动和初次配置可能会稍显复杂。

在本地的window电脑nacos配置持久化:

在本地的nacos进行持久化

在nacos/conf中有一个mysql-schema.sql这个sql脚本,作用就是利用mysql将nacos进行持久化,直接在本地执行里面的sql脚本,修改conf目录下的application.properties,最后重新启动即可

## If use MySQL as datasource:
## Deprecated configuration property, it is recommended to use `spring.sql.init.platform` replaced.
spring.datasource.platform=mysql
spring.sql.init.platform=mysql## Count of DB:
db.num=1## Connect URL of DB:
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0=root
db.password.0=123456

这一段配置可以直接在 application.properties中修改即可

在nacos中添加配置列表就可以在mysql中看到了

用docker容器的方式拉取nacos并且配置持久化

 1:需要配置mysql的脚本

这个直接在服务器配置好的mysql中执行即可。

这个脚本的位置:就在nacos中的conf中的有一个mysql-schema.sql这个sql脚本,在服务器的mysql执行这个脚本就行

2:创建nacos和mysql的配置文件:

可以新建一个文件夹nacos(这步是可选的,我是为了以后我方便找)

配置文件:

PREFER_HOST_MODE=hostname
MODE=standalone
SPRING_DATASOURCE_PLATFORM=mysql
MYSQL_SERVICE_HOST=自己的服务器ip地址
MYSQL_SERVICE_DB_NAME=nacos
MYSQL_SERVICE_PORT=3307//自己mysql的端口
MYSQL_SERVICE_USER=root
MYSQL_SERVICE_PASSWORD=123
MYSQL_SERVICE_DB_PARAM=characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=Asia/Shanghai

springdatasourceplatform就是指定了数据库的类型,说明nacos可以配置很多不同的数据库

接着往下就是自己的基本信息。

3:拉取镜像:

我这里拉取的是nacos/nacos-server:v2.1.0-slim

docker pull nacos/nacos-server:v2.1.0-slim

执行命令即可 

4:在对应文件目录中创建容器并运行,并访问登录页

这个对应文件目录就是你nacos存放的目录

直接在客户端内cd 到当前目录

并且执行:

docker run -d \
--name nacos \
--env-file ./nacos/custom.env \
-p 8848:8848 \
-p 9848:9848 \
-p 9849:9849 \
--restart=always \
nacos/nacos-server:v2.1.0-slim

注意第三行的 ./nacos/custom.env \

如果你上面没有新建文件夹就修改一下这个路径。

 启动完成后

我们也可以docker ps看一下

下一步需要注意

就是我用的是腾讯云的服务器

如果你装的是虚拟机那可以不用

如果是服务器,还要到外层去开一下对应的端口

需要开的端口有三个:

8848:这是 Nacos 的默认 HTTP 端口,用于提供 Nacos 的 Web 界面和服务 API

9848:这个端口是 Nacos 的 若干功能服务的卸载装载

9849:这个端口通常用于 Nacos 的 gRPC 相关服务

要不然服务器无法访问登录页

开放了端口之后就可以访问登录页了

账号和密码初始化都是nacos:

这样就配置好了

nacos的配置管理的功能:

我们可以把微服务共享的配置抽取到Nacos中统一管理,这样就不需要每个微服务都重复配置了。分为两步:

配置共享:
添加配置共享:

我们先看有那些配置是一个共享抽象的:

spring:application:name: user-serviceprofiles:active: devdatasource:url: jdbc:mysql://ip地址:3307/hm-user?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghaidriver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: 123cloud:nacos:server-addr: IP地址:8848 # nacos地址
mybatis-plus:configuration:default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandlerglobal-config:db-config:update-strategy: not_nullid-type: auto
logging:level:com.hmall: debugpattern:dateformat: HH:mm:ss:SSSfile:path: "logs/${spring.application.name}"
knife4j:enable: trueopenapi:title: 黑马商城用户接口文档description: "黑马商城用户接口文档"email: zhanghuyi@itcast.cnconcat: 虎哥url: https://www.itcast.cnversion: v1.0.0group:default:group-name: defaultapi-rule: packageapi-rule-resources:- com.hmall.userservice.controller

三个部分:

数据库jdbc,日志swagger和openfeign配置

spring:datasource:url: jdbc:mysql://${hm.db.host:IP地址}:${hm.db.port:3307}/${hm.db.database}?useUnicode=true&characterEncoding=UTF-8&autoReconnect=true&serverTimezone=Asia/Shanghaidriver-class-name: com.mysql.cj.jdbc.Driverusername: rootpassword: ${hm.db.pw}
mybatis-plus:configuration:default-enum-type-handler: com.baomidou.mybatisplus.core.handlers.MybatisEnumTypeHandlerglobal-config:db-config:update-strategy: not_nullid-type: auto

 只要上面不确定的都可以用占位符,后面再进行读取

日志配置
logging:level:com.hmall: debugpattern:dateformat: HH:mm:ss:SSSfile:path: "logs/${spring.application.name}"
knife4j配置
knife4j:enable: trueopenapi:title: ${hm.swagger.title:黑马商城购物车接口文档}description: ${hm.swagger.desc:黑马商城购物车接口文档}email: zhanghuyi@itcast.cnconcat: 虎哥url: https://www.itcast.cnversion: v1.0.0group:default:group-name: defaultapi-rule: packageapi-rule-resources:- ${hm.swagger.package}
拉取共享配置:

在拉取之前,我们需要先来明白一下项目启动的流程:

首先之前我们的springboot项目,先加载配置文件,再初始化bean

不过现在是springcloud的项目了,项目整体的启动流程变了

需要先读取bootstrap.yaml文件里面的配置

再去拉取nacos注册中心中的配置,然后才是springboot的项目启动一样

我们由上面的项目启动过程可知,

我们需要一个bootstrap配置文件

再此之前,我们先引入两个依赖:

  <!--nacos配置管理--><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!--读取bootstrap文件--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency>
这里其实有个小坑: 

我之前搞这段配置的时候是直接黑马商城这个项目的,里面直接已经配置好了org.springframework.cloud的依赖,但是我oj项目是用springcloud alibaba的脚手架,这里没有帮我们引入这个依赖,直到后面mvn clean的时候才找出问题。

所以我们需要在这个脚手架创建出的项目的父工程中引入一下依赖:

<properties><spring-cloud.version>2021.0.3</spring-cloud.version></properties>
<dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

 在resources目录下新建一个配置文件

spring:application:name: cart-service # 服务名称profiles:active: devcloud:nacos:server-addr: IP地址 # nacos地址config:file-extension: yaml # 文件后缀名shared-configs: # 共享配置- dataId: shared-jdbc.yaml # 共享mybatis配置- dataId: shared-log.yaml # 共享日志配置- dataId: shared-swagger.yaml # 共享日志配置

这里面对应的配置名一定要对上就行

有了这个bootstrap配置文件之后,我们就可以简化application.yamll里面的属性了

server:port: 8082
feign:okhttp:enabled: true # 开启OKHttp连接池支持
hm:swagger:title: 购物车服务接口文档package: com.hmall.cart.controllerdb:database: hm-cart

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1547279.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

Python 从入门到实战29(目录的操作)

我们的目标是&#xff1a;通过这一套资料学习下来&#xff0c;通过熟练掌握python基础&#xff0c;然后结合经典实例、实践相结合&#xff0c;使我们完全掌握python&#xff0c;并做到独立完成项目开发的能力。 上篇文章我们讨论了文件的打开、创建、关闭、读取的相关知识。今天…

智慧政务助力实现服务民生新突破

在数字化转型的浪潮中&#xff0c;中国移动紧密结合人工智能&#xff08;AI&#xff09;技术&#xff0c;推动政务服务的智能化升级。近日&#xff0c;中国移动正式发布政务大模型3.0版本&#xff0c;以科技创新提升政务效率&#xff0c;实现服务民生的新突破。 为什么…

从0到1训练私有大模型技能与应用实现

1.背景 近期&#xff0c;GPT大模型的发布给自然语言处理&#xff08;NLP&#xff09;领域带来了令人震撼的体验。随着这一事件的发生&#xff0c;一系列开源大模型也迅速崛起。依据一些评估机构的评估&#xff0c;这些开源模型大模型的表现也相当不错。一些大模型的评测情况可…

关于Pencils Protocol 近期市场活动,通读这篇就够!

Pencils Protocol是Scroll上综合性的DeFi协议&#xff0c;自9月18日开始其陆续在Tokensoft、Bounce、Coresky等平台开启DAPP通证的销售&#xff0c;并分别在短期内完成售罄。吸引了来自韩国、CIS、土耳其等70多个国家的5万多名认证用户&#xff0c;反响热烈&#xff0c; Pencil…

VMware搭建DVWA靶场

目录 1.安装phpstudy 2.搭建DVWA 本次搭建基于VMware16的win7系统 1.安装phpstudy 下载windows版本&#xff1a;小皮面板-好用、安全、稳定的Linux服务器面板&#xff01; 安装后先开启mysql再开启apache&#xff0c;遇到mysql启动不了的情况&#xff0c;最后重装了phpstud…

一窥AI大模型奥秘:技术前沿与产业应用双轮驱动

在科技日新月异的今天&#xff0c;人工智能&#xff08;AI&#xff09;正以前所未有的速度重塑着我们的生活与工作方式。其中&#xff0c;AI大模型作为技术的最前沿&#xff0c;不仅引领着技术体系的革新&#xff0c;更是产业实践与未来趋势的关键所在。 近期&#xff0c;有幸…

YOLOv8+注意力机制+PyQt5玉米病害检测系统完整资源集合

资源包含可视化的玉米病害检测系统&#xff0c;基于最新的YOLOv8注意力机制训练的玉米病害检测模型&#xff0c;和基于PyQt5制作的可视玉米病害系统&#xff0c;包含登陆页面和检测页面&#xff0c;该系统可自动检测和识别图片或视频当中出现的七类玉米病害&#xff1a;矮花叶病…

Linux防火墙-什么是防火墙

作者介绍&#xff1a;简历上没有一个精通的运维工程师。希望大家多多关注作者&#xff0c;下面的思维导图也是预计更新的内容和当前进度(不定时更新)。 什么是防火墙 我们想象一下把每台服务器当成一个小区&#xff0c;我们去访问另外一个小区的朋友&#xff0c;我们需要经过什…

黑马头条day4 自媒体文章自动审核

阿里云内容安全调用 其实这个接口调用不是很难 但是需要花钱 就没买 我开了按量计费 但是还是不行 所以就没测试 于是尝试自己写返回成功值 效果不好 后来发现不如直接在函数里边取消调用文字和图片审核 这样更简单 远程调用与降级处理 这里有个bug调试了好久 第一个就是总…

Cannon-es.js物理引擎中物体动力控制的深度探索

本文目录 前言1、cannon-es给物体施加力1.1 前置代码1.2 效果1.3 给小球施加力1. applyForce效果 2. applyImpulse效果 3. applyLocalImpulse效果 4. applyTorque效果 区别总结 前言 在三维物理引擎的世界里&#xff0c;Cannon-ES以其轻量级和高效能著称&#xff0c;为开发者提…

使用docker形式部署prometheus+alertmanager+钉钉告警

一、拉取所需要的镜像 docker pull prom/node-exporter docker pull grafana/grafana docker pull prom/prometheus docker pull prom/alertmanager 其中 prom/node-exporter&#xff1a;用于收集主机系统信息和指标的 grafana/grafana&#xff1a;是一个用于可视化和分…

NRF21540—低功耗蓝牙,蓝牙mesh、Thread和Zigbee和2.4 GHz私有协议范围扩展射频前端模块

nRF21540是一款射频前端模块(FEM)&#xff0c;可用于改善短距离无线产品的传输范围和连接鲁棒性。作为一款辅助性设备&#xff0c;nRF21540是一种“即插即用型”的无线传输范围扩展器&#xff0c;可与nRF52和nRF53系列的高级多协议无线SoC搭配使用&#xff0c;所需的外部器件数…

11. Map和Set

一、二叉搜索树 1. 概念 二叉搜索树又称二叉排序树&#xff0c;它或者是一棵空树&#xff0c;或者是具有以下性质的二叉树&#xff1a; 若它的左子树不为空&#xff0c;则左子树上所有节点的值都小于根节点的值若它的右子树不为空&#xff0c;则右子树上所有节点的值都大于根…

解析 Pencils Protocol 价值逻辑,$DAPP为何是本轮的Alpha资产?

本轮市场周期中&#xff0c;DeFi市场已经长期处于边缘位置&#xff0c;老牌蓝筹DeFi通证仍旧能维持高市值但币价增长&#xff0c;而很多新生代DeFi项目创新不足难以推动叙事的发展&#xff0c;面向市场后难有亮眼表现&#xff0c;DeFi市场再难寻Alpha投资机会。 而随着Pencils …

C语言指针系列1——初识指针

祛魅&#xff1a;其实指针这块儿并不难&#xff0c;有人说难只是因为基础到进阶没有处理好&#xff0c;大家要好好跟着一步一步学习&#xff0c;今天我们先来认识一下指针 指针定义&#xff1a;指针就是内存地址&#xff0c;指针变量是用来存放内存地址的变量&#xff0c;在同一…

在Windows系统上安装的 Boost C++ 库

步骤一 https://www.boost.org/users/history/version_1_86_0.html 下载Boost库文件: 步骤二 安装: https://www.boost.org/doc/libs/1_52_0/doc/html/bbv2/installation.html 点击运行.\bootstrap.bat脚本在当前目录的powershell中执行:./b2 install --prefixPREFIX 然后…

【必看】2024国赛选题分布情况分析及数模国赛答辩指南~答辩不走弯路

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑ 紧张刺激的数模国赛已经过去一段时间&#xff0c;各赛区的成绩发布也在陆续进…

springboot+satoken实现刷新token(值变化)

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 &#x1f38f;&#xff1a;你只管努力&#xff0c;剩下的交给时间 &#x1f3e0; &#xff1a;小破站 springbootsatoken实现刷新token satoken是什么&#xff1f;支持什么&#xff1f;为什么需要&…

内网穿透的应用-Windows系统安装SeaFile并实现远程访问本地共享文件资料详细教程

文章目录 1. 前言2. SeaFile云盘设置2.1 Owncould的安装环境设置2.2 SeaFile下载安装2.3 SeaFile的配置 3. cpolar内网穿透3.1 下载安装3.2 Cpolar注册3.3 Cpolar云端设置3.4 Cpolar本地设置 4.公网访问测试5.结语 1. 前言 本文主要为大家介绍&#xff0c;如何使用两个简单软件…

【Kotlin 集合概述】可变参数vararg、中缀函数infix以及解构声明(二十)

导读大纲 1.1 使用集合: vararg、infix 调用和解构声明1.1.1 扩展 Java 集合 API1.1.2 vararg: 接受任意数量参数的函数1.1.3 处理pairs: Infix 调用和解构声明 1.1 使用集合: vararg、infix 调用和解构声明 本节将介绍 Kotlin 标准库中用于处理集合的一些函数 同时,还介绍一些…