SpringCloudAlibaba:2.1nacos

概述

概述

简介

Nacos是阿里巴巴开源的服务注册中心以及配置中心

Nacos=注册中心Eureka + 服务配置Config + 服务总线Bus

官网

Nacos官网 | Nacos 官方社区 | Nacos 下载 | Nacos

名字由来

Naming:名字

Configurations:配置

Service:服务

功能

服务发现和服务健康监测

Nacos使服务更容易注册,并通过DNS或HTTP接口发现其他服务

Nacos还提供服务的实时健康检查,以防止向不健康的主机或服务实例发送请求

动态配置服务

动态配置服务允许您在所有环境中以集中和动态的方式管理所有服务的配置

Nacos消除了在更新配置时重新部署应用程序,这使配置的更改更加高效和灵活

动态DNS服务

Nacos提供基于DNS协议的服务发现能力,旨在支持异构语言的服务发现 支持将注册在

Nacos上的服务以域名的方式暴露端点,让三方应用方便查阅及发现

服务及其元数据管理

Nacos能让您从微服务平台建设的视觉管理数据中心的所有服务及元数据 ,包括管理服务的描述、生命周期、服务的静态依赖分析、服务的健康状态、服务的流量管理、路由及安全策略

nacos服务端

安装nacos

安装jdk

查看jdk是否安装:java -version

下载网址:https://www.oracle.com/technetwork/java/javase/downloads/index.html

下载:wget https://download.oracle.com/java/17/latest/jdk-17_linux-x64_bin.tar.gz

解压:tar -zxvf jdk-17_linux-x64_bin.tar.gz -C /usr/local

修改环境变量【注意jdk版本可能不同】:sudo vim /etc/profile

export JAVA_HOME=/usr/local/jdk-17.0.11

export PATH=$PATH:$JAVA_HOME/bin

生效环境变量:source /etc/profile

安装nacos

下载网址:https://github.com/alibaba/nacos/releases

下载:wget https://github.com/alibaba/nacos/releases/download/2.3.2/nacos-server-2.3.2.tar.gz

解压:tar -zxvf nacos-server-2.2.3.tar.gz -C /usr/local

启动:sh /usr/local/nacos/bin/startup.sh -m standalone

【会在/root目录下生成logs和work目录,standalone代表着单机模式运行,非集群模式】

停止:sh /usr/local/nacos/bin/shutdown.sh

查看日志:cat /usr/local/nacos/logs/start.out

修改配置文件:vim /usr/local/nacos/conf/application.properties

访问

http://192.168.66.103:8848/nacos

用CP模式和AP模式来保持注册中心的数据一致性

CAP理论

著名的CAP理论指出,一个分布式系统不可能同时满足C(一致性)、A(可用性)和P(分区容错性)

切换为AP模式【默认】

切换为AP模式【默认】:curl -X PUT "http://localhost:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=AP"

追求AP: 用户请求支付,立即给用户响应结果,异步处理库存系统 放弃强一致性,采用最终一致性

切换为CP模式

curl -X PUT "http://localhost:8848/nacos/v1/ns/operator/switches?entry=serverMode&value=CP"

追求CP: 用户请求支付,等待支付订单生成以及库存系统数据更新,再给用户返回结果 追求强一致性

缺点:用户体验差

数据持久化

支持的数据库

1.嵌入式数据库Derby【默认】

2.MySQL

进行持久化

获取mysql脚本:cd /usr/local/nacos/conf/mysql-schema.sql

mysql创建数据库【nacos】并运行mysql-schema.sql

备份配置文件:cp /usr/local/nacos/conf/application.properties /usr/local/nacos/conf/application.properties.bak

修改配置文件:vim /usr/local/nacos/conf/application.properties

spring.datasource.platform=mysql

db.num=1

db.url.0=jdbc:mysql://118.31.60.184:3307/nacos?characterEncoding=utf8&connectTimeout=1000&socketTimeout=3000&autoReconnect=true

db.user=root

db.password=Jiakewei521

重启nacos:先停止后启动

停止:sh /usr/local/nacos/bin/shutdown.sh

启动:sh /usr/local/nacos/bin/startup.sh -m standalone

父工程搭建

依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>jkw.life</groupId><artifactId>java_sc_alibaba</artifactId><version>1.0-SNAPSHOT</version><modules><module>test-provider8001</module><module>test-customer8002</module><module>test-nacos-config8003</module><module>test-dubbo-customer8005</module><module>test-com-interface</module><module>test-dubbo-provider8004</module></modules><packaging>pom</packaging><properties><spring-cloud-alibaba.version>2022.0.0.0</spring-cloud-alibaba.version><spring-cloud.version>2022.0.0</spring-cloud.version><dubbo.version>3.2.4</dubbo.version><spring-boot.version>3.0.2</spring-boot.version><lombok.version>1.18.28</lombok.version><java.version>17</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding></properties><dependencyManagement><dependencies><!-- SpringCloud Alibaba --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>${spring-cloud-alibaba.version}</version><type>pom</type><scope>import</scope></dependency><!-- SpringCloud --><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><!-- Dubbo --><dependency><groupId>org.apache.dubbo</groupId><artifactId>dubbo-bom</artifactId><version>${dubbo.version}</version><type>pom</type><scope>import</scope></dependency><!-- SpringBoot --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency></dependencies></dependencyManagement><dependencies><!-- bootstrap--><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-bootstrap</artifactId></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>1.18.28</version></dependency></dependencies><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><configuration><source>${java.version}</source><target>${java.version}</target><encoding>${project.build.sourceEncoding}</encoding></configuration></plugin></plugins></build><!-- 依赖的仓库 提高依赖下载速度--><repositories><!--阿里的依赖镜像仓库--><repository><id>public</id><name>aliyun nexus</name><url>https://maven.aliyun.com/repository/public</url><releases><enabled>true</enabled></releases></repository></repositories><!--插件的仓库 提高插件下载速度--><pluginRepositories><!--阿里的插件镜像仓库--><pluginRepository><id>public</id><name>aliyun nexus</name><url>https://maven.aliyun.com/repository/public</url><releases><enabled>true</enabled></releases><snapshots><enabled>false</enabled></snapshots></pluginRepository></pluginRepositories></project>

客户端【注册中心】

注意事项

nacos记得选择最新版本的

依赖

<dependencies><!-- nacos-discovery --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- SpringMVC--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>

application.yml

server:port: 8001
spring:application:name: test-provider8001cloud:nacos:discovery:# 配置 nacos注册中心地址server-addr: 192.168.66.103:8848

启动类

import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@Slf4j
@EnableDiscoveryClient
@SpringBootApplication
public class Main8001 {public static void main(String[] args) {SpringApplication.run(Main8001.class, args);log.info("************** 服务提供者 8001 启动成功 ************");}
}

客户端【配置中心】

分布式配置中心

 

Namespace命名空间

简介:用于进行租户粒度的配置隔离,不同的命名空间下可以存在相同的Group或Data ID

常用场景:不同环境的配置的区分隔离,默认namespace=public的保留空间,不支持删除

使用:点击nacos的命名空间——点击新建命名空间

开发环境【dev】测试环境【test】正式环境【prod】

Group分组

简介:通过一个有意义的字符串对配置集进行分组,从而区分Data ID相同的配置集

使用:在添加DataID时进行分组,未填写配置分组的名称则配置分组的名称默认采用DEFAULT_GROUP

DataID

简介:通常用于组织划分系统的配置集【就是一个配置文件】

命名规则:应用名【spring.application.name】-环境【dev/test/prod】.文件后缀【.yaml】

命名规则【环境为空】:应用名【spring.application.name】.文件后缀【.yaml】

使用:点击配置管理/配置列表——选择对应的命名空间——点击加号—— Data ID【项目名-dev/test/prod.yaml】——配置格式【选yaml】——配置内容【把配置文件粘贴过去】

搭建

准备工作:nacos放入配置文件

1.命名空间:dev
2.data id:test-dev.yaml
3.分组:默认
test:info: test nacos config

依赖

 <dependencies><!-- nacos-config --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId></dependency><!-- nacos-discovery --><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><!-- SpringMVC--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>

bootstrap.yml

server:port: 8003
spring:application:name: test-nacos-config8003profiles:#多环境配置active: devcloud:nacos:#注册中心discovery:server-addr: 192.168.66.103:8848#配置中心config:#nacos地址server-addr: 192.168.66.103:8848#命名空间的UUID【默认为Public命名空间,可以省略不写】namespace: f0de1466-b99a-45b1-8977-2bcb638be592#配置文件后缀file-extension: yaml#应用名【如果没有配置则默认为 ${spring.appliction.name}】#prefix: ${spring.application.name}prefix: test#分组【如果是Public命名空间 则可以省略群组配置】group: DEFAULT_GROUP

启动类

package jkw;import lombok.extern.slf4j.Slf4j;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
@Slf4j
@EnableDiscoveryClient
@SpringBootApplication
public class Main8003 {public static void main(String[] args) {SpringApplication.run(Main8003.class, args);log.info("************** 配置测试服务 8003 启动成功 ************");}
}

测试控制器

package jkw.controller;import org.springframework.beans.factory.annotation.Value;
import org.springframework.cloud.context.config.annotation.RefreshScope;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
@RestController
@RefreshScope
public class TestCon {@Value("${test.info}")private String test_info;@GetMapping("/test")public String hello() {return test_info;}
}

测试

http://localhost:8003/test

配置动态刷新

只需要在需要动态读取配置的类上添加@RefreshScope注解就可以 使用@RefreshScope注解的Bean,在每次访问它时会被重新初始化,从而获取最新的配置值

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

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

hive启动beeline报错

问题一在zpark启动集群报错 出现上面的问题执行以下代码 chmod 777 /opt/apps/hadoop-3.2.1/logs 问题二启动beeline报错 执行 cd /opt/apps/hadoop-3.2.1 bin/hadoop dfsadmin -safemode leave 问题三执行查询语句报错 执行 set hive.exec.mode.local.autotrue;

uniapp 微信小程序 获取openid,手机号进行登录,配合后端

流程&#xff1a;登录注册功能,通过uni.getUserProfile获取wxcode,通过wxcode传给后端获取openid,sessionkey,unionid。 通过<u-button type"success" open-type"getPhoneNumber" getphonenumber"decryptPhoneNumber">一键登录</u-butt…

linux系统-FTP服务配置

目录 一、FTP简介 1.什么是FTP&#xff1f;&#xff1f;&#xff1f; 2.FTP的两种模式 二、安装配置FTP服务 1.关闭防火墙和核心防护 2.安装VSFTPD 3.修改配置文件 4.黑白名单设置 一、FTP简介 1.什么是FTP&#xff1f;&…

分布式WEB应用中会话管理的变迁之路

Session一词直译为“会话”&#xff0c;意指有始有终的一系列动作&#xff0f;消息。Session是Web应用蓬勃发展的产物之一&#xff0c;在Web应用中隐含有“面向连接”和“状态保持”两个含义&#xff0c;同时也指代了Web服务器与客户端之间进行状态保持的解决方案。 在Web应用…

小程序评分/关键词/UV优化助力小程序登顶

随着小程序市场的日益繁荣&#xff0c;小程序搜索排名优化成为了众多开发者关注的焦点。小程序搜索排名被很多因素影响着&#xff0c;关键词、评分还有uv&#xff08;授权&#xff09;等。在本文小柚和各位老板分享如何有效优化小程序搜索排名的经验。 一、关键词策略 关键词是…

天线驻波比参数测试方法

驻波比也叫电压驻波比&#xff0c;是指传输线中最大电压与最小电压的比值&#xff0c;是衡量天线与馈线匹配程度的重要参数&#xff0c;影响着信号传输的质量和效率。因此&#xff0c;驻波比测试是天线测试的重要环节。那么&#xff0c;天线驻波比测试都有哪些测试方法呢&#…

0426_C高级4

练习1&#xff1a; 输入一个数字&#xff0c;实现数字逆置&#xff08;不使用字符串截取方式&#xff09; 1 #!/bin/bash2 read -p "输入一个数字&#xff1a;" number3 p$number4 result5 while [ $p -ne 0 ]6 do7 result$((result*10p%10))8 p$((p/10))9 …

git 基础知识(全能版)

文章目录 一 、git 有三个分区二、git 基本操作1、克隆—git clone2、拉取—git fetch / git pull3、查看—git status / git diff3.1 多人开发代码暂存技巧 本地代码4、提交—git add / git commit / git push5、日志—git log / git reflog6、删除—git rm ‘name’7、撤销恢…

Unreal Engine动态添加Button实例

在控件蓝图中添加容器&#xff0c;注意命名不要有中文 C代码中找到容器实例 1 2 3 4 5 6 7 8 UVerticalBox* verticalBox Cast<UVerticalBox>(CurrentWidget->GetWidgetFromName(TEXT("VerticalBox_0"))); if (verticalBox ! nullptr) { UScrollBox* …

「51媒体」城市推介会,地方旅游推荐,怎么做好媒体宣传

传媒如春雨&#xff0c;润物细无声&#xff0c;大家好&#xff0c;我是51媒体网胡老师。 城市推介会和地方旅游推荐是城市形象宣传的重要组成部分&#xff0c;通过有效的媒体宣传可以提升城市的知名度和吸引力。&#xff1a; 一&#xff0c;活动内容层面&#xff1a; 突出亮点…

【MRI重建】Cartesian采样中data consistency 常规数据一致性实现(pytorch)

关于 在MRI重建中,data consistency 可以帮助加快MRI图像重建和减少模型重建带来的重建误差。 工具 方法实现 x_rec: 重建图像, (batch_size,2,H,W) mask: 欠采样模版,(batch_size,2,H,W) k_un: 真实欠采样采集数据, (batch_size,2,H,W) torch.view_as_complex: 将实数数据…

Spring Boot 3.2.5 集成 MyBatisPlus

前置条件&#xff0c;先连接好数据库&#xff0c;并且数据库里新建表插入几条数据 连接mysql传送门 版本 Spring Boot 3.2.5 第一步&#xff0c;添加依赖 <dependency><groupId>com.baomidou</groupId><artifactId>mybatis-plus-spring-boot3-start…