当前位置: 首页 > news >正文

微服务SpringCloud Alibaba组件nacos教程(一)【详解naocs基础使用、服务中心配置、集群配置,附有案例+示例代码】

一.Nacos教程

文章目录

  • 一.Nacos教程
    • 1.1 Nacos简介
    • 1.2 nacos基本使用
      • 直接下载打包服务
      • 源码方式启动
    • 1.3 创建nacos客服端
    • 1.4 nacos集群配置
    • 1.5 nacos配置中心

1.1 Nacos简介

nacos是spring cloud alibaba生态中非常重要的一个组件,它有两个作用:

  • 1:注册与发现中心;
  • 2:配置中心

nacos有注册中心的作用,我们常见的配置中心还有zk和eureka

官网:https://nacos.io/zh-cn/index.html

微服务CAP原则:

  • C(consistency):一致性,同一时刻的同一请求的实列返回结果相同,属于强一致性,也就是说,在集群环境中,对外提供的服务的信息是完全一致的,但是在下效率上可能会有一定的损耗。
  • A(availability): 可用性,所有实列的读写请求在一定时间内可以得到正确的响应,它是弱一致性,可能在极短的时间内,不同实列获取到的信息是不一致的。但是服务可用并且最终数据是一致的;
  • P(Partition tolerance): 分区容错性,在网络异常的情况下,仍能够提供正常的响应,这是微服务系统中必要保证的。

在这里插入图片描述

nacos在启动时,默认是AP模式,可以通过指令将nacos变为CP模式,在我们经常使用的微服务中,我们是选择使用AP模式的,此时的所有实例都属于临时实例。临时实例和持久实例最显著的区别就是在健康检查发现服务有问题时,持久实例被标注为不健康,而临时实例会直接剔除。

1.2 nacos基本使用

nacos大体分为两部分:nacos服务端和nacos客户端,首先是nacos服务端 ,这一部分是不需要做任何改动,直接启动服务即可。有两种方式,一种是直接下载打包好的服务,直接通过命令运行即可;一种是下载nacos源码,然后进行启动(nacos是普通的spring boot项目)。

直接下载打包服务

第一步,去nacos官网下载对应环境的服务端项目,下载地址是:Releases · alibaba/nacos ·GitHub,但是需要注意一点,目前在nacos官网(Nacos 快速开始)中,推荐使用的nacos版本是2.0.3

在这里插入图片描述

下载完毕以后进行解压(不要有中文路径),进入到bin目录

在这里插入图片描述

命令启动:

.\startup.cmd -m standalone 后缀standalone指的是以单例的方式进行启动

也可以新建记事本如start.txt,将上述命令复制在记事本中,保存,然后将txt后缀改成.bat后缀。下次启动时直接双击start.bat文件即可。

在这里插入图片描述

在这里插入图片描述

浏览器访问该地址:

在这里插入图片描述

注意:登录账号密码为 nacos/nacos

源码方式启动

略 (繁琐)

1.3 创建nacos客服端

idea创建springboot项目。最外层cloud-alibaba-test02为普通的maven项目,bill-consumer-7790,bill-provider-7780为普通的spring boot项目。(分布式)
在这里插入图片描述

【引入依赖】

在这里插入图片描述

 <spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
</dependency>

【启动类添加注解】

@EnableDiscoveryClient // 开启nacos服务发现功能

【application.yml进行配置】

server:port: 7780spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/smbms?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNullusername: xxxxpassword: xxxxapplication:name: bill-provider #注册中心注册服务名称cloud:nacos:discovery:server-addr: 127.0.0.1:8848
server:port: 7790spring:datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/smbms?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNullusername: xxxxpassword: xxxxapplication:name: bill-consumer #注册中心注册服务名称cloud:nacos:discovery:server-addr: 127.0.0.1:8848

分别启动bill-consumer-7790,bill-provider-7780

在这里插入图片描述

在这里插入图片描述

alibaba与boot对应版本

在这里插入图片描述

1.4 nacos集群配置

Nacos集群默认最小要有三个节点,而且三个节点的配置中心的数据都需要存储在MySQL数据库中。

在MySql数据库中,创建数据库nacos_conf,并在nacos的conf目录下找到nacos-mysql.sql文件导入数据库

在这里插入图片描述

在这里插入图片描述

修改application.properties文件,打开数据库连接并修改连接信息

在这里插入图片描述

在这里插入图片描述

在conf目录下,修改文件名cluster.conf.example为cluster.conf

在这里插入图片描述

编辑cluster.conf文件信息如下: IP(可使用ipconfig查看自己的IP地址)+端口号

在这里插入图片描述

复制nacos文件夹复制两份(nacos最小3个节点)

在这里插入图片描述

修改nacos2.0.3_2端口为8858,修改nacos2.0.3_3端口为8868

依次启动nacos2.0.3_1,nacos2.0.3_2,nacos2.0.3_3

进入bin目录下,双击启动startup.cmd (默认以集群模式启动)

在这里插入图片描述

访问:http://192.168.137.1:8868/nacos/index.html

在这里插入图片描述

启动bill-7780-provider

在这里插入图片描述

在这里插入图片描述

可以看到在8868端口号下,bill-peoviderd服务能注册成功,此时bill-7780-provider对应的端口号的是8848。

在这里插入图片描述

1.5 nacos配置中心

nacos同spring-cloud-config一样,可以作为一个配置中心,统一的来管理配置,可以配置多套环境,各个微服务可以按需到nacos配置中心拉取相关配置,且支持动态刷新@RefreshScope

1.进入nacos控制台创建命名空间

注意:命名空间以后在开发中可以区分为 开发、测试、生产 等环境。

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

2.在cs命名空间下 创建yaml文件

在这里插入图片描述

在这里插入图片描述

然后点击发布,返回。

在这里插入图片描述

在这里插入图片描述

以bill-provider-7781项目演示:(单节点演示)

引入依赖

<!-- nacos配置中心-->
<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
</dependency><!--开启Spring Cloud 应用程序启动时加载bootstrap配置文件--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId><version>3.1.4</version></dependency>

【创建bootstrap.yml】

#读取nacos配置中心文件
server:port: 7781spring:application:name: bill-provider #注册中心注册服务名称profiles:active: devcloud:nacos:discovery:server-addr: 127.0.0.1:8848username: nacospassword: nacosconfig: #配置中心 配置文件server-addr: 127.0.0.1:8848file-extension: ymlgroup: DEFAULT_GROUPnamespace: e301628f-59ab-4c01-b484-f72ca5f567f9

注意: 使用nacos作为配置中心时,需要创建一个bootstrap.yaml

application.yaml两个配置文件,bootstrap.yaml的优先级高于

application.yaml,加载时实现加载bootstrap.yaml中的相关配置

在这里插入图片描述

在这里插入图片描述

测试一:

在这里插入图片描述

运行成功说明服务中心的配置文件读取成功,否则会报数据库连接失败。

测试二:

在这里插入图片描述

在这里插入图片描述

@RestController
@RefreshScope //动态刷新
public class NacosConfigController {@Value("${mysqlname}")private String mysqlname;@RequestMapping("/show")public String show() {return mysqlname;}
}

此时如果将nacos关闭,再启动,命名空间cs会丢失。所以持久化(同集群方式一样)。

在这里插入图片描述


http://www.mrgr.cn/news/90657.html

相关文章:

  • 电脑出现蓝屏英文怎么办?查看修复过程
  • 探索ELK 的魅力
  • 业务开发 | 基础知识 | Maven 快速入门
  • 【利用Deepseek+即梦AI生成海报】
  • FastAPI 请求和响应
  • 讲解下MySql的外连接查询在SpringBoot中的使用情况
  • 【OpenCV】双目相机计算深度图和点云
  • windows10本地的JMeter+Influxdb+Grafana压测性能测试,【亲测,避坑】
  • MySQL、MariaDB 和 TDSQL 的区别
  • dedecms 开放重定向漏洞(附脚本)(CVE-2024-57241)
  • post、get、delete、put请求
  • 如何部署Deepseek-R1:从零开始的完整指南
  • fps武器系统3:发射子弹命中反馈
  • CTF-web:java-h2 堆叠注入rce -- N1ctf Junior EasyDB
  • java八股---java02(面向对象、类、变量、方法、值传递)
  • Jenkins 新建配置Pipeline任务 三
  • 【前端】 react项目使用bootstrap、useRef和useState之间的区别和应用
  • 【AI大模型】Ollama部署本地大模型DeepSeek-R1,交互界面Open-WebUI,RagFlow构建私有知识库
  • 企业级高可用 Kubernetes 实践:基于青云 LB 搭建容灾与负载均衡集群全攻略
  • 伯克利 CS61A 课堂笔记 08 —— Strings and Dictionaries
  • RocketMQ和Kafka如何实现顺序写入和顺序消费?
  • 细说STM32F407单片机RTC入侵检测和时间戳的原理及使用方法
  • 每日一题-斐波那契数列和跳台阶
  • 伯克利 CS61A 课堂笔记 09 —— Data Abstraction
  • mapbox 从入门到精通 - 目录
  • LeapMotion第2代 Unity示范代码(桌面开发)