首页
苏兮影视
随笔记
壁纸
更多
直播
时光轴
友联
关于
统计
Search
1
软件添加id功能按钮
708 阅读
2
v2ray节点搭建
508 阅读
3
typecho非常有特色的模块
460 阅读
4
QQxml消息卡片生成源码
421 阅读
5
Linux下提权常用小命令
366 阅读
谈天说地
建站源码
经验教程
资源分享
动漫美图
登录
Search
标签搜索
java
flutter
springboot
rust
安卓
linux
vue
docker
joe
快捷键
git
fish shell
maven
redis
netty
dart
groovy
js
设计模式
rpc
尽意
累计撰写
95
篇文章
累计收到
38
条评论
首页
栏目
谈天说地
建站源码
经验教程
资源分享
动漫美图
页面
苏兮影视
随笔记
壁纸
直播
时光轴
友联
关于
统计
搜索到
1
篇与
的结果
基于 Maven 多模块的 SpringCloud 微服务架构实战
随着微服务架构的普及,越来越多的项目开始采用分布式服务模式。在本文中,我们基于 SpringCloud Alibaba 构建一套简单但功能齐全的微服务架构。技术栈包括 Nacos、OpenFeign、SpringCloud Gateway、OkHttp 等,架构基于 Maven 的多模块项目管理方式。目标架构本项目采用多模块 Maven 项目管理,结构如下:springcloud-demo ├── pom.xml # 父 POM ├── gateway-service # 网关服务模块 ├── service-a # 服务 A 模块 ├── service-b # 服务 B 模块 └── nacos-server # Nacos 配置说明功能概览服务注册与发现:Nacos 作为服务注册中心,实现动态服务注册与发现。服务通信:使用 OpenFeign 实现跨服务的 HTTP 调用,支持负载均衡。统一网关:通过 SpringCloud Gateway 实现统一入口和路由管理。连接池优化:结合 OkHttp 提高 OpenFeign 的网络连接效率。配置管理:通过 Nacos 实现动态的集中配置管理。技术栈解析1. Nacos作用:作为服务注册与配置中心,支持动态服务发现和配置热更新。使用场景:服务注册发现、集中化配置管理。2. OpenFeign作用:基于声明式的 REST 客户端,简化服务间调用。优势:自动负载均衡,支持多种序列化方式和超时配置。3. SpringCloud Gateway作用:提供统一网关入口,支持路由转发、限流、熔断等功能。优势:对微服务访问统一管理,提升扩展性与安全性。4. OkHttp作用:为 OpenFeign 提供底层连接池支持,提高网络通信效率。优势:轻量高效,支持连接复用。父项目 POM 配置在父项目的 pom.xml 中,定义公共依赖和子模块:<modules> <module>gateway-service</module> <module>service-a</module> <module>service-b</module> </modules> <dependencyManagement> <dependencies> <!-- SpringCloud Alibaba 依赖管理 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-alibaba-dependencies</artifactId> <version>2021.0.5.0</version> <type>pom</type> <scope>import</scope> </dependency> </dependencies> </dependencyManagement> <dependencies> <!-- Spring Boot 基础依赖 --> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter</artifactId> </dependency> <!-- Nacos 服务发现 --> <dependency> <groupId>com.alibaba.cloud</groupId> <artifactId>spring-cloud-starter-alibaba-nacos-discovery</artifactId> </dependency> <!-- OpenFeign 依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-openfeign</artifactId> </dependency> <!-- SpringCloud Gateway 依赖 --> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId> </dependency> </dependencies>各子模块实现1. Nacos 配置从 Nacos 官方 下载,启动命令:# 单机模式 sh startup.sh -m standaloneNacos 默认端口为 8848,访问 http://localhost:8848/nacos 查看管理界面,默认用户名和密码均为 nacos。2. Service A功能:提供简单的 REST 接口。依赖:Nacos 服务注册。application.ymlserver: port: 8081 spring: application: name: service-a cloud: nacos: discovery: server-addr: 127.0.0.1:8848Controller 示例@RestController @RequestMapping("/service-a") public class ServiceAController { @GetMapping("/hello") public String hello() { return "Hello from Service A"; } }3. Service B功能:调用 Service A 的接口。依赖:OpenFeign,Nacos 服务注册。application.ymlserver: port: 8082 spring: application: name: service-b cloud: nacos: discovery: server-addr: 127.0.0.1:8848Feign Client@FeignClient(name = "service-a") public interface ServiceAFeignClient { @GetMapping("/service-a/hello") String callServiceA(); }Controller 示例@RestController @RequestMapping("/service-b") public class ServiceBController { @Autowired private ServiceAFeignClient serviceAFeignClient; @GetMapping("/call") public String call() { return serviceAFeignClient.callServiceA(); } }4. Gateway 服务功能:通过网关统一路由到服务 A 和服务 B。依赖:SpringCloud Gateway,Nacos 服务注册。application.ymlserver: port: 8080 spring: application: name: gateway-service cloud: gateway: routes: - id: service-a-route uri: lb://service-a predicates: - Path=/service-a/** - id: service-b-route uri: lb://service-b predicates: - Path=/service-b/** nacos: discovery: server-addr: 127.0.0.1:8848配置 OkHttp 连接池为 OpenFeign 配置 OkHttp 优化性能: FeignConfig@Configuration public class FeignConfig { @Bean public OkHttpClient okHttpClient() { return new OkHttpClient.Builder() .connectTimeout(10, TimeUnit.SECONDS) .readTimeout(10, TimeUnit.SECONDS) .writeTimeout(10, TimeUnit.SECONDS) .build(); } @Bean public OkHttpFeignClient feignClient(OkHttpClient okHttpClient) { return new OkHttpFeignClient(okHttpClient); } }在 service-b 的 Feign Client 中即可使用配置的 OkHttp 连接池。测试流程启动 Nacos:确保 Nacos 服务运行在 8848 端口。启动各服务:按照顺序启动 gateway-service、service-a、service-b。访问接口:通过 Gateway 访问服务:http://localhost:8080/service-a/hello 返回 Hello from Service A。http://localhost:8080/service-b/call 通过 Feign 调用 Service A。
2024年12月04日
18 阅读
0 评论
2 点赞