2016-09-01 9 views
0

私は、彼らがシーケンシャルある最良の場合には、実行時に一意のIDに(整数)を必要とする2つのシェフの料理(および潜在的に多くを)持っています。シェフの自動化:グローバルカウンタ/変数?

変数を一元的に格納する可能性はありますか?グローバル変数は定数ではありませんか?それは私の料理レシピの既定のレシピが実行されるたびに増やすことができますか?

答えて

1

純粋にシェフにこれを行う良い方法はありません。通常の方法は、ノード属性の手前でID番号を割り当てるか、ノード名やその他の安定した値のハッシュを使用することです。 node.name.hash % 1000は0から1000の間で、、おおよそが均等に分布しています。残念なことに、名前ハッシングは衝突耐性を考慮して設計されていないため、小さな範囲(0〜256など)では不運なストリークを持つ可能性があります。

本当にこれを行うには、ConsulやZooKeeperなどの分散した状況で安全に一連番号を発行できるツールを「適切に」見てください。

+0

私は実際にZooKeeperを使用する幸運な偶然です。 ZooKeeper + Apache Kafkaのサーバーインスタンスを作成するためのクックブックと、直前のZooKeeperインスタンスに接続するKafkaサーバーインスタンスのクックブックがあります。そして、問題は実際には、すべての追加のKafkaブローカー/サーバーのブローカーID(一意の整数)を動的に設定する必要があることです。このためにZooKeeperを使う方法がありますか?新しい番号をリクエストできますか? – ScientiaEtVeritas

+0

"Zookeeper Counter"について検索すると、ZKの公式レシピが見つかります。私は、Pythonライブラリ(kazoo)がそれらのインプリメントを持っていることは知っていますが、私はRubyクライアントがそうは思いません。比較的低レベルの '飼い犬飼い主 '宝石があり、その上に構築された' ZK'宝石があります。 – coderanger