Microsoft Azureを使用すると、信頼性の高いスケーラブルなアプリケーションを驚くほど簡単に作成できます。 数年前、AzureはWindowsを意味していましたが、今日ではMicrosoft AzureはLinux開発者にとって素晴らしい環境です。
databoomのサーバー部分はLinux上で実行され、Node.jsとC ++で記述されたネイティブモジュールを使用します。 Azureに仮想マシン、バランサー、その他のサービスを簡単にデプロイできるため、クラウドソリューションを簡単にデプロイできました。
プロトタイプから始めて、お客様の多くが引き続き協力して、信頼性、セキュリティ、およびスケーラビリティが重要となるより複雑なアプリケーションを作成しています。 そのため、Microsoft Azureを選択しました。
Azureの最も重要な利点は次のとおりです。
- 負荷の増加に応じて仮想マシンの数を自動的に増やし、それに応じて負荷が低下したときに仮想マシンの数を減らす機能。 この場合、支払いは実際に動作するマシンに対してのみ行われます。
- マシンの1つに障害が発生した場合に、他のマシンに負荷を迅速に自動的に転送する機能。
- データストレージの信頼性。 Azureの仮想ディスク上の各レコードは、データセンターの異なる端にある異なるラックの3つの異なる場所にコピーされます。
Azureにデータブームソリューションを展開するために、単純なスキームを選択しました(図1)。
図 1.-Databoomクラウドインフラストラクチャアーキテクチャ図
ここで、数字はシステムのさまざまなレベルを示しています。
- スケーラブルなロードバランサー
- HTTP要求の受け入れ、応答受信バッファーの処理、単純なログの維持、データの部分的なJSON処理、OData要求の解析などを行うNode.jsアプリケーションを備えたシングルコア仮想マシン
- 大きなメッセージフロー専用のキュー。
- データベース管理マシン。
- 信頼できるディスクストレージ。
ロードバランサーは、仮想マシン間で負荷を分散し、負荷が増加した場合、新しい仮想マシンを起動して自動スケーリングを提供します。
Node.jsアプリケーションを備えたシングルコア仮想マシンは、HTTP要求の処理に使用されます。 Node.jsはデフォルトでシングルコアを使用します。 それぞれに複数のNode.jsインスタンスを持つマルチコアコンピューターを使用できますが、この場合、各マシンでクラスターモジュールを接続する必要があります。 同時に、クラスターモジュールの機能はバランサーの機能によって複製されます。これは、リクエストを渡すプロセスのもう1つの追加レイヤーを意味します。 一方、4つのシングルコアマシンが1つのクアッドコアよりも悪くないことを考えてみましょう(テストでは、1秒あたりのリクエスト数がさらに優れていることが判明しました)。
多くのNode.jsアプリケーションとデータベースの相互作用のために、大きなメッセージフロー用に特別なキューが実装されました。 各コンピューターには複数の永続的なTCP接続があり、非同期でメッセージストリームを送受信します。 各コンピューターの各TCP接続は、毎秒数十万件の要求を送信できます。 これにより、1秒あたりの必要なクエリ数に合わせてソリューションを拡張できます。
データベースの管理には、マルチコアコンピューターと専用のロードバランサーが使用されます。 負荷が増加すると、追加のコンピューターが増加します。 いずれかのコンピューターに障害が発生した場合、データベースは、負荷が最小のコンピューターまたは新しく起動したコンピューターですぐに立ち上がります。
負荷分散、オンザフライでコンピューターを持ち上げる機能、ストレージ内のデータの複数の複製、障害を検出し、他のコンピューターへの負荷転送機能およびMS Azureのその他の多くの機能により、信頼性の高いスケーラブルなソリューションを作成できました。
著者について
アンドレイ ・ポルトノフ 、 ビクター・チェルノフ、 ヴラディスラフ・ゴロフコフ
モスクワの一流大学の卒業生(MIPTおよびMEPhI)。
20世紀の90年代の初めから、3人全員が原子力研究所のコンピューターセンターの従業員であったため、データ処理の問題に取り組んできました。 I.V. Kurchatova(トロイツク市の支店)。 独自のNitrosBaseデータ処理技術を開発し、国内および国際的な展示会やフォーラムでいくつかの賞を受賞しました。 このテクノロジーに基づいて、InMemoryの「NitrosBase InMemory DB」クラスDBMSと「NitrosBase RDF Storage」グラフィカルDBMSが開発されました。 NitrosBase RDFストレージに基づいて、Webおよびモバイルアプリケーションの開発を大幅に促進するBaaSソリューションであるdataboomサービスを構築しました。