第35课:Spring Cloud 2025架构复盘、性能调优 & 面试核心总结

文章目录

    • 一、开篇:35节课的终点,架构师之路的起点
    • 二、全套架构优缺点复盘
      • [2.1 技术栈全景回顾](#2.1 技术栈全景回顾)
      • [2.2 这套架构的优势](#2.2 这套架构的优势)
      • [2.3 这套架构的局限与应对](#2.3 这套架构的局限与应对)
    • 三、性能调优实战
      • [3.1 高频性能瓶颈清单](#3.1 高频性能瓶颈清单)
      • [3.2 接口调优实战:从3秒到50ms](#3.2 接口调优实战:从3秒到50ms)
      • [3.3 GC优化实战](#3.3 GC优化实战)
      • [3.4 集群扩容策略](#3.4 集群扩容策略)
    • 四、高频面试题总结
      • [4.1 注册配置中心(Nacos)](#4.1 注册配置中心(Nacos))
      • [4.2 服务调用(OpenFeign + LoadBalancer)](#4.2 服务调用(OpenFeign + LoadBalancer))
      • [4.3 网关(Gateway)](#4.3 网关(Gateway))
      • [4.4 熔断限流(Sentinel)](#4.4 熔断限流(Sentinel))
      • [4.5 分布式事务(Seata)](#4.5 分布式事务(Seata))
      • [4.6 消息驱动(RocketMQ)](#4.6 消息驱动(RocketMQ))
      • [4.7 监控追踪](#4.7 监控追踪)
    • 五、生产避坑大全
      • [5.1 注册配置中心](#5.1 注册配置中心)
      • [5.2 服务通信](#5.2 服务通信)
      • [5.3 网关](#5.3 网关)
      • [5.4 熔断限流](#5.4 熔断限流)
      • [5.5 监控追踪](#5.5 监控追踪)
      • [5.6 分布式事务](#5.6 分布式事务)
      • [5.7 容器化部署](#5.7 容器化部署)
    • 六、进阶学习路线
      • [6.1 从微服务到云原生](#6.1 从微服务到云原生)
      • [6.2 从Spring Cloud到Service Mesh](#6.2 从Spring Cloud到Service Mesh)
      • [6.3 推荐学习资源](#6.3 推荐学习资源)
    • 七、全专栏总结
      • [7.1 技术能力清单](#7.1 技术能力清单)
      • [7.2 最后的建议](#7.2 最后的建议)
    • 八、结语
  • [🔗《最新版 SpringCloud 2025 从入门到实战》系列课程导航](#🔗《最新版 SpringCloud 2025 从入门到实战》系列课程导航)

适配版本 :Spring Cloud 2025.1.3(Oakwood)、Spring Boot 4.0.8、JDK 21

课程定位:全专栏收官,架构复盘 + 性能调优 + 面试总结 + 进阶路线

一、开篇:35节课的终点,架构师之路的起点

从第1课到第34课,我们完成了从"微服务是什么"到"完整的电商微服务项目上线"的完整旅程。回顾这条路径:

阶段 课程 核心产出
前置基础 第1-5课 微服务认知、Spring Boot 4.0、多模块工程
注册配置 第6-12课 Nacos注册中心、配置中心、加密回溯
服务通信 第13-16课 LoadBalancer、OpenFeign、超时重试、幂等
网关 第17-20课 Gateway、路由过滤、动态网关、限流安全
熔断限流 第21-24课 Sentinel架构、流控、熔断、网关限流
监控追踪 第25-28课 Actuator、Prometheus+Grafana、SkyWalking、ELK
高阶特性 第29-31课 异步调用、Seata、消息驱动
项目实战 第32-35课 架构设计、整合调试、容器化部署、复盘调优

这35课覆盖了Spring Cloud 2025的全部核心能力。但"学完"不等于"精通"。本课的核心任务不是引入新技术,而是帮你把散落的知识点串联成体系,把"知道怎么用"升华为"知道为什么这样用、什么时候不该用"。

本课将完成四件事:架构复盘 (这套技术栈的优缺点是什么)、性能调优 (生产环境的高频瓶颈如何解决)、面试总结 (高频考点和答题框架)、进阶路线(下一步学什么)。

二、全套架构优缺点复盘

2.1 技术栈全景回顾

模块 选型 版本 替代方案
注册中心 Nacos 3.1.1 Consul、Zookeeper
配置中心 Nacos Config 3.1.1 Spring Cloud Config
网关 Spring Cloud Gateway 5.0.0 Zuul(已淘汰)、APISIX
服务调用 OpenFeign 5.0.0 @HttpExchange、RestClient
负载均衡 Spring Cloud LoadBalancer 5.0.0 ---
熔断限流 Sentinel 1.8.9 Resilience4j
分布式事务 Seata 2.5.0 本地消息表、TCC
消息驱动 RocketMQ 5.3.1 RabbitMQ、Kafka
链路追踪 SkyWalking 10.4.0 Zipkin、Jaeger
指标监控 Prometheus + Grafana 3.x / 11.x ---
日志体系 ELK 8.15 Loki

2.2 这套架构的优势

优势一:全栈国产化友好。 Nacos、Sentinel、Seata、RocketMQ均来自阿里巴巴体系,国内社区活跃、中文文档完善、问题排查资料丰富。与Spring Cloud Alibaba的整合度极高。

优势二:可观测性完整。 Actuator暴露指标 → Prometheus采集 → Grafana展示 → SkyWalking追踪链路 → ELK集中日志,形成完整的可观测性闭环。

优势三:双栈网关的灵活性。 Gateway 5.0的WebFlux/WebMVC双栈支持,让团队可以根据技术背景选择,不必强制掌握Reactor。

优势四:JDK 21虚拟线程红利。 Spring Boot 4.0默认虚拟线程,大幅提升了IO密集型场景的并发能力,同时降低了线程池调优的复杂度。

2.3 这套架构的局限与应对

局限一:Nacos集群运维复杂度高。 3节点集群 + MySQL主从 + Raft一致性,运维门槛不低。应对:中小团队可使用阿里云MSE托管版,或从2节点+定期备份起步。

局限二:Seata AT模式的性能开销。 全局锁 + undo_log写入,在高并发场景下性能下降明显。应对:仅在核心链路(支付、订单)使用AT模式,非核心链路使用消息驱动+最终一致性。

局限三:SkyWalking + ELK的资源消耗。 ES集群至少需要3节点×8核16G。应对:中小规模可用单节点ES + 降低采样率,或使用Loki替代ELK。

局限四:技术栈碎片化。 Nacos、Sentinel、Seata、RocketMQ、SkyWalking、ELK、Prometheus各自有独立的控制台和运维方式。应对:通过CI/CD统一管理,或使用云厂商的一站式可观测性平台。

三、性能调优实战

3.1 高频性能瓶颈清单

瓶颈类型 典型现象 排查工具 优化方向
数据库慢查询 接口P99飙升,SQL耗时占比高 SkyWalking链路 + 慢查询日志 加索引、分库分表
连接池耗尽 请求排队,Connection is not available HikariCP指标 调大连接池、优化慢SQL
线程池打满 请求堆积,RejectedExecutionException 线程池指标 调参、异步化、扩容
Full GC频繁 响应时间周期性抖动 GC日志 + Grafana 调堆大小、换GC器
Feign超时 下游调用失败率上升 SkyWalking + Feign日志 调超时、重试、熔断
网关限流过严 正常请求被429 Sentinel Dashboard 调整阈值、加白名单
Nacos推送延迟 配置变更后生效慢 Nacos日志 检查gRPC长连接
消息堆积 消费延迟持续增长 RocketMQ控制台 加消费者、优化消费逻辑

3.2 接口调优实战:从3秒到50ms

优化前:订单详情接口P99=3200ms。

排查过程:

复制代码
SkyWalking链路:
OrderController.getOrderDetail (3200ms)
├── OrderService.queryOrder (3180ms)
│   ├── UserClient.getUserById (1500ms)      ← 串行调用1
│   ├── ProductClient.getProductById (1200ms) ← 串行调用2
│   └── StockClient.getStock (400ms)          ← 串行调用3

根因:三个Feign调用串行执行,总耗时 = 1500 + 1200 + 400 = 3100ms。

优化方案:

java 复制代码
// 优化后:并行调用
CompletableFuture<UserDTO> userFuture = CompletableFuture.supplyAsync(
    () -> userFeignClient.getUserById(userId), asyncExecutor);
CompletableFuture<ProductDTO> productFuture = CompletableFuture.supplyAsync(
    () -> productFeignClient.getProductById(productId), asyncExecutor);
CompletableFuture<StockDTO> stockFuture = CompletableFuture.supplyAsync(
    () -> stockFeignClient.getStock(productId), asyncExecutor);

CompletableFuture.allOf(userFuture, productFuture, stockFuture).join();

优化效果:总耗时 = max(1500, 1200, 400) = 1500ms,下降53%。

进一步优化:为三个下游服务添加Redis缓存(第10课的Nacos配置中心配合使用),将调用耗时降至50ms以内。

最终效果:P99从3200ms降至50ms,提升64倍。

3.3 GC优化实战

问题现象:服务每10分钟出现一次2秒的响应时间尖刺。

排查 :Grafana中jvm_gc_pause_seconds显示Full GC每10分钟触发一次,每次耗时2秒。

根因分析:

  • 堆内存:-Xmx2g,老年代约1.4G
  • 对象创建速率:约200MB/s
  • Full GC触发频率:每10分钟一次
  • 每次Full GC后老年代回收率:仅30%(说明大量对象是存活的)

根因:某业务代码在循环中不断创建大对象并放入缓存(本地缓存未设过期时间),导致老年代持续增长。

优化措施:

措施 效果
本地缓存改用Caffeine + 设置过期时间 老年代对象可回收
-Xmx2g → -Xmx4g 延长Full GC间隔
G1GC → ZGC(JDK 21支持) GC停顿从2秒降至10ms以内

优化后:Full GC频率从每10分钟降至每天1次,响应时间尖刺消失。

3.4 集群扩容策略

扩容维度 扩容方式 适用场景
服务实例扩容 增加Pod/容器实例 QPS增长,CPU/内存未饱和
数据库扩容 读写分离、分库分表 数据库连接池打满、慢查询增多
Nacos扩容 3节点→5节点 服务注册量激增
RocketMQ扩容 增加Broker、增加队列数 消息堆积
网关扩容 增加Gateway实例 + SLB 入口流量增长

四、高频面试题总结

4.1 注册配置中心(Nacos)

Q1:Nacos的AP和CP模式有什么区别?如何选择?

A:AP模式(Distro协议)优先保证可用性,实例上下线异步同步,短暂不一致可接受,适合服务发现;CP模式(Raft协议)优先保证一致性,写操作需要多数派确认,适合配置管理。Nacos 3.x默认CP模式。选型原则:服务发现用AP(实例变更频繁,短暂不一致影响小),配置管理用CP(配置错误会导致业务行为异常)。

Q2:Nacos 2025.1.x为什么废弃Bootstrap?

A:Bootstrap上下文作为父容器,导致启动速度慢、属性覆盖逻辑复杂。spring.config.import在单一上下文中完成配置解析,提升启动效率。迁移方式:将bootstrap.yml中的配置迁移到application.yml,添加spring.config.import: optional:nacos:xxx.yaml。

Q3:Nacos集群如何预防脑裂?

A:使用奇数节点(3/5/7);所有节点cluster.conf必须一致;调整Raft选举超时参数;使用外部MySQL持久化数据;节点部署在同一局域网。

4.2 服务调用(OpenFeign + LoadBalancer)

Q4:OpenFeign和RestTemplate的区别?

A:RestTemplate是模板方法式,需手动拼接URL和转换响应;OpenFeign是声明式,通过接口+注解定义调用,底层通过动态代理生成实现。Feign内置了LoadBalancer集成、ErrorDecoder、RequestInterceptor等能力,代码更简洁、可维护性更强。但Spring Boot 4.0推荐新项目使用@HttpExchange声明式HTTP Interface。

Q5:LoadBalancer为什么替代了Ribbon?

A:三个原因------Ribbon与Eureka强绑定,Eureka停维后Ribbon失去基础;Ribbon不支持响应式编程;Ribbon配置模型复杂。LoadBalancer支持响应式、配置简洁、与Spring Cloud Commons深度集成。

Q6:LoadBalancer的缓存导致滚动发布期间调用失败,如何解决?

A:默认CachingServiceInstanceListSupplier的TTL为35秒,导致已下线实例仍被路由。解决方案:关闭缓存(spring.cloud.loadbalancer.cache.enabled=false)或缩短TTL(ttl: 5s);更优方案是自定义Supplier监听Nacos实例变更事件。

4.3 网关(Gateway)

Q7:Gateway 5.0为什么拆分为WebFlux和WebMVC双栈?

A:Java 21虚拟线程的成熟让传统阻塞模型重新具备高并发能力。WebFlux的Reactor学习曲线陡峭,WebMVC+虚拟线程降低了编程复杂度,同时保持了高并发性能。选型建议:新项目优先WebMVC+虚拟线程,存量WebFlux项目继续使用。

Q8:Gateway的过滤器执行顺序如何控制?

A:局部过滤器和全局过滤器混合排序,按order值升序执行。order越小优先级越高。NettyRoutingFilter的order为Integer.MAX_VALUE,是最后一个Pre过滤器。Post阶段按逆序执行。

Q9:Gateway如何实现动态路由?

A:将路由配置存储在Nacos中,实现RouteDefinitionLocator监听Nacos配置变更,解析为RouteDefinition后发布RefreshRoutesEvent事件,CachingRouteLocator监听事件并刷新路由缓存。

4.4 熔断限流(Sentinel)

Q10:Sentinel的滑动窗口算法原理?为什么不用固定窗口?

A:Sentinel将时间划分为多个小窗口(如1秒拆分为10个100ms窗口),统计所有窗口内的请求数。固定窗口在边界处可能出现"双倍流量"(前窗口末尾+后窗口开头),滑动窗口天然避免了这个问题。

Q11:Sentinel熔断器的三种状态如何转换?

A:CLOSED(正常)→ 触发熔断条件 → OPEN(熔断)→ timeWindow到期 → HALF_OPEN(半开,放行一个探测请求)→ 探测成功 → CLOSED / 探测失败 → OPEN。

Q12:网关限流和应用层限流如何配合?

A:网关限流是入口防护,拦截"不该进来"的请求,不消耗应用线程;应用层限流感知调用链健康状态,熔断不健康调用。两者互补,生产环境都需要。网关限流用GatewayFlowRule,应用层限流用FlowRule。

4.5 分布式事务(Seata)

Q13:Seata AT模式的两阶段提交流程?

A:Phase 1------拦截业务SQL,查询前后镜像,执行SQL,保存undo_log,提交本地事务,向TC汇报。Phase 2------TC驱动全局提交(异步删除undo_log)或全局回滚(根据undo_log恢复数据)。

Q14:AT模式的全局锁与本地锁死锁如何解决?

A:根因是@Transactional与@GlobalTransactional的嵌套使用,导致本地锁先于全局锁获取。解决方案:将Feign远程调用剥离出Spring事务上下文;将本地事务传播属性改为REQUIRES_NEW;减少事务粒度。

4.6 消息驱动(RocketMQ)

Q15:RocketMQ事务消息的流程?

A:发送半事务消息 → Broker持久化(对消费者不可见)→ 执行本地事务 → 发送Commit/Rollback → Broker投递或删除。若二次确认丢失,Broker回查生产者的本地事务状态。

Q16:消息消费幂等的方案?

A:唯一索引、状态机、Redis SETNX、Token机制。RocketMQ保证At Least Once,消费端必须幂等。推荐Redis SETNX(原子操作)+ 业务Key。

4.7 监控追踪

Q17:Metrics、Tracing、Logging三者的关系?

A:Metrics告诉你"系统状态如何"(聚合指标),Tracing告诉你"请求经过了哪些服务、每段耗时多少"(链路追踪),Logging告诉你"系统在某个时刻发生了什么"(详细日志)。三者互补,通过TraceID串联。

Q18:如何通过TraceID实现跨服务的日志检索?

A:SkyWalking Agent自动将TraceID注入MDC的tid键,Logback配置%X{tid}输出TraceID到日志,ELK采集后通过traceId字段检索。SkyWalking UI配置跳转链接,实现"一键从链路跳转到日志"。

五、生产避坑大全

5.1 注册配置中心

坑 后果 规避
namespace使用名称而非ID 配置加载失败 始终使用命名空间ID
shared-configs的refresh默认false 共享配置不刷新 显式设置refresh: true
本地配置覆盖远程配置 远程配置不生效 从本地移除同名配置
cluster.conf不一致 Raft无法形成多数派 所有节点配置完全一致
鉴权密钥使用默认值 安全漏洞 替换为32位以上自定义密钥

5.2 服务通信

坑 后果 规避
Feign超时未区分连接和读取 慢请求被误判超时 连接超时1-3秒,读取按业务
非幂等接口配置重试 重复下单/重复扣款 非幂等接口禁用重试
Retryer实例复用 后续请求不再重试 确保clone()返回新实例
LoadBalancer缓存35秒 滚动发布调用失败 关闭缓存或缩短TTL
@PathVariable未指定value 运行时异常 始终显式指定value

5.3 网关

坑 后果 规避
配置前缀未迁移 路由静默失效 使用spring.cloud.gateway.server.webflux.*
TX_XID被过滤器覆盖 Seata事务不回滚 将TX_XID加入白名单
OPTIONS预检被鉴权拦截 CORS跨域失败 鉴权过滤器放行OPTIONS
EventLoop中执行阻塞操作 高并发性能骤降 使用boundedElastic调度器

5.4 熔断限流

坑 后果 规避
关联模式阈值配反 限流行为相反 count约束关联资源
queueCapacity默认无限大 OOM 显式配置队列容量
Sentinel规则未持久化 重启后限流失效 配置Nacos数据源
Token Server未配置fallback 集群限流全失效 fallbackToLocalWhenFail=true

5.5 监控追踪

坑 后果 规避
liveness包含数据库检查 Pod重启风暴 liveness只检查存活状态
MDC在线程池中未清理 日志串号 finally中MDC.clear()
高基数标签 Prometheus存储爆炸 禁止用userId/requestId作标签
异步线程TraceID丢失 链路断裂 配置TaskDecorator

5.6 分布式事务

坑 后果 规避
undo_log表缺失 事务无法回滚 每个业务库创建undo_log表
Feign重试导致分支重复注册 事务状态异常 Seata服务禁用Feign重试
Gateway链路XID丢失 事务不回滚 使用Seata 2.5.0 + 白名单
file存储模式用于生产 重启后事务丢失 使用db或redis模式

5.7 容器化部署

坑 后果 规避
容器内使用localhost 无法连接其他服务 使用Docker Compose服务名
JVM内存未限制 容器被OOM Killer杀死 -Xmx小于容器内存限制
健康检查命令不存在 容器反复重启 使用wget或安装curl
时区未设置 日志时间偏差8小时 ENV TZ=Asia/Shanghai

六、进阶学习路线

6.1 从微服务到云原生

微服务不是终点,云原生才是。下一步的学习路径:

阶段 学习内容 目标
第一阶 Kubernetes核心(Pod/Service/Deployment/Ingress) 将微服务从Docker Compose迁移到K8s
第二阶 Helm + Kustomize 微服务的K8s包管理和配置管理
第三阶 Istio/Linkerd服务网格 将熔断限流从应用层下沉到Sidecar
第四阶 Knative/Serverless 微服务的Serverless化
第五阶 GitOps(ArgoCD/Flux) 声明式持续部署

6.2 从Spring Cloud到Service Mesh

Service Mesh(服务网格)正在改变微服务的通信方式。Istio/Linkerd通过Sidecar代理接管服务间通信,将熔断、限流、重试、mTLS等能力从应用代码下沉到基础设施层。

Service Mesh vs Spring Cloud:

维度 Spring Cloud Service Mesh
语言绑定 Java专用 语言无关
能力位置 应用进程内(SDK) Sidecar代理
升级方式 改代码 + 重新部署 升级Sidecar
性能开销 低 多一跳网络延迟
学习曲线 中 高
适用规模 中小规模 大规模、多语言

结论:Spring Cloud不会消失,但Service Mesh会在大型、多语言组织中逐步替代部分能力。建议先用好Spring Cloud,再根据组织规模决定是否引入Service Mesh。

6.3 推荐学习资源

类型 资源 说明
官方文档 Spring Cloud Alibaba官方文档 版本适配的第一手资料
源码 Spring Cloud Gateway / Sentinel源码 深入理解底层机制
书籍 《微服务架构设计模式》 微服务架构的理论基础
书籍 《凤凰架构》 分布式系统的系统性认知
实践 将本专栏的项目部署到K8s 从Docker到K8s的平滑过渡

七、全专栏总结

7.1 技术能力清单

完成本专栏学习后,你应具备以下能力:

能力领域 具体能力
架构设计 能独立设计微服务的服务拆分、数据隔离、通信方案
注册配置 能部署Nacos集群、设计多环境隔离方案、实现配置加密
服务通信 能实现声明式调用、超时重试、幂等保障
网关 能配置动态路由、实现鉴权限流、部署网关集群
熔断限流 能设计多级限流方案、实现熔断降级、配置系统保护
监控追踪 能搭建Prometheus+Grafana+SkyWalking+ELK完整可观测性体系
分布式事务 能使用Seata AT模式解决跨服务一致性问题
消息驱动 能使用RocketMQ实现异步解耦、可靠投递、消费幂等
容器化部署 能编写生产级Dockerfile、使用Compose编排全栈服务

7.2 最后的建议

建议一:不要为了微服务而微服务。 如果你的团队只有5个人、系统只有3个模块,单体架构可能是更优选择。微服务的代价是分布式系统的复杂性------这个代价只有在系统规模和组织规模足够大时才值得付出。

建议二:可观测性先行。 在引入任何新服务之前,先确保监控、链路追踪、日志体系已经就绪。没有可观测性的微服务,等于在黑暗中开车。

建议三:从最痛的环节开始优化。 不要一次性引入所有组件。先解决最影响业务的问题------如果数据库慢查询是瓶颈,先优化SQL,而非引入Seata。

建议四:保持技术栈的简洁。 每引入一个组件,就增加一份运维负担。Nacos已经提供了注册+配置二合一,不需要再引入Eureka和Spring Cloud Config。

建议五:持续学习,但不要追新。 Spring Cloud的版本迭代速度很快,但核心概念(服务发现、负载均衡、熔断限流)是稳定的。先吃透核心概念,再跟进版本变化。

八、结语

35节课,从单体架构的痛点讲到微服务架构的全景,从Nacos注册中心讲到Seata分布式事务,从Gateway网关讲到SkyWalking链路追踪,最终完成了一个完整的电商微服务项目从设计到上线。

但35节课只是一个起点。微服务架构的深度远不止于此------Kubernetes、Service Mesh、Serverless、Event-Driven Architecture,每一个方向都值得深入探索。

技术在变,但架构思维不变:理解业务需求、识别核心问题、权衡利弊做出选择、持续验证和优化。这才是架构师的本质能力。

感谢你完成这35节课的学习。祝你在微服务架构师的道路上越走越远。

🔗《最新版 SpringCloud 2025 从入门到实战》系列课程导航

去订阅

第一部分:微服务前置基础 & 新版环境搭建(第1-5课)

第二部分:注册中心核心(Nacos 最新版)(第6-9课)

第三部分:配置中心核心(Nacos配置中心)(第10-12课)

第四部分:服务通信核心(OpenFeign + LoadBalancer)(第13-16课)

第五部分:网关核心(SpringCloud Gateway 新版)(第17-20课)

第六部分:熔断、限流、降级(Sentinel 新版)(第21-24课)

第七部分:微服务监控、链路追踪、日志体系(第25-28课)

第八部分:微服务高阶特性 & 分布式核心能力(第29-31课)

第九部分:企业级完整项目实战 & 架构复盘(第32-35课)

相关推荐
技术原点1 小时前
03 · 战略设计(下):限界上下文与上下文映射
架构
努力实干1 小时前
C++ 面向对象与工程架构
开发语言·c++·架构
十年Java程序媛1 小时前
JVM 基础与 GC 垃圾回收详解|可达性分析、分代模型、垃圾收集器、STW
java·开发语言·jvm·spring boot·后端·面试
张张123y1 小时前
后端第十三课:大模型评测(Evals)从 0 到 1——看完面试能讲明白
后端·面试·职场和发展·大模型评测·evals
aichitang20242 小时前
Meta Muse Spark Open:816B 巨型开放权重多模态 Agent 模型架构、部署实战与社区首测全解
大数据·人工智能·python·算法·ai·架构·spark
阡陌数智2 小时前
Anthropic Claude Fable 5.1 长周期 Agent 原生架构解析:工具调用链路稳定性与 API 聚合平台落地实战
人工智能·语言模型·自然语言处理·架构·推荐算法
艾莉丝努力练剑2 小时前
【AI大模型接入SDK】ChatServer接口实现
c++·人工智能·学习·ai·架构·大模型·sdk
Thomas.Sir2 小时前
第34课:微服务Docker容器化部署 & 生产环境上线
spring cloud·docker·微服务
进击的明明16 小时前
当AI开始“边想边干”:深入聊聊ReAct,以及如何用Python手搓一个简单Agent
python·面试·agent