尧图网络 高端网站定制 · 原创设计
免费咨询热线
400-888-6620
免费获取方案
RabbitMQ高可用实战:从镜像集群到仲裁队列迁移指南
服务异步通信里有一个我几乎每次都要强调的点业务故障还能重试消息基础设施一旦挂了上游生产者手里全是待写入的变更事件消费方在等状态变更故障面会被成倍放大。RabbitMQ高可用问题如果只停留在“集群部署了就安全”的理解层面那和单机部署没有本质区别。这篇是“微服务24_服务异步通信04”系列的笔记专门拆解RabbitMQ在微服务异步通信中的高可用方案重点围绕三个关键词展开高可用问题、镜像集群、仲裁队列。适合已经在用RabbitMQ做异步消息又不想在有状态中间件上栽跟头的开发者、架构师和运维同学。先说结论如果你们项目版本在RabbitMQ 3.8以上新队列不要再用镜像集群那一套直接用仲裁队列。镜像集群是历史方案仲裁队列才是官方长期支持的共识型高可用方案。下面把原因、原理和迁移过程完整捋一遍。1. RabbitMQ高可用问题到底出在哪1.1 微服务异步链路最怕“一边写一边丢”微服务之间做异步通信最常见的结构是订单服务发事件到交换机队列削峰、缓存消息库存服务、通知服务、积分服务各自订阅消费。这个链路里RabbitMQ扮演的不仅是传输通道还是一个有状态的数据暂存区。一旦节点宕机队列如果不可用不是“等几秒重启就行”的小问题而是会产生连锁反应生产者连接断开、消息堆积无处落盘消费者线程空转或报错业务侧误以为下游全挂了。更隐蔽的问题在于“消息丢失你根本感知不到”。生产者把消息发给交换机成功AMQP协议返回了确认此时消息已经保存在队列里。如果这个队列只存在于一个节点节点断电内存中未落盘的消息直接丢掉即使落盘磁盘损坏也一样丢。很多团队会把消费者那边的失败重试做得很好却忽略了消息队列本身的持久化与副本机制。RabbitMQ高可用要解决的不是“不故障”而是“故障后能快速恢复且恢复过程中消息不能丢”。要达到这个目标必须同时考虑节点冗余、队列副本、消息复制三件事。1.2 单机和普通集群为什么都不够先把基础概念说透。单机部署时所有队列、交换机、绑定关系都在一个Erlang虚拟机里。性能瓶颈有限核心问题却是可用性节点一挂生产者无法连接所有等待消费的消息全部不可达。很多团队一开始用单机跑测试环境功能正常到生产就暴露了。普通集群非镜像解决的是“节点间可以互相访问”的问题。队列仍然绑定在某个物理节点上其他节点知道这个队列存在但消息数据不在它们那里。比如三个节点组成普通集群订单队列落在节点A上节点A宕机后节点B和C虽然活着但队列Leader在A上消息暂时无法生产消费。普通集群能做水平扩展能分担交换机路由压力却不能提供故障转移能力。这个点经常被误解。有人会问集群里不是每个节点都有队列数据吗不是的。默认情况下集群共享的是元数据交换机、队列名、绑定关系、权限而不是消息体。所以我在实际项目中判断一个RabbitMQ集群是否高可用从来不看节点数只看队列是否有副本、是否具备选主能力。1.3 高可用目标拆解成三个层次我把RabbitMQ高可用问题拆成三个层面逐层验证第一层节点可用。集群中部分节点宕机剩余节点仍能接收生产和消费请求这是最基础的准入条件。第二层队列可用。承载核心业务消息的队列不随某个节点宕机而消失队列元数据和消息数据有完整副本。队列在就能继续处理消息。第三层消息不丢。在节点异常、网络分区、主备切换过程中消息最多出现一次或至少一次语义要清晰不能出现大面积消息消失。只搭了普通集群只满足第一层。要满足第二、第三层就必须靠镜像集群或仲裁队列。2. 镜像集群过去解决高可用的主流方案2.1 镜像集群到底复制了什么镜像集群的核心思想很简单把一个队列的主节点和若干个从节点组成一组消息写入主节点后异步或同步复制到从节点。这个模式下普通队列升级为“镜像队列”任意一个从节点都持有该队列的消息副本。主节点不可用时从节点中会推举出一个新的主节点继续服务。镜像的关键在于“队列镜像策略”不是手动逐个队列配置。运维通常会用Policy规则批量设置例如把名称匹配某个前缀的所有队列都镜像到所有节点rabbitmqctl set_policy ha-all ^order\. {ha-mode:all,ha-sync-mode:automatic} --apply-to queues这个策略的意思是只要队列名以order.开头就在集群所有节点上创建镜像副本并自动同步数据。ha-mode: all是最简单的模式副本分布到每个节点ha-mode: exactly可以指定副本数量ha-mode: nodes可以手动指定副本落在某些节点上。镜像队列还有一个“master”概念。正常情况下消息的写入和消费都经过mastermaster负责把消息广播给从节点。如果master挂掉集群会从存活的从节点中选举新的master。选举过程不是随机的而是根据从节点的同步状态和负载情况综合决定。2.2 镜像策略里的同步模式与坑镜像队列有两种同步时机自动同步和手动同步。ha-sync-mode: automatic表示新加入的镜像会自动向主节点同步全部消息manual则需要人工触发rabbitmqctl sync_queue否则新从节点可能一直是空白镜像只有新增消息会追加历史消息缺失。很多团队在扩容节点时踩过这个坑加了一个新节点把Policy设成all以为新节点会自动补齐消息。结果因为策略配置时同步模式是manual新节点上只有后续增量消息历史消息根本不在镜像里。主节点一挂选出来的新master数据不完整消费端消费了一部分消息等于隐性丢消息。另一个常见问题是同步风暴。当某个队列积压了上百万条消息你此时新增一个镜像节点自动同步会把海量消息从master同步到新节点期间master的I/O和网络带宽会被占满生产者和消费者两端都出现肉眼可见的延迟。所以镜像队列虽然能解决高可用但运维动作要非常小心尽量不要在业务高峰期加节点。2.3 镜像集群的可用性优势与明显槽点镜像集群的优势是历史兼容性好RabbitMQ 3.7时代就已经成熟技术资料多很多老项目的队列都是这么扛过来的。它的思路符合直觉主从复制有备胎主挂了顶上。但槽点也很明显第一复制是异步的。master收到消息后向从节点转发如果master在转发完成前宕机这条消息就可能丢。异步复制的性能好但一致性弱。第二脑裂风险。镜像集群没有内置共识机制选主依赖于集群分区策略。如果网络分区发生旧master所在的小部分节点可能继续提供服务另一个分区里的镜像也可能自认为master两边都接收消息产生两个逻辑上独立却使用同一队列名的“脑裂”现象消息错乱。第三master单点瓶颈依旧存在。镜像模式下所有写操作都集中在master从节点只做备份不承担读写压力。副本越多master复制开销越大。所以镜像集群更像“给单点加了个备胎”并没有真正把单点压力摊开。这些痛点促使RabbitMQ官方在新版本中力推仲裁队列逐渐把镜像队列打入弃用名单。3. 从镜像集群升级到仲裁队列3.1 仲裁队列是Raft共识下的高可用方案仲裁队列之所以叫“仲裁”是因为它引入了Raft共识算法由多个队列副本共同参与提交和选举。它和镜像队列最大的区别是镜像队列是“一个主节点 多个备份节点”数据流是单向复制仲裁队列是“多个对等副本组成的组”每个副本都参与Raft投票消息提交需要大多数节点确认。用生活中的例子类比镜像集群像“老板拍板秘书们复制记录”老板倒了秘书们推一个临时代理但秘书们的记录可能对不上仲裁队列更像“几个合伙人共同记账”每一笔账必须超过半数合伙人签字才算有效某个人掉线了其他人依然依据合法账本继续经营。默认情况下仲裁队列在声明时会自动复制到集群所有节点。三个节点的集群仲裁队列就有三个副本五个节点的集群就有五个副本。副本间通过Raft选出一个Leader所有读写都走Leader但写操作必须复制到多数派节点才算成功。所以仲裁队列的可用性边界非常清晰三个副本的队列至少需要两个副本存活才能选举Leader并提供服务。节点损失不超过一半消息不丢如果超过一半节点同时挂掉队列不可用。这种特性让仲裁队列在面对网络分区时很稳多数派一侧继续工作少数派一侧无法成为Leader从机制上杜绝了脑裂。3.2 声明一个仲裁队列仲裁队列不是靠Policy触发的而是队列自身的类型。声明队列时显式指定x-queue-type: quorum即可。命令行的写法如下rabbitmqadmin declare queue nameorder.dlx durabletrue \ arguments{x-queue-type:quorum,x-quorum-initial-group-size:3,x-delivery-limit:10}如果是Java应用用Spring AMQP构建队列时这样写Bean public Queue orderEventsQueue() { return QueueBuilder.durable(order.events) .withArgument(x-queue-type, quorum) .withArgument(x-quorum-initial-group-size, 3) .withArgument(x-delivery-limit, 10) .build(); }参数x-quorum-initial-group-size表示初始副本数集群少于三个节点时建议先补齐节点再声明。x-delivery-limit是仲裁队列独有的消费重试上限消息重复投递超过这个次数会被判定失败可以结合死信队列处理避免无限重试打爆下游。在管理后台可以看到每个仲裁队列的类型标记还有Raft状态信息包括Leader节点、副本节点、最后提交的日志索引等。生产环境建议用rabbitmqctl list_quorum_queue_status来检查队列的健康状态。3.3 仲裁队列与镜像队列的取舍对比把两类方案放到同一张表里对比选型思路会清晰很多对比项镜像集群仲裁队列复制模型主从异步复制Raft多数派同步确认数据一致性异步复制存在丢消息窗口写入需多数派确认一致性更强脑裂容忍依赖分区策略有脑裂风险少数派自动降级避免脑裂故障切换从节点投票选出masterRaft选举新Leader性能写主节点吞吐高每次写需多数派落盘吞吐低一些存储内存与磁盘混合可非持久化必须持久化消息全部落盘运维策略配置简单但同步风暴难处理副本数量固定扩容需重建队列官方支持已弃用RabbitMQ 4.0移除长期支持未来演进方向仲裁队列最大的代价是性能。因为它要求消息写入到多数派节点并落盘后才对消费者可见每次生产确认的延迟比镜像队列明显更大。但它换来的是更高的可靠性。对于订单、支付、库存这类核心异步事件我不能接受“偶尔丢一条”所以宁可多花几毫秒的写入延迟。3.4 仲裁队列的使用边界仲裁队列并不是万能使用前要知道它的边界条件第一队列必须持久化。仲裁队列本身不提供非持久化模式声明成临时队列或排他队列都会报错。消息发送时也应当使用持久化消息否则大量临时消息会白白消耗磁盘写入。第二队列声明后副本数固定。你无法像镜像策略那样事后改ha-mode来增减副本。如果想从三个副本扩容到五个只能新建队列然后迁移数据。第三仲裁队列不能设置auto-delete也不会因消费者断开自动删除。这要求研发侧把队列生命周期管理做好测试环境里的废弃队列要及时清理。第四内存效率不同。镜像队列可以基于内存缓存提升读写速度仲裁队列则牺牲内存换可靠性每条消息都会在内存和磁盘之间走一遍。如果追求极致吞吐比如日志收集类场景仲裁队列未必是最佳选择。不过对于微服务异步通信的核心业务链路可靠性优先级永远高于那几毫秒延迟。我在实际项目中已经把所有关键事件队列全部切到仲裁队列。4. 集群架构与迁移实战4.1 什么时候必须迁到仲裁队列如果你们还在使用RabbitMQ 3.8到3.13之间的版本镜像队列虽然能用但控制台和日志已经开始频繁提示deprecated警告。官方给了一个明确的时间线RabbitMQ 3.13仍然支持镜像队列但移除了创建镜像队列的能力到了RabbitMQ 4.0镜像队列代码直接被删除。也就是说不迁移未来升级版本时队列和相关数据会直接不可用。另一个必须迁的场景是可靠性要求高的业务。凡是消息丢一条就会导致资金、库存、对账出错的队列都应该用仲裁队列。迁移之前先评估集群节点数量最少三节点两个节点的RabbitMQ集群无法组成有效多数派仲裁队列很容易因一个节点故障而失去可用性。还有一类情况需要谨慎如果你们集群只有两个节点说明架构先天不足。仲裁队列在这种集群上创建时初始副本数只能为两个失去任何一个节点就只剩单副本Raft无法选出Leader。所以建集群至少要三个节点再多可以到五个再往上Raft通信开销会变大实际收益反而不明显。4.2 迁移步骤双写、切换、删旧队列从镜像队列迁到仲裁队列核心原则是不能直接修改队列类型。队列在声明时类型就固定了不能在一个已有队列上从classic变更为quorum。常规做法是新建同名或异名的仲裁队列然后切换流量。我推荐一套平稳切换流程第一步梳理队列清单。用rabbitmqctl list_queues name type durable messages导出所有镜像队列按业务重要性分组。核心队列优先迁移非核心队列可以放在第二批。第二步提前创建同名仲裁队列。这里有个技巧把一个旧队列停掉后用同一个队列名声明仲裁队列再重新绑定原先的交换机和路由键。整个过程需要协调好生产者与消费者的启停顺序否则名字冲突或绑定不一致会导致消息路由错误。更稳妥的做法是使用临时新队列名切换完成后再重新命名但RabbitMQ的队列名并不能直接rename实际中我倾向于用“旧队列暂停消费新队列先建好并绑定消费者切新队列生产者切换路由最后清理旧队列”的流程。双写也是一个保守方案。生产者在切换窗口同时向旧镜像队列和新仲裁队列发消息消费者先消费新队列等旧队列里的积压消息被清空或转移到新队列后再彻底摘掉旧队列。这种方案对架构改动要求高但消息零丢失。第三步确认仲裁队列健康。迁移完成后检查三件事副本数是否达到预期、同步状态是否正常、消费者连接是否稳定。注意仲裁队列在创建后如果某节点临时掉线新加入节点不会自动成为副本必须通过声明新队列或在线扩容的方式补足。第四步删除镜像策略。全部队列迁移后清理掉旧的镜像Policy避免后续新建的经典队列又被自动镜像绕回老路上去。rabbitmqctl clear_policy ha-all4.3 高可用集群部署形态建议仲裁队列要想真正高可用物理部署形态比队列类型本身更重要。三个节点如果全部部署在同一台物理机或同一个虚拟化宿主机上宿主机一挂三个节点一起挂多数派直接溃散。我在项目中比较推荐的最小可靠形态是三个RabbitMQ节点分别部署在三台独立的虚机或容器宿主机上尽量分散到不同的可用区数据目录使用独立持久化磁盘。节点之间网络延迟不能太大同一个数据中心内一般没问题跨数据中心做RabbitMQ集群要非常谨慎因为网络分区会对Raft选举产生明显影响。如果使用容器部署每个节点不要共享同一个数据卷。RabbitMQ启动时还需要设置主机名一致性容器内的hostname和rabbitmqctl cluster_status里显示的节点名必须对得上否则节点重启后会识别不了自身。对于资源分配我习惯给每个节点预留足够的内存给Erlang运行时同时设置内存和磁盘告警阈值vm_memory_high_watermark_relative 0.6 disk_free_limit 1GBdisk_free_limit设成相对值更合理比如disk_free_limit.relative 1.5表示磁盘可用空间低于1.5倍内存时触发阻塞告警。这个决策很关键因为仲裁队列依赖磁盘落盘磁盘写满时所有消息写入都会卡住提前告警可以给运维留出处理时间。4.4 从镜像策略迁移时要清理的运维习惯镜像集群时代我们习惯了通过Policy动态管理队列副本。仲裁队列时代这个习惯要反过来副本数在声明时确定策略负责的更多是死信、超时和过期属性。比如你想给所有仲裁队列设置统一的消息TTL仍然可以用Policyrabbitmqctl set_policy quorum_ttl ^order\. \ {message-ttl:60000} --apply-to quorum-queues注意--apply-to不是queues而是quorum-queues这个参数在旧镜像策略里不存在。如果写成--apply-to queues策略会同时匹配经典队列和仲裁队列反而不精准。另一个要改掉的习惯是“拓扑自动同步”。以前镜像集群的队列会在多个节点自动复制导致很多团队根本不关心队列在哪个节点。仲裁队列同样会自动复制到所有可用节点但当某个节点长期下线后再回归该节点上的队列副本可能已经落后Leader很多日志需要重新同步或重建。此时不要想着手动去某个节点“补数据”正确做法是依赖Raft日志追平或直接将该队列重建到健康副本组。5. 常见错误、故障排查与经验速查5.1 镜像队列弃用警告已经刷屏了怎么办如果你在管理后台看到类似“Mirrored queues are deprecated”的提示先不要慌张这不代表队列立刻不可用。RabbitMQ 3.8和3.13之间镜像队列仍然可运行但官方已经停止修复镜像队列的新的功能性问题并且会在未来版本删除。此时正确的做法是开启一个专项迁移任务而不是继续新建依托镜像策略的经典队列。如果团队迭代节奏紧可以先把核心异步事件队列迁到仲裁队列次要队列后续再追。系统在RabbitMQ 4.0升级前必须完成全部迁移否则升级过程中的配置校验会直接失败。5.2 仲裁队列丢一个节点还能不能用这个问题几乎每次分享都会被问到。以一个三节点仲裁队列为例初始副本数为3Raft要求提交消息需要大多数副本确认大多数是2个。只要还有两个节点存活就能选出Leader并继续收发消息。消息不会丢失因为已写入的消息在两个节点上都有副本。但有一个前提写入操作当时必须已经成功到达大多数节点。如果消息刚提交到Leader还没有同步给任何副本Leader此时宕机Raft会判断这条消息属于“未被多数派确认的日志”不会把它选入新Leader的提交记录里。这不算数据丢失而是未确认事务被丢弃。所以使用仲裁队列时一定要等生产端收到Publisher Confirm再继续执行后续业务逻辑。如果同时挂了两个节点仲裁队列只剩一个副本无法组成多数派队列会进入不可用状态直到有节点恢复或新增节点并组成新的多数派。因此生产环境一定要避免“同时宕机两个节点”这种极端情况这也是为什么节点要分散部署的原因。5.3 仲裁队列磁盘和性能是两个误解有人觉得仲裁队列那么慢肯定需要很大的内存。恰恰相反仲裁队列不是靠内存堆性能它把消息全部写磁盘靠的是顺序写和批量刷盘。所以真正要关注的是磁盘I/O性能而不是盲目加节点内存。另一个误解是“仲裁队列磁盘占用会无限上涨”。仲裁队列采用分段存储和Raft日志清理机制旧日志在消息被确认消费后可以回收不过回收力度不像经典队列删除消息后立刻释放空间那么即时。如果发现磁盘占用明显偏高先排查是不是有死信堆积、消费者长期不消费、以及队列创建过多副本导致的多份存储。正常的仲裁队列磁盘增长一般是平稳的不会出现持续暴涨。性能调优方面核心参数是生产端的确认机制和消费端的预取数量。不要每发一条消息就同步等一个确认可以开启publisher confirms批量确认消费者端把prefetch设到一个合理值比如50到200之间减少RPC往返。仲裁队列还支持消费者的single-active-consumer保证同一时刻只有一个消费者消费避免重复处理。这些手段配合下来仲裁队列的吞吐可以做到基本满足核心业务。5.4 常用排查命令和关键指标一旦部署了仲裁队列不要等出了问题再翻文档。日常巡检时我经常用这几组命令rabbitmqctl cluster_status看节点是否全部在线内存节点和磁盘节点状态是否正常。rabbitmqctl list_queues name type messages consumers memory看队列类型、积压消息、消费者数和内存占用快速定位哪些队列增长异常。rabbitmqctl list_quorum_queue_status看仲裁队列的Leader节点、匹配到的副本节点、以及Raft日志状态。这个命令是仲裁队列排障最重要的入口。rabbitmq-diagnostics check_running rabbitmq-diagnostics check_virtual_hosts做健康检查适合放进监控脚本每分钟执行一次返回非零则报警。监控指标上我比较关注三个queue_consumers、queue_messages_ready、node_disk_free。仲裁队列还有Raft相关指标节点之间如果频繁发生选举说明网络不稳定或集群配置存在问题这类抖动往往在业务流量上看不到明显异常但会在选主时造成短暂不可用。5.5 踩坑速查表现象常见原因处理建议仲裁队列创建失败集群节点不足副本数大于可用节点先补齐节点再设置x-quorum-initial-group-size切主后消费者报连接失败消费者连接到了旧Leader未自动重连消费者端配置连接恢复和拓扑恢复使用主机名虚拟地址队列消息积压但无消费者x-delivery-limit耗尽后消息被丢弃或进了死信检查死信策略和x-delivery-limit值适当调大或改消费逻辑磁盘使用率持续走高镜像队列遗留数据或仲裁队列副本过多删除废弃队列评估副本数检查Raft日志清理周期升级RabbitMQ 4.0失败存在镜像队列被配置拒绝升级前强制迁移所有镜像队列到仲裁队列网络分区后少数派节点仍然可写使用了经典队列和自动分区策略仲裁队列不会脑裂但经典队列仍需限制分区策略写在最后也是我实际操作的体会从镜像集群切到仲裁队列我踩过最深的坑就是“以为只是换个队列类型”。实际上它改变了整个运维模型队列副本固定、节点数量要求、磁盘读写模型、监控指标全都要重新适配。我一般会建议团队用一个周末的时间把核心链路切到仲裁队列观察指标后再推全量。切完之后的收益很直接主节点抖动时不再有那种“消息到底丢没丢”的焦虑至少多数派节点活着写入确认过的事务就不会丢。如果你刚接手一个还在用镜像队列的RabbitMQ集群别急着堆节点先把队列清单梳理出来把核心业务队列迁到仲裁队列再考虑扩容和版本升级。这个顺序不会错。
RELATED

相关推荐

打字侠 vs 91小键人:轻量陪练与系统教练的深度对比

打字侠 vs 91小键人:轻量陪练与系统教练的深度对比

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/24 3:25:52
AUTOSAR中XCP配置实战:从DBC到INCA标定完整链路

AUTOSAR中XCP配置实战:从DBC到INCA标定完整链路

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/24 3:25:52
OpenCV轮廓查找与形状分析:从二值图到几何量测的完整指南

OpenCV轮廓查找与形状分析:从二值图到几何量测的完整指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

📅 2026/10/24 3:25:52
MORE NEWS

更多资讯

📰

C# StringBuilder 详解:字符串拼接别只会用 `+`,从原理到实战一次讲透

一句话概括: string 适合保存和使用文本,StringBuilder 更适合反复修改、不断追加的大段文本。理解它们的区别,再掌握 Append、Insert、Remove、Replace、Length 和 Capacity,就能在可读性与性能之间做出更合适的选择。文章目录 为…

📰

L3开源静态评测|Facebook Memlab:浏览器内存泄漏工具源码尽调(证据可复现)

L3开源静态评测|Facebook Memlab:浏览器内存泄漏工具源码尽调(证据可复现) 专栏:MetaMeta特辑 L3开源独立评测系列 快照Commit:c3e15df92d469e78501f7f536e3bed77f51f759e 评测体系:Valhalla-S…

📰

【老计带你懂概率统计】03:条件概率与贝叶斯定理,从线索反推真相的神器

【老计带你懂概率统计】03:条件概率与贝叶斯定理,从线索反推真相的神器开头:一个能吓坏人的体检问题 先给你出一道题,这道题据说很多医生都会答错。 假设有一种病,在人群里的发病率是0.1%(一千人里有一个&a…

📰

Vue 3 页面性能排查与优化

Vue 3 页面性能排查与优化 一、业务场景 某业务系统使用 Vue 3 Spring Boot。上线新版本后,用户反馈订单列表页面加载缓慢,等待时间达到 6~8 秒,偶尔出现滚动和操作卡顿。 初步排查结果: 后端接口响应时间正常。数据库…

📰

不用复杂命令,Windows 快速跑通 OpenClaw 本地 AI

📌 说明 本文基于 OpenClaw 版本展开讲解,全程采用图形化、可视化的交互模式。整合包已内置全部运行依赖,即便是零基础的普通用户,也能轻松复现完整的部署流程。 ✨核心亮点: 全程可视化图形交互界面,自动补…

📰

Kiro 本身是亚马逊云科技于 2025 年 7 月推出的 AI 原生集成开发环境(Agentic IDE)

Kiro「鬼点子计划」由亚马逊云科技发起,是一场面向极客、企业开发者和脑洞大开者的创意编程活动。活动口号为“你的奇思妙想,Kiro来实现”,核心理念是“世界不需要又一个平庸的 CRUD 模板,但它永远为奇思妙想留一扇门”。活动不要…

TODAY

今日更新

THIS WEEK

本周精选

THIS MONTH

本月热门

读完文章,想聊聊您的网站?

告诉我们您的行业与需求,资深顾问一对一梳理方案与报价,全程免费。

📞 💬