IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> Spring cloud alibaba ——Nacos(二) -> 正文阅读

[Java知识库]Spring cloud alibaba ——Nacos(二)

Nacos配置文件的Namespace、Group、DataId

  • namespace:命名空间(可以用于区分部署环境)
  • group:分组(可以将几个不同的微服务划分到一个分组当中)
  • dataId:配置文件id(必须满足配置规则$ {prefix}-$ {spring.profiles.active}.${file-extension})

使用dataId切换环境

bootstrap.yml

spring:
  application:
    name: nacos-config-client

application.yml

spring:
  profiles:
    active: dev # 表示开发环境
    # active: test # 切换为测试环境

如果需要切换环境,在Nacos平台添加两组配置文件:
nacos-config-client-dev.yaml
nacos-config-client-test.yaml

注意:要先发布配置文件,然后启动项目,否则项目会启动失败的!

使用group切换环境

新建dev和test两个环境的配置文件,给bootstrap.yml配置如下

# 端口配置
server:
  port: 3377

# 服务名称
spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: localhost:8848 # Nacos服务中心注册地址
      config:
        server-addr: localhost:8848 # Nacos作为配置中心的地址
        file-extension: yaml # 制定yaml格式的配置文件
        group: TEST-GROUP # 对应配置的分组
#        group: DEV-GROUP

application.yml如下:

spring:
  profiles:
    active: info 

在这里插入图片描述
启动服务后配置文件生效。

使用Namespace切换环境

打开Nacos操作平台:
左侧菜单命名空间–>新建命名空间–>新建dev/test命名空间–>填写“命名空间”和“描述”–>配置列表中填写具体的配置文件–>在application.yaml文件中添加关于namespace的配置
在这里插入图片描述

bootstarp.yaml添加配置:

spring:
	cloud:
    	nacos:
    		config:
    			namespace: c15d52de-21bf-467e-9dd5-8c4ae8dad1b2 # 配置命名空间属性

总结

使用Namespace、gorup、dataId切换环境就好像给了用户一个三层的文件夹,当一个项目拥有多个配置文件****.yaml过多时,便可以将一组拥有共同的特点的服务规划到一个group中,当微服务数量不断增多,分组也不够使用时,可以根据地区或者环境来划分命名空间,从而使环境管理更加有条理,切换起来更加方便。

Nacos持久化配置

Nacos作为微服务架构中关键的组件之一,担任着服务注册和配置中心的角色,在实际应用中,Nacos的部署也会按照分布式部署,通过Nginx轮询后将请求分配置至不同的节点,进行处理,如果Nacos一直使用自带的嵌入式数据库——derby,就会造成一致性问题,因此,Nacos采用了集中存储方式来支持集群化部署,支持Mysql数据库。

在这里插入图片描述
配置方式如下:

  1. 进入安装文件夹:nacos/conf/nacos-mysql.sql;
  2. 打开安装mysql,创建数据库,并且运行sql文件;
create database nacos_config;
use nacos_config;
source {你的路径}/nacos/conf/nacos-mysql.sql;
  1. 修改conf/application.properties
spring.datasource.platform=mysql
db.num=1
db.url.0=jdbc:mysql://127.0.0.1:3306/nacos_config?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true&useUnicode=true&useSSL=false&serverTimezone=UTC
db.user.0={你的数据库用户名}
db.password.0={你的数据库密码}

  • 设置成功后,打开数据库可以看见已经有如下的配置:
    在这里插入图片描述

Nacos集群部署

准备工作

Linux服务器上初始化Mysql

同上述持久化步骤(三个服务都要修改配置),运行sql脚本,修改配置文件,注意,配置文件需要备份。

cp application.properties application.properties.init

修改Nacos的集群配置文件cluster.conf

安装三个Nacos服务,并且修改其mysql配置,然后修改其cluster.conf,修改时注意:首先进行备份

cp cluster.conf cluster.conf.init
vi cluster.conf
......
192.168.20.68:8848
192.168.20.68:8868
192.168.20.68:8898

由于在运行时,Linux服务会有几个端口进行GRPC的通讯,所以在设置集群端口号的时候,需要有一定的数据偏移量。

三个服务的conf/application.properties设置端口

server.port=8848
server.port=8868
server.port=8898

启动测试

启动三个nacos服务

cd nacos/bin
./startup.sh
cd nacos2/bin
./startup.sh
cd nacos3/bin
./startup.sh

注意关闭Linux系统防火墙

systemctl disable firewalld

于是,进入nacos控制台,集群管理->节点列表,可以看到三个服务集群的情况:
在这里插入图片描述

启动Nginx

cd /usr/local/nginx
cp nginx.conf nginx.cond.bk 	#备份配置文件
vi nginx.conf

配置文件设置如下:

worker_processes  1;

events {
    worker_connections  1024;
}

stream {
      upstream nacos {
        server 192.168.20.68:8848;
        server 192.168.20.68:8868;
        server 192.168.20.68:8898;
      }


     server {
        listen  81;
        proxy_pass nacos;
     }
}

由于nacos在远程过程调用中使用的是TCP协议,所以在配置nginx时,也使用相关的转发协议。

测试启动

访问控制台时候,访问地址:192.168.20.68:81/nacos
Nacos项目的启动地址:

spring:
  application:
    name: nacos-config-client
  cloud:
    nacos:
      discovery:
        server-addr: 193.168.20.68:81 # Nginx代理地址

Nacos核心功能点

服务注册

Nacos Client会通过发送REST请求的方式向Nacos Server注册自己的服务,提供自身的元数据,比如ip地址、端口等信息。Nacos Server接收到注册请求后,就会把这些元数据信息存储在一个双层的内存Map中。
在这里插入图片描述

服务心跳、服务健康检测

服务心跳:在服务注册后,Nacos Client会维护一个定时心跳来持续通知Nacos Server,说明服务一直处于可用状态,防止被剔除。默认5s发送一次心跳。

服务健康检查:Nacos Server会开启一个定时任务用来检查注册服务实例的健康情况,对于超过15s没有收到客户端心跳的实例会将它的healthy属性置为false(客户端服务发现时不会发现),如果某个实例超过30秒没有收到心跳,直接剔除该实例(被剔除的实例如果恢复发送心跳则会重新注册)
在这里插入图片描述

服务发现

服务消费者(Nacos Client)在调用服务提供者的服务时,会发送一个REST请求给Nacos Server,获取上面注册的服务清单,并且缓存在Nacos Client本地,同时会在Nacos Client本地开启一个定时任务定时拉取服务端最新的注册表信息更新到本地缓存
在这里插入图片描述

服务同步

Nacos Server集群之间会互相同步服务实例,用来保证服务信息的一致性。

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-07-03 10:36:15  更:2022-07-03 10:36:48 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 14:44:25-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码