如何设计百万数字用户ID
Level1 – Public – 公开权限文档
0. 前言
我们在进行平台账号体系设计的时候,遇到这么一个需求:在平台注册的用户ID以n位的数字展现。
乍一看,这个需求很简单,就一句话。但仔细思考后,发现这里面还是有很多地方需要思考的:
- 用户ID是随机生成还是顺序自增?
- 如果是随机生成的:
- 如何保证每次生成的ID都是唯一的?
- 如果是顺序自增的:
- 是不是会泄露平台用户规模,增加安全隐患?
- 如何保证分布式高并发下的ID顺序自增?
- 如果用户数量达到n位数上限后,如何自动扩展ID?
1. 思路
首先,先确定ID是自增还是随机,从上面的思考中,可以发现用户ID自增会带来一些安全隐患:如当系统存在某种bug,可以通过用户ID查询用户信息时,就会面临通过遍历用户ID,达到获取平台全量用户信息的隐私泄露问题。另外,自增也会暴露平台用户规模,不利于商业行为。所以,用户ID必须是随机生成。
那么,用户ID随机生成,如何保证每次都是一个唯一值呢?这里有两个思路:
- 设计一种算法,通过数学运算,以一定的入参,得到一个一一映射的出参,该出参的范围在n为数字的大小范围内。数学表达式为:
© 版权声明
文章版权归作者所有,未经允许请勿转载。
THE END
喜欢就支持一下吧
相关推荐