京东短网址高可用提升最佳实践
内容提要
短网址是将长网址缩短成8个字符以内的网址,适用于微博和短信等限制字数的场景。短网址服务包括生成短网址、二维码简化、修改短网址、短网址跳转、唤醒APP和短网址统计等功能。系统具备自增算法生成短码,提高接口性能和单机承载量,节约存储空间。系统还具备自动延期和回收机制,保证短码的有效性和系统的稳定运行。
延伸解读
从随机到自增:短码生成算法的演进逻辑
文章对比了随机算法与自增算法。随机算法需双向存储并存在碰撞循环,每次生成涉及至少8次网络请求,性能随数据量增长而下降。自增算法无碰撞,仅需单向存储,将同步操作简化为1次Redis写入,HBase改为异步,从而大幅提升性能。这一演进基于历史数据分析:长网址重复生成少,且多数短网址无需永久保存。
自研专利算法:缓存发号与内存自增的配合
为满足海量请求,京东设计了专利自增算法。其核心是缓存发号加内存自增:每次从Redis取10000个号段,在内存中连续生成短码,每万次才访问一次Redis,性能接近内存操作。同时利用Redis的incrby实现分布式号段发放,并通过set原子操作加锁解决并发重置问题。该算法无碰撞,比传统方案快万倍。
有效期与回收机制:平衡资源与稳定性
系统通过自动延期和回收管理短码生命周期。有访问的短码自动延期N天,保持热数据在Redis中;连续N天无访问则自动回收,避免死码占用资源。文章提到,90%超过1个月的短网址不再有访问,43%用户需要30天有效期,46%需要100天。这种机制确保系统长期稳定,并节约存储成本。
优化成效:性能、成本与业务影响
优化后,接口tp999从150+ms降至7ms,单机QPS从497提升至10184,提升20倍以上。无扩容支撑日生成量从1千万增至2亿+。按百度短网址费用核算,1年可节约2700万元。线上仅8台4核docker,日常节约760核,618节约3572核。短网址服务已覆盖京东多个业务,日均产生1亿条短消息。
Q&A
短网址的主要功能有哪些?
短网址服务包括生成短网址、二维码简化、修改短网址、短网址跳转、唤醒APP和短网址统计等功能。
京东短网址的日均生成量是多少?
京东短网址日均产生1亿条短消息。
短网址如何解决长网址在社交媒体上的发布问题?
短网址将长网址缩短到8个字符以内,适用于微博和短信等字符限制的场景,方便用户发布。
京东短网址系统是如何生成短码的?
系统使用自增算法生成短码,避免碰撞,提高性能和存储效率。
短网址的有效性是如何保证的?
短网址的有效性通过自动延期和回收机制得到保证,确保系统的稳定运行。
京东短网址的自增算法有什么优势?
自增算法避免了碰撞,减少了外部请求次数,极大提升了接口性能和单机承载量。