かなり初歩的なことで大変恐縮なんですが、
正当な起動手順が分かりません。
--enabled_repeathostオプションを利用して、とりあえず
単一のサーバーで起動する方法は、検索するとたくさん
出てくるのですが、複数台の場合の起動手順が、
なかなか見つかりませんでした。
そこで、
1. 適当なサーバーで、mkrouteを実行
2. *.routeファイルを各ノードとなるサーバーにscpで配布
※各サーバーでmkrouteを実行すると*.routeファイルの内容に
食い違いがあったため。
3. romadを実行
としました。
こちらで問題なかったでしょうか?
今回、PHPのMemcacheライブラリーからromadのポートに
直接接続しましたが、これは問題ないでしょうか?
Ruby/Javaにはクラアントライブラリーがありますが、
これらを使う場合とどのような差があるのでしょうか?
なお、以下のようなプロジェクトで利用する予定です。
・PHP(3000万PV/月)
・Java(3億PV/月)
・PHP(5億PV/月)
※他にもMySQL Cluster、kumofs、MongoDB等検討中です。
以下は、先日、社内勉強会で利用した資料です。ご参考まで。
http://204.232.205.21/roma/
何卒、よろしくお願いいたします。
はじめまして鳥居です。
複数サーバの起動方法は三宅さんの行った手順で間違えございません。
mkroute の作る *.route ファイルはルーティング情報と呼んでおり、
データをどのように配置するかを決定するものです。
配置はコマンド起動の度に乱数により決定され、複数できるファイルの
内容はすべて同じです。
ルーティングの名称は、この情報を使いデータの存在するサーバに対す
る経路を決定することに由来します。
したがいまして、mkroute は一度どこかで実行しファイルを
scp 等で配布するのが正当な手順になります。
PHP の memcached クライアントからの直接接続は問題ございません。
Ruby や Java の専用クライアントを使うメリットはルーティング機能にあります。
ROMA は複数のサーバから構成されデータが分散されます。
memcached クライアントを使った場合、任意のサーバに接続されますが、
そこにデータが存在するとは限りません。その場合 ROMA 内で
通信が転送されることとなりオーバーヘッドが発生します。
Ruby や Java の専用クライアントは ROMA に接続した時にルーティング
情報を取得しますので必ずデータの存在するサーバにアクセスすることができます。
例えば、障害が発生しルーティング情報が変更された場合、専用クライアントは
最新のルーティング情報を自動的に更新する仕組みになっています。
また、これらはコネクションをプールし接続のコストを軽減します。
以上よろしくお願いします。
鳥居 順次
ご回答ありがとうございます。
大変助かりました。
ROMAの概要が少し見えてきました。
本来ならソースコードがそこにあるわけなので、
解析する義務もあるのですが、Ruby門外漢のため、
このような質問に至りました。
もし、ROMAを実践で採用することになりましたら、
サービス名等明かしますね。
また、不明点があれば質問させていただくかもしれません。
では、今後ともよろしくお願いいたします。