SuperAPI AI 工具集

sharded-counters

通用与其它

查看项目

更新于 10-16 04:34

技能介绍

用途:解决高频递增计数(点赞、浏览量、投票、速率统计、库存扣减)时单一记录写入争用成为瓶颈的问题,即“热计数器”问题。适用场景是单个逻辑计数的并发递增超出单行/键/分区的串行写入能力,症状是锁等待、CAS 重试、分区热点;不要求毫秒级精确总量。不适用:写入率低(单个原子 INCR 足够,避免过早分片)、必须事务精确且读写一致(如余额、售罄库存,应走一致性协调)、需要精确去重且要成员列表(应使用集合)。

主要能力:提供多种方案选型,包括单原子计数器、写分片(条带)计数器、近似去重计数 HyperLogLog(约 12KB、约 2% 误差)、按时间分桶计数器、读时聚合加缓存总量;并给出各方案的权衡与切换条件,以及压力下的行为(分片倾斜、读放大、丢失递增、窗口边界惊群、批量过期)和监控指标。

使用方式:先澄清最热单计数的峰值递增/秒、精确或近似容忍度、计数出现次数还是去重、读速率与新鲜度、是否按时间窗口;再据权衡表选型;设置分片数 N(按峰值争用而非平均值)、随机选择分片(不要按用户 ID 哈希)、读聚合方式、桶粒度与 TTL、缓存刷新间隔;最后压力测试与按数字估算规模。接口约定:写入 INCR counter:{id}:shard:{rand(0..N-1)},读取汇总 counter:{id}:shard:{0..N-1},去重 PFADD/PFCOUNT,时间窗 INCR views:{id}:{bucket} 配 TTL。若用户指定云厂商,查阅 references/providers/<provider>.md,否则使用通用方案。

限制:分片后总量为最终一致,读取需 N 次查询;HyperLogLog 约 2% 误差且不能列出成员;必须是事务精确的场景不能用分片或最终一致计数器。分片数 N、选择规则、聚合与刷新策略、窗口粒度需提前确定。资料未提供具体价格与平台信息。