简短的唯一ID

我正在devise一个HTTP服务,每天可以处理多达5亿个请求(由多个独立的机器服务)。

对于每个请求,我必须生成唯一的ID并将其返回给用户。 在10分钟的窗口内,ID必须是100%唯一的。 (首选1天,全球唯一的ID是理想的。)不需要服务器 – 服务器通信来生成该ID。

愚蠢的假会话的例子:

客户端:GET / foo

服务器:内容types:文本/ XML

         <根>
             <ID> ab9d1972-2844-11e0-86b2-000c29544403 </ ID>
             <other_data />
         </根>

在上一代这个HTTP服务中,我使用了UUID。

我对UUID很满意,但是有一个问题:它们太长了。 在这样的请求数量下,这个额外的大小在磁盘空间中明显浪费了日志文件。

创build一个简短但唯一的标识符的最好方法是什么? 为了使事情变得有价值,我想algorithm应该产生最多一半的UUID长度,而整天都是唯一的(10分钟应该更短)。

理想情况下,build议的algorithm将在普通C中具有理智,轻量级的生产质量实现。

更新:生成的ID在GET请求中传递时不应该要求URI编码。

给每台机器一个唯一的前缀。 给每台机器一个计数器。 要生成一个ID,增加计数器,并将其值附加到前缀。

如果你想混淆ID,加密它们 – 密码是一个可逆转换,所以将其应用于唯一值将产生独特的值。

一些想法:

  • 每天5亿个请求。 真?
  • 使用UUID。
  • 如果需要,不要使用HTTP(因为这是更重要的开销),并以二进制形式传输UUID。
  • 你需要一定数量的字节来保证你的服务器返回一个真正唯一的 ID。
  • 如何使用UDP?

无论如何,你想做什么?