新闻详情

新闻详情

首页 / 资讯中心 / 详情

架构演进路径:从单机分库到微服务容器编排实战指南

发布时间:2026/9/30 12:00:42来源:尧图网络
架构演进路径:从单机分库到微服务容器编排实战指南
读写分离、垂直分库、微服务、容器编排——这些词单独拿出来都能讲半小时但真正让人头疼的是把它们串成一条演进路径时每一步该怎么做、为什么要这么做。我经历过一个项目从单机部署一路走到容器编排的完整过程途中踩了不少坑也总结了一套可复用的经验。如果你的系统也正卡在某个阶段这篇内容可以作为一份参考地图帮你判断下一步往哪走、怎么走才不会翻车。先说一点架构演进不是集邮不是把流程图里的格子全点亮就赢了。每一层改动都要有明确的业务或运维痛点驱动并且要付出相应的代码改造、团队协作和基础设施成本。下面我按阶段拆开讲。1. 从单机到应用数据库分离先解决资源打架再谈其他1.1 单机阶段真正的瓶颈是什么项目刚起步的时候应用和数据库在同一台服务器上跑是最常见的部署方式。好处是省机器、部署简单、调试方便但用户量和数据量一旦增长第一个暴露的问题往往不是代码性能而是资源竞争。一台服务器上的 CPU、内存、磁盘 IO 是有限的。应用进程需要内存做缓存和线程池数据库引擎也需要内存做缓冲池和排序区应用在处理请求时要大量读写磁盘日志数据库同时也要刷脏页、写 redo log。两个重量级选手挤在同一台机器上互相抢资源表现就是接口延迟忽高忽低慢查询和 CPU 飙升交替出现排查半天也说不清到底是应用慢还是数据库慢。我在第一次遇到这种情况时第一反应是优化 SQL 和加缓存效果有一些但治标不治本。真正解决问题的动作是把数据库挪到独立服务器让应用和数据库各自拥有完整的资源。1.2 拆分操作中的关键细节应用数据库分离的代码改动其实很小核心是改配置和网络连通性。应用服务器保持原有部署数据库放到新机器然后应用通过内网 IP 连接数据库。以 Spring Boot 为例数据源配置从 localhost 改成数据库服务器地址spring: datasource: url: jdbc:kingbase8://10.0.0.3:54321/app_db username: app_user password: app_password hikari: maximum-pool-size: 30 minimum-idle: 5 connection-timeout: 30000这里有几个容易忽略的点。第一连接池参数必须重新评估。应用和数据库同机时连接走的是回环地址延迟极低跨机之后网络往返时间增加连接池如果还配置得很小高并发时会造成获取连接等待。反过来连接池也不能盲目调大因为数据库服务器的连接处理能力有限过大的 max-active 只是把压力转移到数据库端。第二防火墙和安全组要放行数据库端口。这个问题很多人是在测试环境一切正常、上线后突然连不上数据库时才发现的排查起来很隐蔽。第三尽量通过内网 IP 访问数据库配上独立的数据库账号不要用 root 或超级用户跑业务连接。应用数据库分离之后账号权限收敛和网络隔离是顺手就该做的事否则安全风险会随服务器数量增加而扩散。1.3 拆分后会得到什么又暴露什么问题独立部署带来的收益是明确的应用服务器可以按 CPU 密集型来选配数据库服务器可以偏向大内存和高性能磁盘备份、监控、版本升级都可以独立操作应用发布重启不再影响数据库连接。而且应用和数据库的故障域被切开了数据库服务器的磁盘异常不会直接拖垮应用进程。但这一步也把原来的“单点”变成两个单点。应用挂了可以快速拉起数据库挂了整个系统就瘫痪了。所以说应用数据库分离只是架构演进的起点它解决的是资源竞争问题并没有解决可用性和扩展性问题。下一阶段的集群和读写分离就是冲着这两个目标去的。2. 集群化与无状态改造会话和文件上传才是最难处理的部分2.1 加机器容易会话立刻变成麻烦应用服务器集群的第一步往往很简单再加一台服务器把应用部署两份前面挂一个 Nginx 做负载均衡。但上线后用户反馈的第一句话往往是“我登录后又掉线了”。原因不复杂。单体应用默认把 session 存在本地内存两个应用节点各存各的用户第一次请求打到节点 A下一次请求被 Nginx 转发到节点 B节点 B 的本地 session 里没有登录状态自然判定为未登录。要解决这个问题有三个层次的方案适合不同阶段。2.2 会话问题的三层解法第一层是粘性会话。配置负载均衡让同一个用户的请求总是转发到同一台节点比如 Nginx 的 ip_hash 或者基于 Cookie 的会话保持。这个方案改动最小但问题是节点故障时用户的会话还是会丢而且负载均衡策略被绑定无法充分发挥多节点的流量分发能力。第二层是会话集中存储。把 session 数据放到 Redis所有应用节点共享。Spring Session 框架做的事情就是拦截 HttpSession 操作把数据存储到 Redis对业务代码基本透明。这个方案是单体集群化的过渡标准但它引入了新的基础设施依赖也要求 Redis 本身是高可用的。第三层是无状态化。服务端不保存用户会话用户登录成功后发一个 token后续请求带上 token服务端校验即可。最典型的实现是 JWT。无状态化之后任意节点都能处理任意请求负载均衡策略完全不用绑定用户扩缩容变得非常灵活也为后面的微服务拆分打好了基础。2.3 无状态化必须同步处理的两件事如果决定走无状态化有两件事不能漏。第一件是文件上传。应用集群之后如果文件还是写在本地磁盘用户上传的头像落在节点 A下次请求被转到节点 B 就读不到这个文件。正确做法是把文件迁移到独立存储服务比如对象存储或 NAS 挂载应用只保存访问路径请求任何节点都能通过同一个路径读取文件。第二件是定时任务。单机部署时定时任务每天执行一次没问题集群化后每个节点都会执行一次重复发短信、重复跑对账、重复生成报表各种诡异问题都会冒出来。解决办法是引入分布式锁比如基于 Redis 的 SETNX 实现一个抢锁逻辑只有抢到锁的节点才执行任务或者把定时任务收敛到一个独立的调度服务统一分发。下面是一个基础 Nginx 集群配置注意我没有开启 ip_hash因为无状态化之后不需要粘性会话upstream app_cluster { server 10.0.0.11:8080 weight5; server 10.0.0.12:8080 weight5; keepalive 32; } server { listen 80; location / { proxy_pass http://app_cluster; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; } }集群化的核心工作不是加机器而是把“有状态”的东西全部改造成“无状态”的。这个过程越彻底后面走到微服务阶段就越轻松。3. 读写分离的实现路径主从延迟与数据一致性兜底3.1 为什么读写分离顺理成章应用集群化后数据库就成为系统中最容易触顶的部分。绝大多数业务系统的读写比非常高可能 8:2 甚至 9:1也就是大数据量与请求大部分是查询只有少部分是写入。如果让一个数据库同时承担高并发写入和大量查询锁竞争、连接数占用和 IO 压力都会急剧增加。读写分离的思路是写操作走主库读操作走从库主库通过复制机制把数据变更同步到从库。这个方案的前提是业务能容忍一定程度的复制延迟同时复制的机制足够稳定。3.2 复制原理与一个金仓配置示例以 MySQL 为例主库把数据变更写入 binlog从库开启 IO 线程拉取 binlog 并写入本地 relay log再由 SQL 线程回放最终完成数据同步。国产数据库的方案也类似比如 KingbaseES 支持物理流复制和逻辑复制整体思路和 PostgreSQL 生态一致。在应用层最关键的是要能在读写数据源之间切换。Spring Boot 项目里常用动态数据源框架默认数据源配主库在方法上标记走从库的注解。下面是一个基于动态数据源框架连接 KingbaseES 的配置示例spring: datasource: dynamic: primary: master strict: true datasource: master: url: jdbc:kingbase8://10.0.0.3:54321/app_db username: app_user password: app_password slave: url: jdbc:kingbase8://10.0.0.4:54321/app_db username: app_user password: app_password使用起来就是在方法上打注解Service public class OrderService { Autowired private OrderMapper orderMapper; DS(slave) public ListOrder listRecentOrders(Long userId) { return orderMapper.selectByUserId(userId); } DS(master) public void createOrder(Order order) { orderMapper.insert(order); } }这是一个很容易理解的“写少读多”场景读取列表的方法走从库创建订单的方法走主库。但实际项目中不能这么粗暴下面两个坑必须提前设计。3.3 坑一事务内的数据源路由如果在开启事务的方法里执行读操作读取到的数据是否一定是刚写入的数据如果路由到从库复制延迟会导致读不到最新数据。动态数据源框架通常会在事务开始时锁定主库事务内的所有读写都走主库因为事务本身就是强一致性诉求的体现。这是正确的默认行为但开发者要理解这一点不要在事务方法里强制切换数据源。3.4 坑二主从复制延迟的兜底复制延迟是读写分离最大的敌人。最常见的现象是用户提交订单后立刻刷新列表结果看不到刚创建的订单因为从库还没同步到这条新数据。这个问题的兜底策略要拆场景处理。强一致场景比如用户订单详情、支付结果查询必须强制走主库。写入完成后需要立刻读到的数据可以临时放入 Redis 缓存在缓存失效前优先读缓存。只有能接受秒级延迟的场景比如首页推荐列表、运营后台统计报表才适合直接走从库。根据数据时效性要求做分类路由才是读写分离的完整设计而不只是把注解加上。读写分离能有效缓解读压力但它有两个做不了的事第一单表数据量持续膨胀时查询性能依然会下降第二多个业务模块共享一个数据库资源竞争问题还在。所以接下来要处理的是数据本身的组织方式。4. 冷热分离的代价与收益把大表压力卸下来4.1 大表为什么越来越慢我们在项目里遇到过核心订单表膨胀到几千万行的情况即使索引建得合理查询响应也在明显变慢。原因主要有两个索引树的层级变深定位一条记录需要更多的磁盘 IO历史数据占据了大量缓存空间热门数据反而容易被挤出内存。读写分离缓解不了这个问题因为读请求大多集中在最近的数据历史数据几乎无人访问却还在参与索引维护和占用存储。4.2 如何判定冷热数据最简单的判定标准是时间。比如订单表可以约定订单完成超过 90 天为冷数据。如果你担心简单时间划分不够准确可以叠加业务状态比如“已经退款且超过 90 天”“已经关闭且超过 180 天”。最终落到实现上就是一张归档策略表或者代码里的一个常量配置。冷热分离后查询路径也需要调整。通常采用“先查热表未命中再查归档表”的逻辑。对上层接口可以保持透明但底层 SQL 要双路查询。需要注意的是归档数据虽然访问少不代表永远不会被访问所以归档表同样要建索引否则用户查询历史订单时就等着全表扫描吧。4.3 迁移任务最容易犯的错冷数据迁移实现起来不复杂但有一个典型的低级错误用一条 DELETE 语句删掉几百万条历史数据导致大事务、长锁、主从延迟飙升在线业务被拖垮。我在这上面吃过亏现在的归档任务全都是分批执行的以订单表为例每一批只处理 500 条-- 分批扫描需要归档的订单 ID select id from orders where finish_time 2024-01-01 00:00:00 and archived 0 order by id limit 500; -- 批量插入归档表 insert into order_history select * from orders where id in (...) and archived 0; -- 更新标记并按主键删除 update orders set archived 1 where id in (...); delete from orders where id in (...) and archived 1;每次处理完一批后 slept 一小段时间再处理下一批避免长时间占用连接和锁资源。大事务不仅影响当前库还会通过 binlog 复制把压力带到从库这个连锁效应比想象中更严重。4.4 冷热分离后的收益完成冷热分离后在线热表的体积会稳定在一个合理范围内索引缓冲命中率明显提高查询性能回到正常水平。归档数据可以放到更廉价的存储上同一个业务系统里热数据是珍贵的在线资源冷数据是廉价可查的历史资源分开管理后成本评估也变得清晰。但这仍然是单库内部的优化。当业务包含用户、商品、订单、支付等多个模块且所有模块的表都在同一个数据库里时一次慢查询或一个大事务就可能拖垮所有模块这就是垂直分库要解决的问题。5. 垂直分库的拆分依据从业务模块到独立数据域5.1 垂直分库的本质是切分资源池垂直分库是按业务边界把原本集中在一个数据库里的表拆到多个独立的数据库中。典型做法是拆成 user_db、product_db、order_db、pay_db。每个数据库有自己的进程、独立连接池和独立资源某个库出现慢查询时不会占用其他库的连接池和磁盘 IO。这一步看起来只是表换个库实际上是对应用代码的一次强制重新划分。因为在单库环境下订单列表要显示用户昵称一条 JOIN 就能搞定分库之后订单库里只有 user_id再想拿用户昵称要么查询时调用用户服务要么在订单表冗余用户昵称字段。无论选哪种代码结构都要跟着变化。5.2 拆分的完整过程我们做垂直分库时顺序是固定的先梳理业务域和数据访问关系明确哪些表的访问是独立的哪些查询是跨域的然后为每个域准备独立数据库账号和连接池接着改造应用层用模块化风格替代跨库 JOIN最后通过数据迁移工具把存量数据搬到新库校验无误后再切换读写路由。数据迁移这一步需要一个可靠的顺序。最稳妥的是应用层双写旧库和新库同时更新以旧库为准跑一段时间后对比数据一致性再切换读流量到新库。这个方案速度不是最快的但每一步都能回滚对线上系统来说可回滚比提速重要得多。5.3 跨库事务的选择与取舍垂直分库后最让团队不适应的是原来依赖本地事务的跨库操作失效了。比如下单时既要扣减库存又要生成订单现在库存和订单不在同一个库本地事务无法保证两者同时成功或同时失败。现实中的解决方案有两类。第一类是本地消息表或消息队列加最终一致性先把订单生成事件发到消息队列库存服务消费消息后扣减库存如果失败就重试加上对账机制兜底。第二类是引入分布式事务中间件比如 Seata让跨库事务以二阶段提交的方式保持强一致但性能开销和实现复杂度都要高得多。我的建议是尽量避免跨库强一致事务不是因为它做不到而是因为大多数业务场景都可以设计成异步补偿模式。用户下单这个动作真正必须实时响应的只是“订单创建成功”而不是“库存必须立刻扣减成功”。把事情的强一致范围压缩得足够小系统的可扩展性会大幅提升。5.4 垂直分库到微服务只差一步垂直分库之后应用代码通常已经被迫按业务模块做了一定划分比如订单模块、支付模块、用户模块。但这个时候它们还运行在同一个进程里模块间是本地调用编译期耦合依然存在一个模块的内存泄漏或死循环可以把整个进程拖垮。把这些模块拆成独立进程、独立部署、独立扩缩容就是微服务要做的事。6. 微服务落地拆分边界、注册中心与本地联调工作流6.1 微服务的拆分标准是业务能力不是数据表很多团队在拆分微服务时有一个误区看到数据库里有订单表就拆订单服务有用户表就拆用户服务拆完发现一个下单操作要调用五六个服务性能没提升反而下降。正确的拆分方式是围绕业务能力和业务用例展开而不是围绕数据表展开。判断一个服务边界是否合理可以问三个问题这个能力是否被多个上游系统依赖这个能力是否具备独立演进的节奏这个能力是否能让一个小团队端到端闭环维护如果答案都是肯定的这个边界大概率是合理的。业内常说的微服务架构图核心部件大致是注册中心、配置中心、API 网关、服务提供方和服务消费方。国内很多项目会直接用若依微服务 plus 这类脚手架起步它把用户、认证、系统管理这些模块都拆好了注册中心、网关、监控也预先集成确实省事。但脚手架只是给了骨架真正决定微服务质量的还是业务边界的划分是否清晰。6.2 基础设施组件怎么选注册中心和配置中心可以选 Nacos服务间调用可以选 OpenFeign 或 Dubbo网关可以选 Spring Cloud Gateway。组件选型要考虑团队已有经验而不是追求最新。组件之间要形成配合比如网关负责统一鉴权和路由注册中心负责服务发现配置中心负责动态变更。服务之间的调用要定义清晰的 API 契约包括接口版本、超时时间、重试策略。不是所有调用都需要同步等待完成像下单后发送短信通知这种场景异步消息是更好的选择。把同步调用减少到最小范围微服务的稳定性会显著提高。6.3 本地启动与联调的真实工作流这也是搜索热词里经常出现的问法“go 微服务与系统如何启动与联调”。我以 Java 和 Go 混合的场景为例说说我们团队的做法。本地开发环境里所有依赖的 MySQL、Redis、Nacos 统一用 docker-compose 启动服务代码在本地运行。Java 项目在 IDEA 里按聚合工程管理启动顺序是先启动注册中心 Nacos再启动网关 gateway最后启动各个业务服务。每个服务启动时会自动注册到 Nacos网关通过服务名转发请求本地调试一个接口可以直接从网关入口发起链路上所有服务都会在本地日志里打出 traceId。如果涉及 Go 微服务流程也类似。每个 Go 服务单独启动监听本地端口注册到同一个 Nacos。跨语言调用时最容易出问题的是序列化Go 和 Java 之间不要依赖默认二进制序列化统一用 JSON 作为传输格式字段名和类型提前对齐。联调之前先确认各个服务都注册到了同一个环境注册中心里服务列表完整不然会出现服务间调用时找不到目标服务的情况。6.4 链路追踪和日志必须提前规划微服务链路一旦变长排查问题就变得十分困难。一次前端请求可能经过网关、用户服务、订单服务、支付服务四个进程任何一环慢都可能引发超时。所以我们要求每个服务在入口生成 traceId在调用下游时通过 HTTP Header 传递日志统一打印 traceId。配合 SkyWalking 或同类链路追踪工具可以按 traceId 查询出整条调用链的耗时分布。没有链路追踪的微服务在生产环境出了故障基本就是靠猜。日志必须集中采集至少做到每个服务日志文件名和格式统一字段里包含 traceId、服务名、时间戳。微服务不只是一个架构图它是一整套可观测性的集体约定。7. 容器编排临门一脚从手工部署到弹性伸缩的最后一公里7.1 为什么 Docker 不够还需要 Kubernetes微服务数量变多之后如果用 Docker 部署到十几台服务器上每台机器要维护容器启动脚本、网络配置、存储挂载和升级回滚纯粹靠手工会把人拖垮。而且手工操作很难保证环境一致性同一份镜像在 A 机器上正常在 B 机器上因为端口冲突、目录权限或环境变量不同就跑不起来。Kubernetes 解决的是集群维度的编排问题。它把部署、服务发现、负载均衡、配置管理、滚动升级、弹性伸缩都抽象成声明式 API你只需要描述“最终要运行什么”控制面会负责把实际状态拉向期望状态。7.2 最小可运维部署模板一个服务在 Kubernetes 里的最小集合包括 Deployment、Service、ConfigMap。下面是一个标准模板apiVersion: apps/v1 kind: Deployment metadata: name: order-service spec: replicas: 3 selector: matchLabels: app: order-service template: metadata: labels: app: order-service spec: containers: - name: order-service image: registry.example.com/order-service:1.2.0 ports: - containerPort: 8080 envFrom: - configMapRef: name: app-config --- apiVersion: v1 kind: Service metadata: name: order-service spec: selector: app: order-service ports: - port: 8080 targetPort: 8080配置项分成 ConfigMap 和 Secret普通配置放 ConfigMap数据库密码、API 密钥这类敏感信息放 Secret。镜像标签写上版本号方便回滚Deployment 更新镜像后 K8s 会按配置的滚动更新策略逐个替换 Pod健康检查失败时会自动停止发布这个机制比手工停服发布安全得多。7.3 容器编排带来的新问题K8s 不是万灵药它把一部分问题自动化了但会引入另一部分复杂度。网络插件、持久化存储、日志采集、监控告警都要额外搭建。Pod 的 CPU 和内存 request 如果不按真实负载配置要么资源利用率低要么节流导致服务变慢。如果团队规模不大盲目上 K8s 会把精力从业务开发转移到基础设施维护上反而得不偿失。合理的路径是先在单台机器上用 Docker Compose 管理多个服务等服务的数量和环境复杂度确实超过 Compose 能承载的范围再考虑容器编排平台。判断标准不是“现在流行什么”而是“手工操作的出错频率是否已经高到必须自动化”。7.4 弹性伸缩的收益与限制容器编排最吸引人的能力是按负载自动扩缩容。配置好 HorizontalPodAutoscaler 之后CPU 使用率超过阈值会自动增加 Pod 副本流量回落后再自动缩容。这个功能在应对突发流量时特别有用但要注意如果应用进程本身启动要一两分钟自动扩容的响应速度是滞后于流量高峰的所以还要预留一定的容量余量或者配置基于请求量的提前扩容。我个人的体会是容器编排把“部署”这件事从手工操作变成了声明式管理但并没有消除对架构设计的依赖。一个服务能不能弹性扩缩容取决于它是不是真正无状态是不是把配置和敏感信息都外置了是不是能快速启动和优雅停机。这些其实早在集群化阶段就已经埋下伏笔容器编排只是把之前打下的基础显现出来。最后再分享一套实战选择逻辑整套演进路径写下来最核心的认知是每一步都要对应明确的痛点。应用数据库分离解决资源竞争集群化解散单点风险读写分离解决读压力冷热分离解决大表性能垂直分库解决多模块资源争抢微服务解决独立演进和故障隔离容器编排解决多服务部署运维效率。不同阶段的痛点在业务中的优先级也不同。如果你的系统还在单机阶段那就先做应用数据库分离顺手把无状态化改了如果连接池和 CPU 已经吃紧再考虑集群如果数据库主库 CPU 居高不下、慢查询都在线告警了再上读写分离。后面的每一步都不要因为“微服务架构图好看”或者“面试要考”就提前做。在一个主持人身份的项目里我在最后阶段尤其体会到一点架构演进不需要一次投票做所有答案它更像是在正确的时间点做最小的必要改动。先拆一台数据库、先加一个节点、先迁一批冷数据这些看起来很小的动作比规划一整年的微服务改造靠谱得多。每次演进之后一定要留出时间观察数据用监控指标验证这一步是否真正解决了当时的痛点然后再决定是否进入下一阶段。
网站建设高端定制企业官网
RELATED

相关资讯

更多精彩内容,欢迎继续阅读

较早相关资讯

最新相关资讯

Veeam Backup 12 在 Windows Server 2022 上的部署避坑指南 2026/9/30 12:55:10

Veeam Backup 12 在 Windows Server 2022 上的部署避坑指南

很多人第一次装 Veeam Backup 12,会以为这是个"下一步到底"的活儿:下载 ISO、挂载、点几下、输个 license,完事。但真放到 Windows Server 2022 上动手,卡在数据库选择、服务账号权限、备份代理部署失败、作业反复报警告…

阅读更多 →
在线政务服务中心管理系统源码解析:SpringBoot+Vue+MyBatis实战 2026/9/30 12:55:10

在线政务服务中心管理系统源码解析:SpringBoot+Vue+MyBatis实战

最近整理在线政务服务中心管理系统源码的时候,一直在想一个问题:这类系统市面上并不少,为什么还要专门写一套?后来把整个项目跑通、拆完、再重新部署一遍,我意识到关键不在于"有没有系统",而在于…

阅读更多 →
新南威尔士 COMP9312 DataAnalytics for Graphs 作业1-Q1 2026/9/30 12:55:01

新南威尔士 COMP9312 DataAnalytics for Graphs 作业1-Q1

​可以访问链接:Q1 题面 附带的 Jupyter 代码文件:【Colab】COMP9312 Project Q1: First Cycle-Causing Edge A. 题解(中文) 1. 复杂度分析 时间复杂度: O(mα(n)n)O(m\times \alpha(n)n)O(mα(n)n) 并查集查找和合…

阅读更多 →
141、Agent的Prompt自动优化 2026/9/30 12:54:54

141、Agent的Prompt自动优化

141、Agent的Prompt自动优化 那天晚上排查一个Agent的循环调用问题,日志里反复出现同一句“I don’t have enough information”,明明系统提示词里已经把知识库路径、工具用法、甚至兜底话术都写清楚了,可模型就是不肯用。我盯着那几行Prompt看了一个钟头,忽然意识到问题不…

阅读更多 →
推三免单模式系统开发 - 私域邦网络 2026/9/30 12:54:48

推三免单模式系统开发 - 私域邦网络

推三免单是一种基于社交裂变与用户分享机制的营销模式,核心逻辑是通过用户邀请三位新成员参与活动,即可获得自身订单全额免单的权益。该模式广泛应用于私域电商、社群运营及品牌推广场景中,能够有效提升用户活跃度与转化率。发布企业&#xf…

阅读更多 →
任务分解-智能体该不该自己拆任务 2026/9/30 12:54:48

任务分解-智能体该不该自己拆任务

摘要 复杂任务要拆成步骤,问题是由谁来拆。让智能体自己规划,灵活但不可控;把流程写死,可控但无法应对变化。 这大概是智能体架构设计中最核心的一次取舍。本文拆解四种分解方式、各自的适用条件、分解粒度如何确定,以…

阅读更多 →

今日资讯

本周资讯

本月资讯

看完文章仍有疑问?

联系尧图顾问,获取一对一建站咨询

立即免费咨询 📞 400-888-8888
📞 ✉