AtContent.com。 内部構造とアーキテクチャ

Atcontent_promo この記事は、 AtContent.comサービスの内部構造に関する一連の記事を開きます。 コンテンツが作成者からエンドユーザーにどのように移動するか、どのメカニズムを通過し、同時にさまざまなモジュールと対話するかを介して、サイクルからこのすべてについて学習します。 彼の記事は、サービスアーキテクチャの一般的な説明から始まります。 このシリーズには、「ロールインスタンスメッセージング」、「インスタンスでのデータのキャッシュとキャッシュの管理」、「クラウドキュー処理の効果的な管理」、「Azureテーブルストレージの操作を実装または含むLINQ拡張機能」に関する記事も含まれます。 "、"データをパーツに分割し、Azureテーブルストレージ用のPartitionKeyとRowKeyを生成するための実用的なアドバイス。



AtContent.comは、著作権で保護されたコンテンツの配信と収益化のための新世代サービスです。 収益分配モデルに基づいており、著者、ディストリビューター、およびメディアプラットフォーム向けの新しいツールを提供します。 コンテンツの作成者は、自分の作品を独立して公開し、自分でファンを獲得し、苦労せずに配信ネットワークを取得できます! 特別なウィジェットを使用すると、出版物の著者とディストリビューターの両方がお金を稼ぐことができます。 より多くの流通ネットワーク、より多くの売り上げ、著者へのより多くの収入。



現在、このサービスは著者のみが利用できます。 実際に試して、当社のサービスを使用して資料を公開する場合は、特別なリンクを使用して登録してください



アーキテクチャのプラットフォームとして、Microsoft Windows Azureと次のようなコンポーネントを使用します。



この特定のプラットフォームを選択したのは、インフラストラクチャを考慮することなく開発に集中できるためです。 また、Apache Lucene-データ検索を整理するためのオープンな検索技術、ユーザーからの支払いの受け取りを整理するための国際的なPayPal支払いシステムも使用します。



それで、彼の作品を出版するために、著者はサイトを訪れ、出版物をダウンロードします。 パブリケーション自体はBlob Storageに分類され、それに関するさまざまなメタ情報はTable Storageに分類されます。 公開の時点で、いくつかの段階で構成されるインデックス作成メカニズムが開始されます。 最初のステップは、タスクをインデックスキューに追加することです。 2番目は、ロール間の相互作用のメカニズムを使用した処理タスクのWorkerロールへの転送です。 3番目は、Workerロールでのジョブ処理です。 インデックス作成とその後の検索は、Apache Luceneを使用して行われます。





図1.資料の公開のスキーム



写真、オーディオ、ビデオ、その他のファイルなどのすべてのメディアファイルは、Blob Storageに保存されます。 各ファイルには、ファイルの所有者と所属するパブリケーションに関する情報を格納するメタデータがあります。 ファイルは、メタデータとユーザーデータの情報に基づいてアクセスを制御する特別なゲートウェイを介してユーザーに提供されます。



公開後、作成者は、任意のサイトに配置できるウィジェットを取得します。 また、このウィジェットは、サイト上のすべての出版物のリストと、フィード購読者、著者の出版物のリストなど、さまざまなリストに分類されます。 それらのほとんどすべてがテーブルストレージに格納されます。



また、出版物は無料で(すべてのコンテンツが公開されている)、寄付の可能性があり、有料であることも言及する価値があります。 有料公開の場合、一部のコンテンツが制限される場合があります。 支払いはウィジェットで直接行われ、出版物の有料部分は、読者による支払いの直後に利用可能になります。 アイテムの支払いには、内部プリペイドローンメカニズムが使用されます。 補充はPayPalを通じて行われます。 クレジット取引はブロッキングモードで実行されるため、ブロッキング操作が可能になるため、Blob Storageに保存されます。





図2.有料出版物の購入スキーム



購入時に、発行価格に対応するクレジットの量がユーザーのアカウントから取得され、作成者、ディストリビューター、サービスの間で分配されます。 すべての操作は100分の1セントの精度で実行されるため、発行価格を1セントに設定できます。



ウィジェットとサービス間のすべてのデータ交換は、いわゆるネイティブAJAXを介して実行されます。 ウィジェットはサービスへのリクエストを生成し、ウィジェットは応答としてJavaScriptファイルを生成します。JavaScriptファイルはウィジェットによって処理されます。



パブリケーションウィジェットがロードされると、データベースから選択され、選択された同じインスタンスにキャッシュされます。 また、作成者がパブリケーションを更新するときにキャッシュの関連性を確保するために、キャッシュはクリアされます。 インスタンス間の相互作用の独自のメカニズムを使用して、キャッシュの対応する部分をクリアする特別なコマンドが送信されます。



また、ウィジェットは、ウィジェットの場所に基づいたビュー、出版物の流通経路、関連出版物の販売および寄付など、さまざまな統計を収集します。 著者および販売業者には、これらの統計に関するさまざまな分析情報が提供されます。 この点で、OrおよびContains操作を使用したテーブルストレージからの取得メカニズムが必要でした。 このため、テーブルストレージへのLINQクエリ用の拡張機能が作成されました。 Azure SDKでは、この方法でリクエストを変更することはできません。



このサイトにはユーザー評価があります。これはユーザーレビューから形成されます。 なぜなら 動的に形成されるため、テーブルストレージに保存するのは非常に高価です。 したがって、Azure SQLに保存され、並べ替えで選択を行うことができます。



Windows Azureを使用すると、サービスの負荷とコストを制御できます。 システムは、水平方向に簡単にスケーリングできるように設計されています。 増加する負荷の下でWebロールとワーカーロールの数を増やします。



シリーズを読む:




All Articles