当前位置: 首页 > news >正文

Spring Cloud 微服务架构模型

下面是一个完整的 springcloud-eureka-demo 示例项目,包含:

  1. Eureka Server 注册中心

  2. Eureka Client 服务提供者(service-provider)

  3. Eureka Client 服务消费者(service-consumer)


📁 项目结构

springcloud-eureka-demo/
├── eureka-server/
├── service-provider/
└── service-consumer/

1️⃣ eureka-server:注册中心

📄 pom.xml

<?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.0https://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.14</version> <!-- 或其他可用版本 --><relativePath/> <!-- 注意不能写错或丢掉 --></parent><groupId>org.example</groupId><artifactId>eureka-server</artifactId><version>0.0.1-SNAPSHOT</version><name>eureka-server</name><description>Eureka Server for Service Discovery</description><properties><java.version>17</java.version><spring-cloud.version>2020.0.6</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-server</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2020.0.6</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

📄 application.properties

spring.application.name=eureka-server
server.port=8761eureka.client.register-with-eureka=false
eureka.client.fetch-registry=falseeureka.server.enable-self-preservation=false

📄 启动类

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

2️⃣ service-provider:服务提供者

📄 pom.xml

<?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><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.14</version><relativePath/> <!-- lookup parent from repository --></parent><groupId>org.example</groupId><artifactId>service-provider</artifactId><version>0.0.1-SNAPSHOT</version><name>service-provider</name><description>service-provider</description><url/><licenses><license/></licenses><developers><developer/></developers><scm><connection/><developerConnection/><tag/><url/></scm><properties><java.version>17</java.version><spring-cloud.version>2020.0.6</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2020.0.6</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

📄 application.properties

spring.application.name=service-provider
server.port=8001
eureka.client.service-url.defaultZone=http://localhost:8761/eureka

📄 控制器

package org.example.serviceprovider;import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;@RestController
public class HelloController {@GetMapping("/hello")public String hello() {return "Hello from Provider";}
}

📄 启动类

package org.example.serviceprovider;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;
@SpringBootApplication
@EnableEurekaClient
public class ServiceProviderApplication {public static void main(String[] args) {SpringApplication.run(ServiceProviderApplication.class, args);}}

3️⃣ service-consumer:服务消费者

📄 pom.xml

<project><modelVersion>4.0.0</modelVersion><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>2.5.14</version> <!-- 与 Spring Cloud 2022.0.5 兼容 --><relativePath/></parent><groupId>org.example</groupId><artifactId>service-consumer</artifactId><version>0.0.1-SNAPSHOT</version><name>service-consumer</name><description>Spring Cloud Consumer</description><properties><java.version>17</java.version><spring-cloud.version>2020.0.6</spring-cloud.version></properties><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-loadbalancer</artifactId></dependency></dependencies><dependencyManagement><dependencies><dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-dependencies</artifactId><version>2020.0.6</version><type>pom</type><scope>import</scope></dependency></dependencies></dependencyManagement><build><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build></project>

📄 application.properties

server.port=8002spring.application.name=service-consumereureka.client.service-url.defaultZone=http://localhost:8761/eureka

📄 控制器

package org.example.serviceconsumer;import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.cloud.client.loadbalancer.LoadBalanced;
import org.springframework.context.annotation.Bean;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.client.RestTemplate;@RestController
public class ConsumerController {@Autowiredprivate RestTemplate restTemplate;@GetMapping("/getHello")public String getHello() {return restTemplate.getForObject("http://service-provider/hello", String.class);}@Bean@LoadBalancedpublic RestTemplate restTemplate() {return new RestTemplate();}
}

📄 启动类

package org.example.serviceconsumer;import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.netflix.eureka.EnableEurekaClient;@EnableEurekaClient
@SpringBootApplication
public class ServiceConsumerApplication {public static void main(String[] args) {SpringApplication.run(ServiceConsumerApplication.class, args);}}

✅ 启动顺序

  1. 先启动 eureka-server(8761端口)

  2. 启动 service-provider(8001端口)→ 注册到 Eureka

  3. 启动 service-consumer(8002端口)

浏览器访问:

  • 注册中心:http://localhost:8761

  • 消费者调用:http://localhost:8002/getHello → 返回 "Hello from Provider"


相关文章:

  • Linux内核网络协议栈深度解析:面向连接的INET套接字实现
  • AI 在金融领域的落地实践:从智能风控到量化交易的技术突破与案例解析
  • C++入门(笔记)
  • Everything
  • 笔记06:DXF导入后板框的定义
  • ASProxy64.dll导致jetbrains家的IDE都无法打开。
  • Re--攻防世界-基础android
  • Linux基本命令篇 —— less命令
  • Foundry测试实战:解锁区块链测试新姿势
  • 战神授权后台报错:Parse error: syntax error, unexpected end of file in解决办法
  • 【LLIE专题】EnlightenGAN 无监督低照度图像增强
  • Flutter基础(Riverpod)
  • Infineon AURIX TriCore TC3xx芯片内存专题报告
  • YOLOv8模型在RDK5开发板上的部署指南:.pt到.bin转换与优化实践
  • 【论文阅读笔记】知网SCI——基于主成分分析的空间外差干涉数据校正研究
  • c#激光设备行业ERP软件进销存软件库存管理软件财务管理软件
  • 网飞猫官网入口 - 免费高清影视平台,Netflix一站观看
  • 以软件系统开发为例,解释PMO 与IPD、CMMI、项目管理什么区别和联系
  • Spring Cloud:高级特性与最佳实践
  • Linux更改国内镜像源