私たちの製品の開発中に、私たちはデフォルトのVaadinアーキテクチャを使用して大きなメモリフットプリントの問題に直面しました。
Vaadinアーキテクチャは、イベントによって駆動されるコンポーネントに基づいています。コンポーネントを使用すると、密接に結合されたアプリケーションを作成するのはかなり簡単です。その理由は、コンポーネントが階層構造になっているからです。それはピラミッドのようなものです。より大きなアプリケーションが構築されます。大きなピラミッドは各ユーザーのセッションに格納されます。
メモリ割り当てを大幅に削減するために、古い学校の状態管理を使用して、バックグラウンドで包括的なイベントモデルを使用して、アプリケーションのページベースのアプローチを作成しました。これは、XML形式のStatechart表記法に基づいています。
結果として、セッションは、ユーザーワークフロー中に訪問済みのページのみを保持します。これは、Statechartの設定で説明されています。ユーザーがワークフローを終了すると、すべてのページが解放されてガベージコレクタによって収集されます。
私たちはいくつかのテストを行って、アプリケーションで作業しているユーザーに割り当てられたメモリを比較しました。
開発されたアプリケーション:密結合のアプローチと
- が緩い結合アプローチで5からユーザー
- あたりのヒープの15メガバイトに消費する - 2メガバイト
まで我々は非常に満足しています結果として、4GBのRAMを使用して大規模なシステムを最大1000-1500人の同時ユーザー(サーバーあたり)に拡張できます。
ほとんど忘れました。我々はLexaden Web Flowライブラリを使用しました。これはApacheライセンス付きです。
アプリケーションを使用するユーザーは何人ですか? –
20,000人以上の同時ユーザー –