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

微服务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: 7780

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/smbms?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
    username: xxxx
    password: xxxx
  application:
    name: bill-provider #注册中心注册服务名称
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
server:
  port: 7790

spring:
  datasource:
    driver-class-name: com.mysql.cj.jdbc.Driver
    url: jdbc:mysql://localhost:3306/smbms?useUnicode=true&characterEncoding=utf-8&zeroDateTimeBehavior=convertToNull
    username: xxxx
    password: xxxx
  application:
    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: 7781

spring:
  application:
    name: bill-provider #注册中心注册服务名称
  profiles:
    active: dev
  cloud:
    nacos:
      discovery:
        server-addr: 127.0.0.1:8848
        username: nacos
        password: nacos
      config: #配置中心 配置文件
        server-addr: 127.0.0.1:8848
        file-extension: yml
        group: DEFAULT_GROUP
        namespace: 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.kler.cn/a/544199.html

相关文章:

  • 全面解析鸿蒙(HarmonyOS)开发:从入门到实战,构建万物互联新时代
  • Python:凯撒密码
  • AWTK fscript 中的 TCP/UDP 客户端扩展函数
  • Baumer工业相机堡盟工业相机如何实现一次图像采集同时检测产品的5个面甚至多个面(C#)(NEOAPI SDK)
  • 1.【线性代数】——方程组的几何解释
  • 为什么推荐使用 LabVIEW 开发
  • 网络分析仪如何看驻波
  • Datawhale Ollama教程笔记2
  • JVM的类加载器
  • Unity中Timeline和Cinemachine制作2D动画:镜头篇
  • 幂等性解决方案(消息队列例子)
  • Python爬虫:高效获取1688商品详情的实战指南
  • vue3: const一个function怎么写呢?
  • Mysql优化的查询语句(1)
  • 路由过滤方法与常用工具
  • DeepSeek是如何通过“蒸馏”技术打造自己的AI模型
  • React中PureComponent的用法
  • 图书管理项目(spring boot + Vue)
  • KOA优化最近邻分类预测matlab
  • flask和django的对比
  • Unity中实现动态图集算法
  • 分布式锁有哪些
  • 安科瑞光伏发电防逆流解决方案--守护电网安全,提升能源效率
  • Rust 文件读取:实现我们的 “迷你 grep”
  • 迅为RK3568开发板篇OpenHarmony实操HDF驱动配置LED-LED测试
  • React(6)