Spring Cloud微服务入门

news/2025/2/24 14:30:25

### 一、什么是Spring Cloud微服务?

想象一下,你有一个超大的玩具积木,把它拆成很多个小积木,每个小积木都有自己的功能,比如有的是轮子,有的是车身,有的是发动机。这些小积木就是“微服务”,它们可以独立运行,也可以组合起来完成复杂的功能。Spring Cloud就是帮你管理和连接这些小积木的工具。

### 二、开始前的准备

在动手之前,你需要准备几样东西:

1. **Java开发环境(JDK)**:推荐使用JDK 17或更高版本。
2. **Maven**:用于项目管理和构建,版本推荐3.9.4或更高。
3. **开发工具**:推荐使用IntelliJ IDEA,它对Spring Cloud支持得很好。

### 三、搭建第一个Spring Cloud微服务项目

#### 1. 创建服务注册中心(Eureka Server)

服务注册中心就像一个“电话簿”,所有微服务都会把自己“注册”到这里,方便其他服务找到它们。

**步骤:**

1. 打开 [Spring Initializr](https://start.spring.io/) 网站。
2. 选择Maven项目,语言选Java。
3. 添加依赖:`Spring Web` 和 `Eureka Server`。
4. 点击“Generate”,下载解压后导入到IDE中。

**配置文件(`application.yml`):**

```yaml
server:
  port: 8761  # Eureka Server的端口
spring:
  application:
    name: eureka-server
eureka:
  client:
    register-with-eureka: false
    fetch-registry: false
```

**启动类:**

```java
package com.example.eurekaserver;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer;

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

运行这个项目后,你的服务注册中心就启动了。

#### 2. 创建一个微服务(Eureka Client)

**步骤:**

1. 再次使用Spring Initializr,添加依赖:`Spring Web` 和 `Eureka Discovery Client`。
2. 下载解压后导入到IDE中。

**配置文件(`application.yml`):**

```yaml
server:
  port: 8081  # 微服务的端口
spring:
  application:
    name: my-service
eureka:
  client:
    service-url:
      defaultZone: http://localhost:8761/eureka/
```

**启动类:**

```java
package com.example.microservice;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.client.discovery.EnableDiscoveryClient;

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

#### 3. 测试服务注册与发现

1. 启动Eureka Server。
2. 启动微服务(Eureka Client)。
3. 打开浏览器,访问 `http://localhost:8761`,你会看到Eureka的管理界面,上面显示了已经注册的微服务。

### 四、微服务之间的通信

微服务之间需要互相调用,比如一个订单服务可能需要调用用户服务来获取用户信息。Spring Cloud提供了几种方式来实现这一点,最简单的是Feign。

#### 示例:使用Feign实现服务调用

**1. 添加Feign依赖**

在微服务项目的`pom.xml`中添加:

```xml
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-openfeign</artifactId>
</dependency>
```

**2. 创建Feign客户端**

```java
package com.example.microservice.client;

import org.springframework.cloud.openfeign.FeignClient;
import org.springframework.web.bind.annotation.GetMapping;

@FeignClient(name = "user-service")
public interface UserClient {
    @GetMapping("/user")
    String getUser();
}
```

**3. 调用服务**

在你的微服务中注入这个客户端,然后调用:

```java
package com.example.microservice.controller;

import com.example.microservice.client.UserClient;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;

@RestController
public class MyController {
    @Autowired
    private UserClient userClient;

    @GetMapping("/call-user")
    public String callUserService() {
        return userClient.getUser();
    }
}
```

### 五、总结

通过上面的步骤,你已经搭建了一个简单的Spring Cloud微服务架构。你可以继续扩展,比如添加配置中心(Spring Cloud Config)、网关(Spring Cloud Gateway)等组件。

Spring Cloud虽然看起来复杂,但其实就是把一个大应用拆成小块,然后用工具把它们串起来。希望这个教程能让你轻松入门,如果有问题,随时问我哦!


http://www.niftyadmin.cn/n/5864465.html

相关文章

AI多模态梳理与应用思考|从单文本到多视觉的生成式AI的AGI关键路径

摘要&#xff1a; 生成式AI正从“文本独舞”迈向“多感官交响”&#xff0c;多模态将成为通向AGI的核心路径。更深度的多模态模型有望像ChatGPT颠覆文字交互一样&#xff0c;重塑物理世界的智能化体验。 一、多模态的必然性&#xff1a;从单一到融合 生成式AI的起点是文本生成…

前沿科技一览未来趋势

3D打印在航空航天领域里很有用。它能降低成本&#xff0c;加快生产速度。 首先&#xff0c;3D打印减少了材料浪费。传统制造方法中&#xff0c;很多材料会被切掉或丢弃。但3D打印是逐层添加材料&#xff0c;这样就省下了不少材料费。 其次&#xff0c;3D打印可以简化装配过程…

常用标准库之-std::reduce与std::execution::par

1. std::reduce 定义与头文件 std::reduce 是 C 17 引入的并行算法&#xff0c;定义在 <numeric> 头文件中&#xff0c;用于对指定范围内的元素进行归约操作&#xff08;如求和、求积等&#xff09;。 函数原型 template< class ExecutionPolicy, class ForwardIt…

跟着李沐老师学习深度学习(十四)

注意力机制&#xff08;Attention&#xff09; 引入 心理学角度 动物需要在复杂环境下有效关注值得注意的点心理学框架&#xff1a;人类根据随意线索和不随意线索选择注意力 注意力机制 之前所涉及到的卷积、全连接、池化层都只考虑不随意线索而注意力机制则显示的考虑随意…

一、初始爬虫

1.爬虫的相关概念 1.1 什么是爬虫 网络爬虫&#xff08;又被称为网页蜘蛛&#xff0c;网络机器人&#xff09;就是模拟浏览器发送网络请求&#xff0c;接收请求响应&#xff0c;一种按照一定的规则&#xff0c;自动地爬取互联网信息的程序。 原则上&#xff0c;只要是浏览器…

《苍穹外卖》电商实战项目(java)知识点整理(P1~P65)【上】

史上最完整的《苍穹外卖》项目实操笔记&#xff0c;跟视频的每一P对应&#xff0c;全系列10万字&#xff0c;涵盖详细步骤与问题的解决方案。如果你操作到某一步卡壳&#xff0c;参考这篇&#xff0c;相信会带给你极大启发。 《苍穹外卖》项目实操笔记【中】&#xff1a;P66~P…

Django check_password原理

check_password 是 Django 提供的一个用于密码校验的函数&#xff0c;它的工作原理是基于密码哈希算法的特性。 Django 的 make_password 函数在生成密码哈希时&#xff0c;会使用一个随机的 salt&#xff08;盐值&#xff09;。这个 salt 会与密码一起进行哈希运算&#xff0…

游戏引擎学习第119天

仓库:https://gitee.com/mrxiao_com/2d_game_3 上一集回顾和今天的议程 如果你们还记得昨天的进展&#xff0c;我们刚刚完成了优化工作&#xff0c;目标是让某个程序能够尽可能快速地运行。我觉得现在可以说它已经快速运行了。虽然可能还没有达到最快的速度&#xff0c;但我们…