私はPHPで数年の大規模なゲームサーバー開発を行ってきました。ロードバランサは、着信要求をクラスタ内の1つのサーバーに委任します。より良いパフォーマンスの名前で、私たちはapc_store
とapc_fetch
を使って、そのクラスタ内の各インスタンス上のすべての静的データ(本質的にゲーム世界のモデルオブジェクト)をApache共有メモリに直接キャッシュし始めました。apc_store/apc_fetchのようなPHP Apache共有メモリストアには、良いFlask/Python/WSGIアナログがありますか?
多くの理由から、Flaskマイクロフレームワークを使用して、Pythonで同様のゲームフレームワークを開発し始めています。一見すると、このインスタンスのメモリストアはPython/Flaskに直接変換されていないようなものです。 Memcachedを各インスタンスでローカルに実行することを検討しています(メインのMemcachedクラスタからかなり大規模なモデルオブジェクトをストリーミングするのを避けるため)。
代わりに何を使用できますか?
私は私の真のデータストアに集中Membaseを使用し、一時的なキー/値に対して集中Memcacheを使用します。私の記事で述べたように、重要なのは、Memcachedのメインクラスタからかなり大規模なモデルオブジェクトをワイヤで流さないようにすることです。以前のゲームでローカルメモリにこの変更を加えることで、パフォーマンスが大幅に向上しました。このようなゲーム用の静的データセット全体は50MB未満ですので、ストレージ/負荷は問題になりません。結局のところ、あなたは最終的にとにかくそれをローカルメモリに引き込む必要があります。 –
基本的な前提は、集中化されなければならないデータを集中化し、アプリケーションサーバーにプッシュできるデータ(すなわち、ステートレスでゲームの世界データであり、ノード間で同一であること) )をアプリサーバーにプッシュする必要があります。 –
申し訳ありませんが私のクエストの2つの重要な点を無視するので、私はこの答えを受け入れることができません:[1]私は静的なデータについてのみ話している、[2]私はすでに集中型Memcachedを使用しています。 –