6055467186200871 另见 关于 https://en.wikipedia.
本次测试在杭州市滨江区的真实城市道路环境开展,以特定站点触发派单的运营机制,在确保安全的基础上,小规模、可控地验证无人化运营的稳定性与产品可靠性。
教训:在API受限的平台上,"外包给外部工具"听起来很好,但跨进程边界的每一步都是脆弱点。
碰上不支持的浏览器,退回到 ffmpeg.wasm(把 FFmpeg 编译成 WebAssembly 在本地跑)。
典型实现:version字段、CAS先比较再修改 优点:无锁实现,开销较低 缺点:并发冲突较多时,需要不断重试;可能有ABA问题,但用递增的version能解决,仅CAS比较值则不行 适用场景:适合读多写少的场景;如果写并发很高,但误用了乐观锁的话,会导致线程不停地重试,最终线程池耗尽的严重问题 两个并发更新请求的时序图如下: sequenceDiagram participant G as 业务入口服务(无存储) participant S as 存储服务(持有资料) G->>S: 线程1:先到达请求,查询数据 S-->>G: 线程1:返回业务数据、version=v1 Note over G,S: 两个并发请求都基于 v1 计算后回写 G->>S: 线程2:后到达请求,查询数据 S-->>G: 线程2:返回业务数据、version=v1 G->>S: 线程2:更新业务数据(带 v1,先到达存储) S->>S: version匹配,更新成功,version升到v2 S-->>G: 线程2:操作成功 G->>S: 线程1:更新业务数据(带 v1,因网络延迟后到达存储) S->>S: version不匹配(当前版本v2≠v1),更新失败 S-->>G: 线程1:操作失败,需上游重试 Note over G,S: 线程1先发起请求但因网络问题后到达,version校验阻止了旧数据覆盖新数据