SpringCloud系列(三)| 集成Nacos注册中心

好了万事具备,接下来我们就开始搭建我们SpringCloud项目。本章节我们先来搭建我们SpringCloud项目框架,然后开发两个服务,把他们注册到Nacos注册中心中。上一章节我们已经介绍了Nacos是可以作为注册中心和配置中心的,这一章节我们重点研究Nacos作为注册中心的用法。

一、项目搭建

我们首先搭建一套SpringCloud的项目,其实所谓SpringCloud的项目就是一堆SpringBoot的项目,然后依赖了SpringCloud的相关组件而已。

为了这个项目与时俱进,并且是以学习为主,我们大部分的依赖都使用最新的版本。

环境信息:

- IDEA: 2021.3.3

- JDK: 17

- SpringBoot: 2.6.5

- SpringCloud: 2021.0.1.0

可能会有风险,因为不确定版本太高,依赖能不能兼容高版本我们先来搞一波再说。

首先我们先来搭建一套Multi-Maven项目结构。创建这么几个module:

spring-cloud-learning-parent: 用于管理依赖

spring-cloud-learning-common: 通用依赖管理

spring-cloud-learning-userservice: 用户模块微服务

spring-cloud-learning-orderservice: 订单模块微服务

接下来我们来进行项目的创建,具体的过程就不贴图了。给大家git地址:

一缕82年的清风 / spring-cloud-learning · GitCode

搭建好的项目结构如图所示:

依赖的pom版本也给一下:

<?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 https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.lsqingfeng.springcloud</groupId><artifactId>spring-cloud-learning-parent</artifactId><version>1.0.0</version><packaging>pom</packaging><name>spring-cloud-learning-parent</name><description>项目父pom,用于被继承</description><properties><java.version>17</java.version><maven.compiler.source>17</maven.compiler.source><maven.compiler.target>17</maven.compiler.target><spring.boot.version>2.6.5</spring.boot.version><spring.cloud.alibaba.version> 2021.0.1.0</spring.cloud.alibaba.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><lombok.version>1.18.20</lombok.version><nacos.version>0.2.1</nacos.version><modelmapper.version>2.3.0</modelmapper.version><springfox-swagger2.version>2.9.2</springfox-swagger2.version><xiaoymin.swagger.version>1.9.6</xiaoymin.swagger.version></properties><repositories><!-- maven仓库采用阿里云--><repository><id>maven-ali</id><url>http://maven.aliyun.com/nexus/content/groups/public//</url><releases><enabled>true</enabled></releases><snapshots><enabled>true</enabled><updatePolicy>always</updatePolicy><checksumPolicy>fail</checksumPolicy></snapshots></repository></repositories><dependencyManagement><dependencies><!-- springBoot 版本依赖 --><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring.boot.version}</version><scope>import</scope><type>pom</type></dependency><!-- springCloud版本依赖--><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><dependency><groupId>com.lsqingfeng.springcloud</groupId><artifactId>spring-cloud-learning-common</artifactId><version>${project.parent.version}</version></dependency><!-- lombok --><dependency><groupId>org.projectlombok</groupId><artifactId>lombok</artifactId><version>${lombok.version}</version></dependency><!-- 实体拷贝工具 --><dependency><groupId>org.modelmapper</groupId><artifactId>modelmapper</artifactId><version>${modelmapper.version}</version></dependency><!-- swagger --><dependency><groupId>io.springfox</groupId><artifactId>springfox-swagger2</artifactId><version>${springfox-swagger2.version}</version></dependency><dependency><groupId>com.github.xiaoymin</groupId><artifactId>swagger-bootstrap-ui</artifactId><version>${xiaoymin.swagger.version}</version></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

具体内容大家可以从git上下载查看。 就在master分支上。

二、集成nacos注册中心

我们先来改造orderservice

启动类上添加注解:@EnableDiscoveryClient

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

配置文件内容:

server:port: 8081spring:application:name: orderserviceprofiles:active: devcloud:nacos:server-addr: 127.0.0.1:8848

注意要把nacos的配置中心启动。

接下来改造userservice,步骤基本一样,注意端口号和应用名称要不一样。

同时启动两个服务。

同时启动了两个服务。一个端口号是8081,一个端口号是8082. 我们在nacos上观察效果。

在Nacos的服务列表中出现了两个服务。只不过实例都是1个。代表我们注册成功了。

接下来我们在不关闭服务的情况下,把orderservice的端口号改一下,再启动一个实例。相当于会有两个orderservice同时启动,我们来模拟多节点部署的情况。

一运行出现如下提示:

意思是不允许并行跑多个,这个是idea自带的设置我们可以更改一下。

老版本的idea: 勾选如下选项

新版本的idea:

选择允许多实例。

再次运行:(注意先把配置文件里的端口号改一下,否则起不来)

有两个orderService同时运行。

我们查看nacos效果:

实例数变为了2。点击详情可查看到如下:

这样在微服务以后我们调用orderservice的时候,都是使用服务名称来调,因为所有服务都注册到了同一个nacos上,就可以得到该服务的所有实例地址,调用的时候,可以自动进行负载均衡策略。这个等到后边给大家详细演示效果。

好了,今天的内容我们就到这里了。我们主要搭建了springCloud项目,并且体验了Nacos作为注册中心的实战效果,成功将我们的两个微服务注册到了Nacos上。大家好好练一练吧。

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

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

相关文章

Linux centos8安装JDK1.8、tomcat

一、安装jdk 1.如果之前安装过jdk&#xff0c;先卸载掉旧的 rpm -qa | grep -i jdk 2.检查yum中有没有java1.8的包 yum list java-1.8* 3.yum安装jdk yum install java-1.8.0-openjdk* -y 4.验证 二、安装tomcat Index of /tomcat 可以在这里选择你想要安装的tomcat版本…

【unity实战】一个通用的FPS枪支不同武器射击控制脚本

文章目录 前言模型素材文章用到的粒子火光特效射击效果换弹瞄准开枪抖动效果设置显示文本最终代码不同武器射击效果1. 手枪2. 机枪3. 狙击枪4. 霰弹枪5. 加特林 其他感谢完结 前言 实现FPS枪支不同武器效果&#xff0c;比如手枪&#xff0c;喷子&#xff0c;狙击枪&#xff0c…

ISCTF2023 Reverse方向 WP

文章目录 ReversecrackmeEasyRebabyReeasy_z3FloweyRSAeasy_flower_teamfx_rez3_revengeWHERE Reverse crackme 、 加了UPX壳&#xff0c;可以看到EP Section处UPX标识被修改了 用WinHex修改 之后UPX脱壳 得到flag。 EasyRe 逆向一下&#xff0c;先逆序&#xff0c;再做一些…

机器人行业数据闭环实践:从对象存储到 JuiceFS

JuiceFS 社区聚集了来自各行各业的前沿科技用户。本次分享的案例来源于刻行&#xff0c;一家商用服务机器人领域科技企业。 商用服务机器人指的是我们日常生活中常见的清洁机器人、送餐机器人、仓库机器人等。刻行采用 JuiceFS 来弥补对象存储性能不足等问题。 值得一提的是&am…

godot 报错Unable to initialize Vulkan video driver解决

版本 godot 4.2.1 现象 godot4.2.1 默认使用vulkan驱动&#xff0c;如果再不支持vulkan驱动的主机上&#xff0c;进入引擎编辑器将报错如下 解决 启动参数添加 –rendering-driver opengl3 即可进入引擎编辑器 此时运行项目仍然会报错无法初始化驱动 在项目设置中配置编…

编译Sqlite3记录

下载源文件&#xff1a; 下载地址&#xff1a;SQLite Download Page 打开QtCreator创建新的工程&#xff0c;选择纯C工程&#xff0c;将main.c删除&#xff0c;将下载的源码解压后的文件复制到并添加到工程中&#xff0c;其中的文件包括&#xff1a;sqlite3ext.h、sqlite3.h、…

Android多进程和跨进程通讯方式

前言 我们经常开发过程中经常会听到线程和进程&#xff0c;在讲述Android进程多进程前我打算先简单梳理一下这俩者。 了解什么是进程与线程 进程&#xff1a; 系统中正在运行的一个应用程序&#xff0c;某个程序一旦运行就是一个进程&#xff0c;是资源分配的最小单位&#…

自动化测试 (二) Web自动化测试原理

目前市面上有很多Web UI自动化测试框架&#xff0c;比如WatiN, Selinimu,WebDriver&#xff0c;还有VS2010中的Coded UI等等. 这些框架都可以操作Web中的控件&#xff0c;模拟用户输入&#xff0c;点击等操作&#xff0c;实现Web自动化测试。其实这些工具的原理都一样&#xf…

element-ui样式(一)

1.去掉表格横线 HTML表格标签&#xff1a; table&#xff1a;定义表格&#xff0c;生成的表格在一对<table></table>中&#xff1b; <th>&#xff1a;定义表格的表头&#xff0c;一般是表头中的内容会被加黑&#xff08;table head&#xff09;&#xff1b;…

MySQL 系列:注意 ORDER 和 LIMIT 联合使用的陷阱

文章目录 前言背后的原因ORDER BY 排序列存在相同值时返回顺序是不固定的LIMIT 和 ORDER BY 联合使用时的行为ORDER BY 或 GROUP BY 和 LIMIT 联合使用优化器默认使用有序索引 如何解决其它说明个人简介 前言 不知道大家在在分页查询中有没有遇到过这个问题&#xff0c;分页查…

通俗易懂:插入排序算法全解析(C++)

插入排序算法是一种简单直观的排序算法&#xff0c;它的原理就像我们玩扑克牌时整理手中的牌一样。下面我将用通俗易懂的方式来解释插入排序算法的工作原理。 假设我们手上有一副无序的扑克牌&#xff0c;我们的目标是将它们从小到大排列起来。插入排序算法的思想是&#xff0…

0基础学习VR全景平台篇第127篇:什么是VR全景/720全景漫游?

“全景”作为一种表现宽阔视野的手法&#xff0c;在很久之前就得到了普遍的认同。北宋年间&#xff0c;由张择端绘制的《清明上河图》就是一幅著名的全景画。摄影术出现后&#xff0c;全景摄影也随之而生。 到今天&#xff0c;全景拍摄不再被专业摄影师所独享&#xff0c;广大…

leetcode--3. 无重复字符的最长子串[滑动窗口\哈希表 c++]

原题 &#xff1a; 3. 无重复字符的最长子串 - 力扣&#xff08;LeetCode&#xff09; 题目解析&#xff1a; 最长子串可以用滑动窗口解决&#xff0c;无重复字符可以使用哈希表解决。 算法原理&#xff1a; 滑动窗口哈希表 哈希表作为一个数组存放每个字符出现的次数。 …

06进程间关系-学习笔记

Orphan Process孤儿进程 父进程先于子进程退出&#xff0c;子进程失去托管&#xff0c;这种子进程统称为孤儿进程 失效进程&#xff08;孤儿进程&#xff09;&#xff1a;导致内存泄漏&#xff0c;影响新进程的创建孤儿进程的危害不可预测&#xff0c;如果一个孤儿进程持续的申…

Spark环境搭建和使用方法

目录 一、安装Spark &#xff08;一&#xff09;基础环境 &#xff08;二&#xff09;安装Python3版本 &#xff08;三&#xff09;下载安装Spark &#xff08;四&#xff09;配置相关文件 二、在pyspark中运行代码 &#xff08;一&#xff09;pyspark命令 &#xff08…

go自带rpc框架生产环境使用demo

基础使用 序列化使用自带gob协议 server package mainimport ("net""net/rpc" )// 定义一个handler结构体 type HelloService struct { }// 定义handler方法,大小写&#xff0c;参数&#xff0c;返回值都是固定的&#xff0c;否则无法注册 func (receiv…

五、Microsoft群集服务(MSCS)环境的搭建

一、【目的】 学会利用Windows Server布置群集环境。 二、【设备】 FreeNAS11.2&#xff0c;Windows Server 2019 三、【要求】 学会利用Windows Server布置群集环境&#xff0c;掌握处理问题的能力。 配置表&#xff1a; 节点公网IP(public)内网IP(private)群集IP(clust…

vue2-安装elementUI时警告

警告内容&#xff1a;npm WARN deprecated core-js2.6.12: core-js<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up …

JavaScipt验证URL新方法(2023 年版)

JavaScript诞生以来&#xff0c;一直没有一种简单的方法验证URL&#xff0c;现在JavaScript新增了一个新方法——URL.canParse。 URL.canParse(https://www.stefanjudis.com); // true URL.canParse(www.stefanjudis.com); // falseURL.canParse() 是一种快速验证字符串是否为…

改进的A*算法的路径规划(1)

引言 近年来&#xff0c;随着智能时代的到来&#xff0c;路径规划技术飞快发展&#xff0c;已经形成了一套较为 成熟的理论体系。其经典规划算法包括 Dijkstra 算法、A*算法、D*算法、Field D* 算法等&#xff0c;然而传统的路径规划算法在复杂的场景的表现并不如人意&#xf…