LMAX architecture
外観
input disruptor -> business logic processor -> output disruptor の順に処理する
input/outputは低速で独立したI/Oを行う 入力データの永続化など
記事で解説されるのは中心のbusiness logic processor
business logic processor特徴
入力イベントメッセージをメソッド呼び出しで受けとり、ロジックの実行結果を出力イベントとして発行するイベントソーシング メモリのデータは揮発するが、入力イベントを処理すれば最新の状態を導出できる
パフォーマンスの引き出し方
愚直にインメモリですべてを行うだけで10K TPSは達成できる コード再編でHotspot最適化がされ、CPUキャッシュが効率化することで100K TPS 1M TPSに到達するためにはキャッシュフレンドリでGCに配慮したJavaコレクションクラスが必要だった 非同期処理
通常のシステムでは外部サービスとのやりとりが発生すると待ち時間ですべてが停止する
LMAXでは外部I/Oをイベントとして出力して処理を終了する
外部I/Oの結果が別の入力イベントとしてやってきたときにつづきの処理が実行される