0

Meteor は、複数の異なるユーザーにサービスを提供しながら、パフォーマンスを維持できますか?

たとえば、ユーザーが自分のドキュメントのみを取得できるようにする次のパブリケーションを宣言するとします。

Meteor.publish("UserList", function () {
  return Documents.find({user: this.userId});
});

そして、何千人ものユーザーがこの出版物からフィードを読み込んでおり、それぞれが独自のドキュメントを求めていると想像してください。1 つのドキュメントが更新されるとどうなりますか? つまり、リストが変更された可能性があることをすべてのユーザーに通知しますか? サーバーは考えられるすべてのユーザーに対してクエリを実行し、重要なユーザーのみに通知しますか? このようなシナリオで Meteor はどのようにパフォーマンスを維持しますか?

または、Meteor でマルチテナンシーを実装するためのより良い方法はありますか?

4

1 に答える 1

1

その場合、その公開機能を購読しているユーザーのみが更新を取得します。

Meteor は、コレクションに対するすべての変更をその特定のサブスクリプションに送信します。サブスクライバーには、ドキュメントが変更された可能性があることは通知されず、単にデータの変更が送信されます。DDP には、クライアントに何をすべきか (つまり、削除、更新、挿入など) を伝える一種の「crud」があります。

上記の場合Documents.find、その特定のユーザーには更新のみが送信され、他のユーザーにはまったく通知されません。

0.5.7 でいくつかの変更があったため、この部分については 100% 確信が持てませんが、DDP を介したすべての接続には、それぞれが独自のクエリを持つサブスクリプションが存在します (クエリが他のサブスクリプションと同じであっても)。これのキャッシュは、すぐに trello でターゲットになるようです: https://trello.com/card/improve-server-side-performance-of-subscriptions/508721606e02bb9d570016ae/10

DDP はまだプレ 1 リリースですが、これは今後さらに最適化されると思います。特に、各サブスクリプションで一意ではない可能性が高いクエリDocuments.find()( Document.find({user:this.userId}).

DDP プロトコルの完全な仕様については、https ://github.com/meteor/meteor/blob/master/packages/livedata/DDP.md をご覧ください。

于 2013-04-06T09:11:52.540 に答える