【Zero to One系列】springcloud微服务集成nacos,形成分布式系统

news2024/11/29 14:51:18

前期回顾:

【Zero to One系列】在WSL linux系统上,使用docker运行Mysql与Nacos

1、Nacos配置设置

先在nacos创建命名空间,如下图操作:

 创建完成后,服务列表配置列表,就都会出现如图的tab:

 然后,也可以再配置列表中,配置自己需要定义的配置化文件,供后续的项目中读取使用。此处暂不做说明,这个后续章节再细说,如何使用。


2、项目依赖于配置引入

首先,引入相关的nacos依赖,我这边是微服务的系统架构,所以nacos基本很多模块都会引入,我是放在了common包的pom文件中,大家也可以放在root级的pom文件内。依赖包如下:

<dependencies>

	<!-- 服务发现依赖 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId>
        <version>2.2.5.RELEASE</version>
    </dependency>

    <!-- 服务注册与配置依赖 -->
    <dependency>
        <groupId>com.alibaba.cloud</groupId>
        <artifactId>spring-cloud-starter-alibaba-nacos-config</artifactId>
        <version>2.2.5.RELEASE</version>
    </dependency>

</dependencies>

依赖引入后,需要在对应的微服务模块项目中,配置对应的信息,具体如下:

服务发现配置,使用的是bootstrap.yml文件,此处需要注意,必须使用bootstrap的文件,此配置优先级最高,不然后续服务启动,会注册不到对应的命名空间内

spring:
  cloud:
    nacos:
      discovery:
        server-addr: nacos-server-ip:8848
        namespace: a663dc6b-98ff-4518-9a06-ffb3e3c4b697
        group: ***-dev

服务注册配置(也可以用yaml配置,个人习惯而定):

spring.cloud.nacos.config.server-addr=nacos-server-ip:8848
spring.cloud.nacos.config.namespace=a663dc6b-98ff-4518-9a06-ffb3e3c4b697
spring.cloud.nacos.config.group=***-dev
spring.cloud.nacos.config.file-extension=yaml

在服务的启动类,加上相应的注解,如下:

@EnableDiscoveryClient
@SpringBootApplication
public class ***Application {

	public static void main(String[] args) {
		SpringApplication.run(***Application.class, args);
	}

}

然后就可以启动,看看效果,先看启动日志打印:

再看看nacos注册管理界面:

 

至此,服务nacos微服务注册就完成啦。。

3、 微服务间的互相调用

        首先,通过创建feign接口类,我这边的项目结构中,有一个common模块。我会将一些,通用性的东西,放在此模块中。feign也是如此,各个模块都会相互调用。所以创建一个feign接口的目录,如com.***.common.feign,然后创建被调用服务的feign接口类,如下:

package com.***.common.feign;

import com.***.common.bean.ResultBean;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;


@FeignClient(name = "${sys.serviceName.send}",path = "${sys.serviceContext.send}")
public interface SendFeignClient {
	
	@RequestMapping(value = "/sms/sendMessage",method = RequestMethod.POST)
	public ResultBean sendSMS();
	
}

然后,在调用服务的启动类上,加上如下注解:

package com.***.***;

import com.***.common.constant.CommonConstant;
import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;
import org.springframework.cloud.openfeign.EnableFeignClients;
import org.springframework.context.annotation.ComponentScan;

@EnableDiscoveryClient
@EnableFeignClients(basePackages = {CommonConstant.FEIGN_PACKAGE})
@SpringBootApplication
public class ***Application {

	public static void main(String[] args) {
		SpringApplication.run(***Application.class, args);
	}

}

此处的CommonConstant.FEIGN_PACKAGE 就是指向上面的com.***.common.feign,记住这个一定要加上,否则启动服务,会因找不到feign的接口类而报错。。

现在我们启动2个微服务,然后通过服务user调用服务send,如下都注册到nacos服务器后:

然后,在user服务中,就可以通过@resource等注解引入feign接口类,调用send服务中的接口啦。。调用效果我就不演试了,亲测是可用的。。

        本次的微服务通过nacos注册集成与调用,至此就结束啦。。至此,微服务的基本架构,就大体已经成形啦。。后续,就是一些拓展性的架构建设了。。例如添加gateway网关、hystrix熔断器等等。。请关注我后续相关的博文输出吧,,加油!!!

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

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

相关文章

南京邮电大学电工电子基础B实验八(译码与动态显示电路)

文章目录 一、 实验目的二、 主要仪器设备及软件三、 实验原理四、 实验任务与设计过程实验任务&#xff1a;设计过程&#xff1a; 五、 实验步骤与仿真结果1&#xff0e;用BCD七段显示译码器显示本人学号的后四位&#xff08;0709&#xff09;2&#xff0e;用BCD七段显示译码器…

API电商 ERP 数据管理

没有 API&#xff0c;应用之间的通信将会被扼杀&#xff1b;软件开发者将不断重写并执行相同功能的软件&#xff1b;创新的脚步将会放缓。 API 随处可见。大到一个软件系统&#xff0c;小到几行程序&#xff0c;只要具备了一定的特征&#xff0c;都可以被称作 API。那么&#…

产品手册是团队营销的心脏,让企业宣传更上一层楼

产品手册是企业团队营销的重要工具之一&#xff0c;能够帮助企业更好地宣传产品并提高销售业绩。在现代企业市场竞争日益激烈的情况下&#xff0c;如何制作一份优秀的产品手册成为了企业团队营销的重要课题。本文将从以下几个方面探讨产品手册对团队营销的意义以及如何制作一份…

RocksDB笔记 -- 整体架构

RocksDB是由Facebook开发的存储引擎, 它最初的目标是用于快速存储, 特别是Flash存储. 一个基于C开发keys-values存储引擎库. 整体架构 RocksDB由这三个基本结构组成: memtable, sstfile 和 logfile. 其中: memtable是一个内存数据结构, 新的写入会插入到memtable中, 同时可选…

前端加密对抗——CDP远程调用Debug断点函数python代码实现

文章目录 前端加密对抗——CDP远程调用Debug断点函数python代码实现实现请求断点处函数mitmproxy实现加解密 前端加密对抗——CDP远程调用Debug断点函数python代码实现 前几天看了看tools推送的前端加密的文章&#xff1a;前端加密对抗Part2-通过CDP远程调用Debug断点函数觉得…

NR 5G 系统消息MIB和SIB详解

系统信息分类 系统信息与各个信道的映射图示&#xff1a; 在5G高层中&#xff0c;系统信息可以分为三类&#xff1a; 最少系统信息&#xff08;Minimum System Information&#xff0c;MSI&#xff09;&#xff1a; MSI包括MIB和RMSIMIB的RRC消息 MasterInformationBlockMI…

DTU902 工控机 边缘计算网关

边缘计算网关&#xff08;Edge Computing Gateway&#xff09;是一种连接边缘设备和云端服务器的中间件设备&#xff0c;它可以处理和存储大量的数据&#xff0c;提高数据处理和传输的效率。边缘计算网关可以将数据预处理和过滤&#xff0c;减少数据传输到云端的负荷&#xff0…

2023 最新版IntelliJ IDEA 2023.1创建Java Web前(vue3)后端(spring-boot3)分离 项目详细步骤(图文详解)

文章目录 &#x1f6a9; 接上篇&#x1f3f3;‍&#x1f308; 项目构建所需的相关工具JavaIDEAmavenNodeJSVueVisual Studio Code &#x1f30c; 后端项目创建详细步骤&#x1f6eb; 1、开始创建新项目&#x1f6eb; 2、输入项目名称、选择项目存储位置、项目管理工具&#xff…

HTTP 教程1

HTTP 协议一般指 HTTP&#xff08;超文本传输协议&#xff09;。 超文本传输协议&#xff08;英语&#xff1a;HyperText Transfer Protocol&#xff0c;缩写&#xff1a;HTTP&#xff09;是一种用于分布式、协作式和超媒体信息系统的应用层协议&#xff0c;是因特网上应用最为…

CPO技术重塑光模块:行业变革与突破

随着OpenAI的ChatGPT重磅面世&#xff0c;在短短时间内&#xff0c;内容生成式人工智能消费级应用掀起一波新的科技浪潮。ChatGPT用户数也在短短两个月内破亿,成为史上活跃用户破亿速度最快的软件。 可以预料的是,未来算力和数据需求将迎来爆发式的增长,且传统可插拔光模块技术…

3.2 动态规划算法的基本要素

博主简介&#xff1a;一个爱打游戏的计算机专业学生博主主页&#xff1a; 夏驰和徐策所属专栏&#xff1a;算法设计与分析 学习目标&#xff1a; 如果我要学习动态规划算法的基本要素&#xff0c;我会采取以下步骤&#xff1a; 1. 理解概念&#xff1a;首先&#xff0c;我会研…

【程序】基于matlab使用脉冲压缩估计范围和多普勒

一、前言 本例显示了脉冲压缩的效果&#xff0c;其中发射的脉冲被调制并与接收的信号相关联。雷达和声纳系统使用脉冲压缩&#xff0c;通过缩短回波持续时间来提高信噪比&#xff08;SNR&#xff09;和距离分辨率。此示例还演示了多普勒处理&#xff0c;其中目标的径向速度由目…

Windows10系统下YOLOv5配置(Tesla P40 24GB、CUDA10.2)

操作系统&#xff1a;Windows10 显卡&#xff1a;Tesla P40 24GB CUDA版本&#xff1a;10.2 YOLOv5版本&#xff1a;4.0 一、下载 CUDA&cuDNN 下载相应版本的CUDA按默认一路安装到底 下载相应版本的cuDNN&#xff0c;解压&#xff0c;将bin中、include中、lib中文件…

CV | ⑩分钟实现视频人脸情绪生成(论文+代码)

本博客主要讲解了Emotionally Enhanced Talking Face Generation&#xff08;情感增强的谈话人脸生成&#xff09;论文概括与项目实现&#xff0c;以及代码理解。 Emotionally Enhanced Talking Face Generation Paper :https://arxiv.org/pdf/2303.11548.pdf Code: GitHub - s…

java民俗传统文化宣传分享网站springboot+vue

本传统文化网站有管理员和用户两个角色&#xff0c;管理员有&#xff0c;个人中心&#xff0c;用户管理&#xff0c;文章类型管理&#xff0c;文章信息管理&#xff0c;投票信息管理&#xff0c;留言板管理&#xff0c;系统管理。用户有个人中心&#xff0c;我的收藏&#xff0…

C++数据结构:二叉树之三(二叉搜索树扩展)

文章目录 前言一、搜索父节点二、搜索子节点三、搜索前驱后继节点四、计算二叉树的高度五、测试总结 前言 我们接着写二叉树&#xff0c;在前文链接&#xff1a;《二叉树之二》中&#xff0c;我们生成了如下的有序二叉树&#xff0c;并且实现了插入、删除和四种遍历方法。今天…

搭建 LNMP平台

搭建LNMP平台 一. 安装Nginx服务1.1 安装依赖包1.2 创建运行用户1.3 编译安装1.4 优化路径1.5 添加 Nginx 系统服务 二. 安装mysql服务2.1 安装Mysql环境依赖包2.2 创建运行用户2.3 编译安装2.4 修改mysql 配置文件2.5 更改mysql安装目录和配置文件的属主属组2.6 设置路径环境变…

C进阶:数据在内存中的存储(2)

六一儿童节快乐哇各位过期的小朋友们 引入&#xff1a; 在上一篇博文中&#xff0c;相信大家对于数据类型以及整数在内存中的存储有了一定了解&#xff0c;那么&#xff0c;浮点数是怎么在内存中存储的呢&#xff1f;下面来看一下我的讲解。 浮点数家族&#xff1a; 包括&#…

Python四则运算“计算器”——整数口算练习“小程序”

设定练习题目数量、最大取值整数数&#xff0c;即时判定&#xff0c;答对鼓励答错打印正确结果。 【学习的细节是欢悦的历程】 Python 官网&#xff1a;https://www.python.org/ Free&#xff1a;大咖免费“圣经”教程《 python 完全自学教程》&#xff0c;不仅仅是基础那么简…

python 1B 之路径

1. 绝对路径&#xff1a; os.path.abspath("") 翻译过来就是通过操作系统找到路径-绝对路径&#xff0c;os是operation system&#xff0c; abspath 是absolute path 比如现在运行的文件在service文件夹中&#xff0c;运行后&#xff1a; 2. 上层目录&#xff1a; 方…