SpringCloud Alibaba--nacos简介和配置管理和登录

目录

一.理论基础

二.nacos

2.1 简介

2.2 安装

三.父项目

三.生产者

3.1 配置依赖

3.2 配置文件

3.3 启动类

3.4 控制类

四.消费者

4.1 配置依赖

4.2 配置文件

4.3 启动类

4.4 feign的接口

五.效果

六.负载均衡--权重算法

6.1重启nacos

6.2 设置权重

6.3 设置配置

6.4 效果

SpringCloudAlibaba-登录

1.登录页面

父依赖

2.消费者

2.1 依赖

2.2配置文件

2.3 控制层

2.4 servie层

3.生产者

3.1 依赖

3.2 配置文件

3.3 控制层

3.4 访问层

3.5 实体类

3.6 实现类

3.7 mapper

4.效果



一.理论基础

Spring Cloud Alibaba 为分布式应用开发提供一站式解决方案。它包含开发分布式应用程序所需的所有组件,使您可以轻松地使用 Spring Cloud 微服务框架开发应用程序。

有了Spring Cloud Alibaba,您只需要添加一些注释和少量配置,就可以将Spring Cloud的应用程序连接到阿里巴巴的分布式解决方案上,并利用阿里巴巴的中间件构建分布式应用系统。

主要功能:

服务限流降级:默认支持 WebServlet、WebFlux, OpenFeign、RestTemplate、Spring Cloud Gateway, Zuul, Dubbo 和 RocketMQ 限流降级功能的接入,可以在运行时通过控制台实时修改限流降级规则,还支持查看限流降级 Metrics 监控。
服务注册与发现:适配 Spring Cloud 服务注册与发现标准,默认集成了 Ribbon 的支持。
分布式配置管理:支持分布式系统中的外部化配置,配置更改时自动刷新。
消息驱动能力:基于 Spring Cloud Stream 为微服务应用构建消息驱动能力。
分布式事务:使用 @GlobalTransactional 注解, 高效并且对业务零侵入地解决分布式事务问题。
阿里云对象存储:阿里云提供的海量、安全、低成本、高可靠的云存储服务。支持在任何应用、任何时间、任何地点存储和访问任意类型的数据。
分布式任务调度:提供秒级、精准、高可靠、高可用的定时(基于 Cron 表达式)任务调度服务。同时提供分布式的任务执行模型,如网格任务。网格任务支持海量子任务均匀分配到所有 Worker(schedulerx-client)上执行。
阿里云短信服务:覆盖全球的短信服务,友好、高效、智能的互联化通讯能力,帮助企业迅速搭建客户触达通道。

Spring Cloud Alibaba和Spring Cloud和Spring Boot之间的版本对应:

Spring Cloud Alibaba Version

Spring Cloud Version

Spring Boot Version

2021.0.4.0*

Spring Cloud 2021.0.4

2.6.11

2021.0.1.0

Spring Cloud 2021.0.1

2.6.3

2021.1

Spring Cloud 2020.0.1

2.4.2

Spring Cloud Alibaba Version

Spring Cloud Version

Spring Boot Version

2022.0.0.0-RC2

2022.0.0

3.0.2

2022.0.0.0-RC1

2022.0.0

3.0.0

Spring Cloud Alibaba和各组件间的版本对应:

Spring Cloud Alibaba Version

Sentinel Version

Nacos Version

RocketMQ Version

Dubbo Version

Seata Version

2.2.9.RELEASE

1.8.5

2.1.0

4.9.4

~

1.5.2

2021.0.4.0

1.8.5

2.0.4

4.9.4

~

1.5.2

2.2.8.RELEASE

1.8.4

2.1.0

4.9.3

~

1.5.1

2021.0.1.0

1.8.3

1.4.2

4.9.2

~

1.4.2

2.2.7.RELEASE

1.8.1

2.0.3

4.6.1

2.7.13

1.3.0

2.2.6.RELEASE

1.8.1

1.4.2

4.4.0

2.7.8

1.3.0

2021.1 or 2.2.5.RELEASE or 2.1.4.RELEASE or 2.0.4.RELEASE

1.8.0

1.4.1

4.4.0

2.7.8

1.3.0

2.2.3.RELEASE or 2.1.3.RELEASE or 2.0.3.RELEASE

1.8.0

1.3.3

4.4.0

2.7.8

1.3.0

2.2.1.RELEASE or 2.1.2.RELEASE or 2.0.2.RELEASE

1.7.1

1.2.1

4.4.0

2.7.6

1.2.0

2.2.0.RELEASE

1.7.1

1.1.4

4.4.0

2.7.4.1

1.0.0

2.1.1.RELEASE or 2.0.1.RELEASE or 1.5.1.RELEASE

1.7.0

1.1.4

4.4.0

2.7.3

0.9.0

2.1.0.RELEASE or 2.0.0.RELEASE or 1.5.0.RELEASE

1.6.3

1.1.1

4.4.0

2.7.3

0.7.1

二.nacos

2.1 简介

一个更易于构建云原生应用的动态服务发现、配置管理和服务管理平台。能够替代Eureka做服务注册中心,替代Config做服务配置中心。

2.2 安装

安装地址

解压后可直接使用。

在环境变量中配置JDK,需要先配置JAVA_。

打开nacos下的bin文件,用记事本打开startup.cmd,将set MODE="cluster"改为set 。MODE="standalone"后保存。

再次双击打开startup.cmd。

使用localhost:8848/nacos,访问注册中心,用户名和密码为nacos。

三.父项目

 配置依赖管理,alibaba-dependencies需要在dependencies的基础上运行,所以需要spring-cloud-dependencies的依赖。

<dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2022.0.0</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>3.0.2</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2022.0.0.0-RC2</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement>

三.生产者

3.1 配置依赖

需要加入web依赖和nacos依赖

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

3.2 配置文件

application

定义好nacos路径和端口

server:port: 8003
spring:application:name: providercloud:nacos:discovery:server-addr: http://localhost:8848

3.3 启动类

编写启动类并加注解。

@EnableDiscoveryClient注解,开启nacos服务中心。

@SpringBootApplication
@EnableDiscoveryClient
public class nacosClient3Application {public static void main(String[] args) {SpringApplication.run(nacosClient3Application.class,args);}
}

3.4 控制类

进行feign和负载均衡使用。

@RestController
public class MyController {@RequestMapping("/test")public String gotoTest(){return "nacosClient3";}
}

四.消费者

4.1 配置依赖

需要加入web依赖、nacos依赖、feign依赖和负载均衡依赖

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

4.2 配置文件

定义好nacos路径、端口和名字

server:port: 9000
spring:application:name: consumercloud:nacos:discovery:server-addr: http://localhost:8848

4.3 启动类

编写启动类并加注解。

@EnableDiscoveryClient注解,开启nacos服务中心。

@EnableFeignClients注解,开启feign

@EnableFeignClients//启动feign
@SpringBootApplication
@EnableDiscoveryClient开启nacos服务中心
public class nacosCostomerApplication {public static void main(String[] args) {SpringApplication.run(nacosCostomerApplication.class,args);}
}

4.4 feign的接口

@Service
@FeignClient(name = "provider")
public interface ServiceCostomer {@RequestMapping("/test")public String gotoTest();
}

五.效果

六.负载均衡--权重算法

负载均衡中默认方法为轮询算法,但在实际应用中,是需要给每个生产者有不同的任务,根据服务区的内存等原因,分配不同的任务量。

权重:后端服务器处理请求的优先级,设置权重较高的服务器会更频繁地被选中处理请求。

6.1重启nacos

直接更改权重会出现错误。

首先停止nacos,将nacos文件下的data包删除。删除后重启nacos。

6.2 设置权重

在生产者中点击详情,编辑生产者权重。

注意:生产者的权重之和为1,每个生产者的权重设置为0.n。

6.3 设置配置

在消费者中开启nacos的负载均衡策略。

cloud:loadbalancer:nacos:enabled: true

6.4 效果

将会给生产者1的分配次数变多。

SpringCloudAlibaba-登录

页面输入用户名和密码,提交到后端消费者,消费者传到生产者后端在进行判断,返回登录成功或登录失败到消费者,消费者再放到页面上进行显示。

restTemplate.getForObject 向远程取数据 两个参数url和数据类型

restTemplate.postForObject 向远程服务传参数 三个参数url、参数、返回值类型

@RequestBody 跨域(端口不同)得到对象数据,必须是post提交

1.登录页面

<!DOCTYPE html>
<html lang="en" xmlns:th="http://www.thymeleaf.org">
<head><meta charset="UTF-8"><title>登录页面</title>
</head>
<body>
<form th:action="@{/loginEntity}" method="post"><span th:text="${result}"></span><input type="username" th:placeholder="请输入用户名" name="username"/><input type="password" placeholder="请输入密码" name="password" /><input type="submit" th:value="登录"/>
</form></body>
</html>

父依赖

管理spring-cloud、spring-boot、spring-cloud-alibaba、mysql和mybatis的版本号,添加共用的lombok依赖

<dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2022.0.0</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>3.0.2</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-alibaba-dependencies</artifactId><version>2022.0.0.0-RC2</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId><version>8.0.33</version></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId><version>3.0.3</version></dependency></dependencies></dependencyManagement><dependencies><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies>

2.消费者

需要将页面的值传递给生产者,并接受生产者的返回值。

2.1 依赖

<dependencies>使用公共实体类<dependency><groupId>org.example.entity</groupId><artifactId>common</artifactId><version>1.0-SNAPSHOT</version><scope>compile</scope></dependency>nacos依赖<dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency>feign依赖<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency>负载均衡依赖<dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency>thymeleaf页面依赖<dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-thymeleaf</artifactId></dependency></dependencies>

2.2配置文件

server:port: 9000
spring:application:name: customerthymeleaf:#设置页面路径的前缀prefix: classpath:/templates/#设置页面路径的后缀suffix: .htmlcloud:nacos:discovery:server-addr: http://localhost:8848loadbalancer:nacos:enabled: true

2.3 控制层

在该层写好逻辑,使用feign。

@Controller
public class MyController {@AutowiredServiceCostomer serviceCostomer;ModelAndView mav = new ModelAndView();@RequestMapping("/login")private String login(){return "login";}@RequestMapping("/loginEntity")public ModelAndView loginEntity(User user) {String result = serviceCostomer.loginProvider(user);mav.addObject("result", result);mav.setViewName("login");return mav;}
}

2.4 servie层

通过生产者的名字和路径找到对应生产者的方法并传值。

@Service
@FeignClient(name = "provider")
public interface ServiceCostomer {@RequestMapping("/login")public String loginProvider(@RequestBody User user);
}

3.生产者

因为使用负载均衡,所以不知道第一次回去那个生产者,所以每个生产者都需要写loginProvider。这里以其中一个为例。

3.1 依赖

加入sql依赖、mybatis依赖、nacos依赖

<dependencies><dependency><groupId>com.alibaba.cloud</groupId><artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId></dependency><dependency><groupId>com.mysql</groupId><artifactId>mysql-connector-j</artifactId></dependency><dependency><groupId>org.mybatis.spring.boot</groupId><artifactId>mybatis-spring-boot-starter</artifactId></dependency></dependencies>

3.2 配置文件

三个生产者每个生产者各使用一个数据库,所以这里以生产者3为例

server:port: 8001
spring:cloud:nacos:discovery:server-addr: http://localhost:8848datasource:driver-class-name: com.mysql.cj.jdbc.Driverurl: jdbc:mysql://localhost:3306/my_sql_1username: rootpassword: rootapplication:name: provider
mybatis:mapper-locations: classpath:/mapper/*.xmlconfiguration:log-impl: org.apache.ibatis.logging.stdout.StdOutImpltype-aliases-package: org.example.client.dao

3.3 控制层

@RestController
public class MyController {@AutowiredMyUserService myUserService;@RequestMapping("/login")public String loginProvider(@RequestBody UserEntity user) {UserEntity user1 = myUserService.getUser(user);if (user1 != null) {return "登录成功,欢迎";} else {return "登录失败,暂无该用户,请注册";}}
}

3.4 访问层

@Mapper
public interface MyUserDao {public userEntity getUser(userEntity user);
}

3.5 实体类

@Data
public class userEntity {public int id;public String username;public String password;
}

3.6 实现类

@Service
public class MyUserServiceImpl implements MyUserService {@AutowiredMyUserDao myUserDao;@Overridepublic userEntity getUser(userEntity user) {return myUserDao.getUser(user);}
}

3.7 mapper

<mapper namespace="org.example.client.dao.MyUserDao"><select id="getUser">select *from my_userwhere username = #{username} and password=#{password}</select>
</mapper>

4.效果

给每个生产者设置不同的权重。

进入login页面

登录失败

登录成功

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

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

相关文章

【嵌入式】Arduino IDE + ESP32开发环境配置

一 背景说明 最近想捣鼓一下ESP32的集成芯片&#xff0c;比较了一下&#xff0c;选择Arduino IDE并添加ESP32支持库的方式来开发&#xff0c;下面记录一下安装过程以及安装过程中遇到的坑。 二 下载准备 【1】Arduino IDE ESP32支持一键安装包&#xff08;非常推荐&#xff0…

SpringCloud注册nacos错误:Could not resolvplaceholder ‘xxxxx‘ in value “xxxx“

这个错误是我在做spirngcloud注册服务到nacos时发现的&#xff0c;算是折磨我折磨了好久&#xff0c;最后发现了还是先记录一下&#xff0c;首先还是说一下我的项目版本信息&#xff0c;因为不同的版本就有这不同的解决方案&#xff0c;这也是最恶心的一点&#xff0c;以至于我…

万界星空科技电机行业MES+商业电机行业开源MES+项目合作

要得出mes系统解决方案在机电行业的应用范围&#xff0c;我们先来看一下传统机电行业的管理难题&#xff1a; 1、 产品标准化程度较低&#xff0c;制造工艺复杂&#xff0c;生产周期较长&#xff0c;产品质量不稳定&#xff1b; 2、 自动化程度低&#xff0c;大多数工序以手工…

探索设计模式的魅力:主从模式与AI大模型的结合-开启机器学习新纪元

​&#x1f308; 个人主页&#xff1a;danci_ &#x1f525; 系列专栏&#xff1a;《设计模式》 &#x1f4aa;&#x1f3fb; 制定明确可量化的目标&#xff0c;坚持默默的做事。 ✨欢迎加入探索主从模式与AI大模型之旅✨ &#x1f31f;Hey, tech enthusiasts! 你是否还在追…

分类预测 | Matlab实现RIME-BP霜冰优化BP神经网络多特征分类预测

分类预测 | Matlab实现RIME-BP霜冰优化BP神经网络多特征分类预测 目录 分类预测 | Matlab实现RIME-BP霜冰优化BP神经网络多特征分类预测分类效果基本介绍程序设计参考资料 分类效果 基本介绍 1.RIME-BP霜冰优化BP神经网络多特征分类预测&#xff08;Matlab实现完整源码和数据&a…

Vue3+Echarts: 浏览器缩小后,图表内容发生重叠

一、问题 Vue3Echarts项目&#xff1a;浏览器缩小后&#xff0c;图表内容发生重叠。本文将提供几个解决上述问题的思路&#xff0c;后续有新的解决思路将在此处进行补充。 二、解决思路 1、动态调整ECharts配置 如果图表容器的尺寸没有随着浏览器窗口的缩小而进行相应地调整…

笔记本电脑耗电和发热比较厉害怎么处理

工作中会遇到有同事反馈笔记本电脑耗电和发热比较厉害&#xff0c;主要检查以下几个地方 1、CPU频率 很多人觉得是cpu使用率高就代表电脑跑得快&#xff0c;发热量就大&#xff0c;其实不是的&#xff0c;主要是看的cpu频率&#xff0c;频率越高&#xff0c;电脑发热量越大。如…

单片机学习过程

继电器光耦隔离电压转换步进电机直流电机 arduino是最好用的一种&#xff0c;他提供了完整的设备库文件&#xff0c;任何外部设备只要查找相应的库&#xff0c;就可以很方便的使用 &#xff0c; 但是如果不去学习51 或stm32 或 嵌入式玩玩还可以&#xff0c;如果碰到没有实现的…

Security用户管理(一)

Security初探(三)-CSDN博客 Security的身份验证流程: AuthenticationFilter拦截请求并将身份验证职能委托给AuthticationManager.为了实现身份验证逻辑,AuthticationManager会使用身份验证程序.为了检查用户名和密码,AuthenticationProvider会使用UserDetailsService和Passwor…

分类预测 | Matlab实现CNN-GRU-SAM-Attention卷积门控循环单元融合空间注意力机制的数据分类预测

分类预测 | Matlab实现CNN-GRU-SAM-Attention卷积门控循环单元融合空间注意力机制的数据分类预测 目录 分类预测 | Matlab实现CNN-GRU-SAM-Attention卷积门控循环单元融合空间注意力机制的数据分类预测分类效果基本描述程序设计参考资料 分类效果 基本描述 1.Matlab实现CNN-GRU…

生成式AI原理技术详解(一)——神经网络与深度学习

本文主要介绍了生成式AI的最新发展&#xff0c;提到了GPT-5和AI软件工程师在行业中的影响&#xff0c;指出AI技术进步对国家竞争和个人职业发展的潜在影响。 未来已来 最近有两则新闻&#xff1a; sam altman自曝GPT-5细节&#xff0c;公开宣称GPT-5提升将非常大&#xff0c;任…

第48期|GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区&#xff0c;集成了生成预训练Transformer&#xff08;GPT&#xff09;、人工智能生成内容&#xff08;AIGC&#xff09;以及大语言模型&#xff08;LLM&#xff09;等安全领域应用的知识。在这里&#xff0c;您可以找…

FPGA“题目周周练”活动来啦!

Hi&#xff0c;各位编程精英er~ 不知道大家的FPGA学习之旅到达哪一个阶段了呢&#xff1f;又在这个过程中遇到了哪些困惑&#xff1f; 作为一门高度专业化且充满挑战的技术&#xff0c;FPGA的学习是一场不断思考、认知、持续深化的过程。在这个过程中&#xff0c;思维的敏捷和…

IDEA上配置Maven环境

1.选择IDEA中的Setting 2.搜索maven 3.设置IDEA使用本地安装的Maven&#xff0c;并修改配置文件路径 配置文件&#xff0c;本地仓库&#xff0c;阿里云仓库配置及路径教程 在IDEA上配置完成。

“三三裂变”,实体书营销实操细节分享……

“三三裂变”实操细节 一、实验结果 “三三裂变”的实验,结果比较好。就是我们大概有300人报名,但实际行动的只有109人,大概有103人都完成了三个人的目标,也就是说我们通过109人裂变了475人,利润率是1:4.5左右,整个裂变的效率还是可以的,也就是说: 如果你用这种方法有…

电力调度自动化中智能电网技术的应用

电力调度自动化中智能电网技术的应用 在现代电网的现代化发展和电网重组工作中起着关键作用,由于此项技术开发时间短,目前还没有形成一个相对清晰的概念,但此技术在未来的电网发展工作中的地位已得到了一些国家的认可。由于智能电网具有良好的兼容性以及交互性等优势,一经推出就…

iOS - 多线程的安全隐患

文章目录 iOS - 多线程的安全隐患1. 卖票案例2. 多线程安全隐患的解决方案2.1 iOS中的线程同步方案2.2 同步方案的使用2.2.1 OSSpinLock2.2.1.1 使用方法&#xff1a;2.2.1.2 案例 2.2.2 os_unfair_lock2.2.2.1 使用方法&#xff1a;2.2.2.2 案例 2.2.3 pthread_mutex2.2.3.1 使…

安捷伦Agilent N5230A 300KHZ至20G矢量网络分析仪

安捷伦Agilent N5230A 300KHZ至20G矢量网络分析仪 N5230A主要参数 2端口300KHz—6、13.5GHz 2端口300KHz—20、40、50GHz 4端口300KHz—20GHz&#xff0c;具有混模S参数和高级夹具校正功能 测量S参数和增益压缩的频率和功率扫描 基本混频器/转换器测量 低至2μs脉冲宽度…

uniapp项目中禁止横屏 ,app不要自动旋转 -,保持竖屏,uniapp取消重力感应

uniapp项目中禁止横屏 &#xff0c;app不要自动旋转 -&#xff0c;保持竖屏&#xff0c;uniapp取消重力感应 1.适用于移动端&#xff0c;安卓和IOS&#xff0c;当即使手机打开了自动旋转的按钮&#xff0c;设置如下的代码后&#xff0c;页面依旧保持竖屏。 步骤一&#xff1a…

pnpm 安装后 node_modules 是什么结构?为什么 webpack 不识别 pnpm 安装的包?

本篇研究&#xff1a;使用 pnpm 安装依赖时&#xff0c;node_modules 下是什么结构 回顾 npm3 之前&#xff1a;依赖树 缺点&#xff1a; frequently packages were creating too deep dependency trees, which caused long directory paths issue on Windowspackages were c…