0

MongoDB データベースにデータを永続化する Node アプリケーションがあります。Userコレクション用のデータなど、このデータのほとんどは手元にあります。ただし、アプリにはWebsiteコレクションの概念もあり、このコレクションでは、データをどこかからダウンロードしてから保存する必要があります。

アプリケーションで上記の問題をどのように分離する必要があるのか​​ 疑問に思っています。サービス層には、 と のようなものがUserありWebsiteます。基本的な CRUD 操作を提供します。スペクトルの完全に反対側には、ユーザーが Web サイトの URL を入力できるユーザー インターフェイスがあります。この UI とデータを MongoDB に永続化するアプリケーション (サービス層) の間のどこかで、アプリケーションはこの URL にリクエストを送信してデータを収集する必要があります。データが取得されると、Websiteサービスはデータを保持します。

一度に何千もの URL が入力される可能性があるため、負荷の問題が原因で Web サーバーを処理する Node プロセスを停止させたくありません。したがって、作業を別のプロセスに抽象化し、ある種のメッセージング バスを使用してアプリケーションを結び付けるのは良い考えだと思います。

4

1 に答える 1

0

システムを正しく分解し、永続性の「サービス」レイヤーでその分離を作成したようですが、分散システムアーキテクチャ(つまり、SOA /マイクロサービス)に移行することで、この分離をさらに進めます。

分散システムを構築する最初のステップは、アプリケーションの全体的なビジネス目標を達成するために必要な各機能を特定し、それらをサービス エンドポイントにマッピングすることです。疎結合された各サービス エンドポイントは、小さな分離されたジョブ/機能を提供し、そのビジネス目標の抽象化として機能します。

責任の分離をサービス エンドポイントまで継続することで、スケーラビリティ、スループット、フォールト トレランス、セキュリティ、展開などのための小さな独立した境界を作成します。

たとえば、REST 的に言えば、これは、ユーザー (例: /users/{userid}) と Web サイト (例: ) の両方のサービス エンドポイントを意味する可能性が/websites/{websiteid|url}あり、おそらく、2 つの間の関係/リンクを維持するための追加のリソース(例: ) を意味する場合があります/users/{userid}/userwebsites : {websiteid:1234,url:blah.com

この分離は、Web サイトの処理責任を独立して処理できることを意味します。これには、さまざまな負荷特性を処理するだけでなく、多くの利点があります。

于 2013-06-24T17:15:32.600 に答える