新しいプロジェクトで CQRS と EventSorcing を使用しようとしています。私は、Greg Young が数年前に提案した方法に従っています (Mark Nijhof の実装 - http://cre8ivethought.com/blog/2009/11/12/cqrs--la-greg-young/ )。また、このソリューションのスケーラビリティに関していくつかの問題があります。
この中でいくつかの点が言及されたマーク・ナイホフの記事。しかし、現在の問題は、レポート データベースの更新を担当する Denormalizer 部分です。この部分は非同期にしたいので、バスにイベントを発行したらすぐに制御を戻したいです。Denormalizer をスタンドアロンの Web サービス (WCF) として実装し、受信イベントを処理し、コマンドのバッチでタイミングを合わせてレポート データベースを更新することを提案しました。これがボトルネックになる可能性があるため、この時点である程度のスケーラビリティも追加したいと考えています - クラスタ ソリューションです。しかし、クラスターの場合、レポート データベースの更新のシーケンスを制御することはできません (または、レポート DB でオブジェクトのバージョンをチェックする、いくつかの奇妙でバグのあるロジックを実装する必要があります)。もう 1 つの問題は、ソリューションの持続可能性です。失敗した場合、どこにも永続化しない限り、デノーマライザーで更新が失われます)。だから今、私はこの問題(デノーマライザーのスケーラビリティ)の解決策を探しています。どんな考えでも大歓迎です!