私は、1 日あたり最大 5 億リクエストの容量を持つ HTTP サービスを設計しています (複数の独立したマシンによって処理されます)。
リクエストごとに、一意の ID を生成してユーザーに返す必要があります。ID は、10 分間のウィンドウ内で 100% 一意である必要があります。(1 日が推奨されます。グローバルに一意の ID が理想的です。) その ID を生成するためにサーバー間通信は必要ありません。
ばかげた疑似セッションの例:
クライアント: GET /foo サーバー: コンテンツ タイプ: text/xml <ルート> <id>ab9d1972-2844-11e0-86b2-000c29544403</id> <その他のデータ/> </ルート>
この HTTP サービスの前の世代では、UUID を使用していました。
UUID には満足していますが、問題が 1 つあります。それは、長すぎることです。その数の要求では、この余分なサイズは、ログ ファイルのディスク領域の浪費に顕著に現れます。
短いが一意の識別子を作成する最良の方法は何ですか? 物事を価値のあるものにするために、アルゴリズムは UUID の長さの最大半分を生成する必要があると思いますが、1 日中一意である必要があります (10 分はさらに短くする必要があります)。
理想的には、提案されたアルゴリズムは、プレーンな C で正気で軽量な製品品質の実装を備えているでしょう。
更新: 生成された ID は、GET 要求で渡されるときに URI エンコードを必要としません。