微服务入门-笔记

embedded/2025/2/26 1:12:20/

微服务入门-笔记

介绍

这个mvn工程里边包含了微服务里最基础的服务拆分、基于nacos的服务注册和发现、配置中心以及OpenFeign版的远程调用。

初始化这个工程是来源于阿里云的脚手架,https://start.aliyun.com/,从这上边创建一个包含各种依赖的工程,然后下载下来,再把里边初始的src给删了就ok了。其实从阿里云上边下载这个初始工程主要是帮我们做好了springboot、springcloud和springcloud-alibaba三个版本的统一,剩下还有好多操作要我们自己完成。

依赖

为了以后稍方便点,我就把自己的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>cn.ac.evo.review</groupId><artifactId>root</artifactId><version>0.0.1-SNAPSHOT</version><packaging>pom</packaging><name>root</name><description>Demo project for Spring Boot</description><modules></modules><properties><java.version>17</java.version><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding><spring-boot.version>2.7.6</spring-boot.version><spring-cloud-alibaba.version>2021.0.5.0</spring-cloud-alibaba.version><spring-cloud.version>2021.0.5</spring-cloud.version></properties><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-config</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-loadbalancer</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-openfeign</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-test</artifactId><scope>test</scope></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>${spring-cloud.version}</version><type>pom</type><scope>import</scope></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-dependencies</artifactId><version>${spring-boot.version}</version><type>pom</type><scope>import</scope></dependency><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></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.apache.maven.plugins</groupId><artifactId>maven-compiler-plugin</artifactId><version>3.8.1</version><configuration><source>17</source><target>17</target><encoding>UTF-8</encoding></configuration></plugin><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId><version>${spring-boot.version}</version><configuration><mainClass>cn.ac.evo.review.root.RootApplication</mainClass><skip>true</skip></configuration><executions><execution><id>repackage</id><goals><goal>repackage</goal></goals></execution></executions></plugin></plugins></build>
</project>

模块介绍

在这里插入图片描述

common模块里放了一个公共的EmailDTO,用来规范数据传输。

email-service里模拟了一个发送邮件的接口。

user里模拟了一个发送注册时候用于身份验证的接口。

都是模拟的。

到时候调用的时候就是user调用email-service里的接口,如果能调用成功了,就说明服务注册、发现、远程调用都成功了。置于配置中心,其实只需要让其中一个服务在启动的时候,输出一下获取到的配置内容就ok了,能输出就表示成功,不能输出就是有问题。

nacos 相关的spring配置

# app名称,必须写。
spring.application.name=email-service
# 服务注册相关的
spring.cloud.nacos.discovery.server-addr=127.0.0.1:8848
spring.cloud.nacos.discovery.username=nacos
spring.cloud.nacos.discovery.password=nacos
spring.cloud.nacos.discovery.namespace=public# 配置中心相关的
spring.cloud.nacos.config.server-addr=127.0.0.1:8848
spring.cloud.nacos.config.username=nacos
spring.cloud.nacos.config.password=nacos
spring.cloud.nacos.config.contextPath=/nacos
spring.cloud.nacos.config.group=DEFAULT_GROUP
# ↓这个是在nacos: 这个冒号后边写你在nacos上写的配置文件的全名
spring.config.import=nacos:email.properties 

如果有的服务不需要读取配置文件,把刚才配置中心相关的配置给注释掉,加上这行。

spring.cloud.nacos.config.import-check.enabled=false

OpenFeign

这里挂一个FeignClient的代码,做做笔记,下次再写别的了,可以参考参考。

package user.feign;import cn.ac.evo.review.model.dto.EmailDTO;
import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.http.ResponseEntity;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;@FeignClient(name = "email-service") // 通过服务名进行调用
public interface EmailFeignClient {@PostMapping("/api/email/send/default")ResponseEntity<String> sendEmail(@RequestBody EmailDTO emailDTO);
}

http://www.ppmy.cn/embedded/167161.html

相关文章

VLM(视觉语言模型)与DeepSeek R1(奖励机制)如何结合

VLM&#xff08;视觉语言模型&#xff09;与DeepSeek R1&#xff08;奖励机制&#xff09;如何结合 flyfish VLM的传统训练依赖于监督学习&#xff08;直接拟合问答对&#xff09;&#xff0c;而规则奖励函数通常用于强化学习&#xff08;通过试错和奖励反馈优化策略&#xf…

人工智能任务23-天文领域的超亮超新星能源机制结合深度神经网络的研究方向

大家好&#xff0c;我是微学AI&#xff0c;今天给大家介绍一下人工智能任务23-天文领域的超亮超新星能源机制结合深度神经网络的研究方向。 文章目录 一、研究背景阐述超亮超新星的定义与发现历程超亮超新星能源机制的主要理论模型1. 56Ni衰变模型2. 超新星抛射物与致密星周介…

Python在大数据AI领域的优势分析【为什么使用Python开发】

大数据分析、大模型和 AI 领域主要采用 Python&#xff0c;并非其他语言完全不能使用&#xff0c;而是 Python 在以下方面形成了显著优势&#xff0c;形成了一个正反馈循环的生态系统。我们可以从多个角度分析&#xff1a; 1. 语法简洁&#xff1a;开发效率优先 特点&#xff…

C#语音识别与播报开发指南

C# 语音识别离线开发推荐库 以下是一些适用于 C# 离线语音识别的库&#xff0c;支持本地处理&#xff0c;无需网络连接&#xff1a; 1. System.Speech.Recognition (Windows) 简介&#xff1a;.NET Framework 自带的库&#xff0c;适合简单的离线命令词识别。适用场景&#x…

如何实现网关

根据你的需求&#xff0c;以下是一些可以实现去中心化网关功能的项目&#xff0c;这些项目支持会话管理、RPC 调用、防止爬虫等功能&#xff1a; 1. YuGateway YuGateway 是一个基于 Netty 和 Nacos 构建的自研网关&#xff0c;支持去中心化的服务注册与发现&#xff0c;具备…

【react】进阶教程02

目录 一、深度性能优化 1. 列表渲染优化&#xff08;虚拟列表&#xff09; 2. 使用 Web Workers 处理 CPU 密集型任务 二、复杂状态管理场景 1. 全局状态分层&#xff08;Context useReducer&#xff09; 2. 异步状态管理中间件&#xff08;Redux Thunk&#xff09; 三、…

23种设计模式之《外观模式(Facade)》在c#中的应用及理解

程序设计中的主要设计模式通常分为三大类&#xff0c;共23种&#xff1a; 1. 创建型模式&#xff08;Creational Patterns&#xff09; 单例模式&#xff08;Singleton&#xff09;&#xff1a;确保一个类只有一个实例&#xff0c;并提供全局访问点。 工厂方法模式&#xff0…

【Web开发】PythonAnyWhere免费部署Django项目

PythonAnyWhere免费部署Django项目 文章目录 PythonAnyWhere免费部署Django项目将项目上传到GitHub从GitHub下载Django项目创建Web应用配置静态文件将项目上传到GitHub 打开项目,输入以下命令,生成Django项目依赖包。pip list --format=freeze > requirements.txt打开Git …