You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

多服务并发场景下从集合获取未使用ID的方案选型

ID分配方案选型求助

需求背景

客户端发起特定请求时,后端需分配符合以下规则的ID(关联第三方,规则不可修改):

  • ID必须唯一
  • 值范围为0到2^32(即4294967296)
  • 资源按ID删除后,需复用已删除的ID,且优先复用间隙值
  • ID分配由多实例微服务处理,存在并发分配场景;流程失败会产生ID间隙,因取值范围有限必须复用这些间隙

已考虑的方案

  • 方案1:在Redis或数据库表中维护一个递增计数器;流程失败或资源删除时,将对应ID放入复用池。分配时优先从复用池取ID,无可用值时再使用计数器递增。
  • 方案2:锁定资源表,查询现有ID确定可用的新ID,插入新资源后解锁表。但该方案性能问题明显,不考虑。
  • 方案3:初始化一个包含所有ID值的池;服务从池中取ID尝试创建资源,若流程失败或资源被删除,将ID放回池。但觉得实现起来过于复杂。

疑问与求助

目前倾向方案3但嫌复杂,方案2性能太差,想知道有没有更简便的实现方案?项目基于ASP.NET C#。

另外,曾考虑过Postgres序列(或其他数据库的等效机制),但测试后发现复用ID的操作并不简单,若此结论有误请指正;也考虑过随机ID,但受生日悖论影响,碰撞概率不可接受,不可行。

内容的提问来源于stack exchange,提问作者Magnesiam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.09 16:33:24