Data::STUIDをCPANにあげた。このツールはは前も書いたけど、64ビットの整数IDを作成するための簡単なサーバークライアントツールです。memcachedとそのクライアントみたいなイメージで使えます。
簡単なサーバースクリプトを同梱しておいたので、こんな感じで起動できます:
で、これらのサーバーをクライアントに渡してやると、適当にIDを取ってきます。
もちろん上記のはあくまでちょっと検証するためのスクリプトであって、実際はプログラムの中に埋め込んで使うほうが本来狙っているやり方です :
あとcpanfile対応済みですので、cartonで簡単にサーバーを立てられますよ!
まだ実戦投入とかする段階ではなくて、準備として書いたものなので、なにかツッコミとかあったら是非お願いします。
簡単なサーバースクリプトを同梱しておいたので、こんな感じで起動できます:
# バックグラウンドに送るとかは適時ご自分でどうぞ
> stuid-server --host_id=1 --port=9001
> stuid-server --host_id=2 --port=9002
> stuid-server --host_id=3 --port=9003
で、これらのサーバーをクライアントに渡してやると、適当にIDを取ってきます。
> stuid-client --server 127.0.0.1:9001 --server 127.0.0.1:9002 --server 127.0.0.1:9003サーバーを複数用意しておけば一個が万が一詰まっても、次のヤツに行くようになってます。
111499979255802135
もちろん上記のはあくまでちょっと検証するためのスクリプトであって、実際はプログラムの中に埋め込んで使うほうが本来狙っているやり方です :
use Data::STUID::Client;IDの生成方法自体はSTFのそれと同じで、だいたい順番にならんだ64ビットの整数が返ってくるのでPKとかにいれてそのIDの順番で作成順序でソートしたのと同じ状態にしつつ、ユニークなIDをふれるという感じです。
my $client = Data::STUID::Client->new(
servers => [ qw(127.0.0.1:9001 127.0.0.1:9002 127.0.0.1:9003) ]
);
print $client->fetch_id, "\n";
あとcpanfile対応済みですので、cartonで簡単にサーバーを立てられますよ!
まだ実戦投入とかする段階ではなくて、準備として書いたものなので、なにかツッコミとかあったら是非お願いします。