StateProvider インターフェイス
public interface StateProvider
と対話するためにサービスが実装する必要がある動作を定義します FabricReplicator。
メソッドの概要
修飾子と型 | メソッドと説明 |
---|---|
Operation |
getCopyContext()
セカンダリ レプリカが作成され、プライマリ レプリカにコンテキストを送信するために開かれた後に、セカンダリ レプリカのコンテキストを取得します。
発言:プライマリ レプリカはコンテキストを分析し、 を介して状態を getCopyState(SequenceNumber upToSequenceNumber, OperationDataStream copyContext) 送り返します。 getCopyContext() は、新しく作成されたアイドル状態のセカンダリ レプリカで呼び出され、プライマリ レプリカとの双方向の会話を非同期的に確立するメカニズムを提供します。 セカンダリ レプリカは、セカンダリ レプリカでコンテキストを収集する進行状況をプライマリ レプリカが決定できるオブジェクトを送信 OperationData します。 プライマリ レプリカは、必要な状態を返すことで応答します。 交換の残りの半分については、プライマリ レプリカを参照してください getCopyState(SequenceNumber upToSequenceNumber, OperationDataStream copyContext) 。 メモリ内サービスの場合、 getCopyContext() セカンダリ レプリカの状態が既知であるため、 メソッドは呼び出されません (これらは空であり、すべての状態が必要になります)。 |
Operation |
getCopyState(SequenceNumber upToSequenceNumber, OperationDataStream copyContext)
セカンダリ レプリカをビルドするために必要なプライマリ レプリカの状態を取得します。
発言:セカンダリ レプリカが を介して getCopyState(SequenceNumber upToSequenceNumber, OperationDataStream copyContext)OperationDataStreamプライマリ レプリカにコンテキストを送信できるようにするのと同様getCopyContext()に、プライマリ レプリカは でOperationDataStream応答できます。 ストリームには、 クラスの メソッドを使用して getCopyStream() セカンダリ レプリカに配信されるオブジェクトが FabricReplicator 含まれています。 オブジェクトは、指定されたデータを実装 Operation し、格納します。 プライマリ レプリカは、この呼び出しを受信すると、 を含むOperationData別OperationDataStreamの を作成して返す必要があります。 OperationData は、セカンダリ レプリカのデータ/状態を表します。 |
long |
getLastCommittedSequenceNumber()
サービスがコミットした最後のシーケンス番号を取得します。 |
CompletableFuture<Boolean> |
onDataLossAsync(CancellationToken cancellationToken)
このレプリカ セット内のレプリカの書き込みクォーラムが失われたため、データ損失が発生した可能性があることを示します。 レプリカ セットは、プライマリ レプリカを含むレプリカの大部分で構成されます。
発言:Service Fabric ランタイムは、プライマリ レプリカを含むレプリカのクォーラムの障害を観察すると、新しいプライマリ レプリカを選択し、新しいプライマリ レプリカで直ちにこのメソッドを呼び出します。 データ損失の可能性が通知されたプライマリ レプリカは、一部の外部データ ソースから状態を復元するか、現在の状態で引き続き実行できます。 サービスが現在の状態で引き続き実行される場合は、このメソッドから false を返す必要があります。これは、状態の変更が行われなかったことを示します。 不完全な作業のロールバックなど、状態を復元または変更した場合は、true を返す必要があります。 true が返された場合は、他のレプリカの状態が正しくないと見なす必要があります。 そのため、Service Fabric ランタイムは、レプリカ セットから他のレプリカを削除して再作成します。 |
CompletableFuture<?> |
updateEpochAsync(Epoch epoch, SequenceNumber previousEpochLastSequenceNumber, CancellationToken cancellationToken)
プライマリ レプリカの変更または変更が試行されたためにレプリカ セットの構成が変更されたことをレプリカに示します。 この変更は、以前のプライマリ レプリカの障害または負荷分散が原因で発生します。 エポック変更は、特定のプライマリ レプリカによって送信された正確な構成期間に操作をセグメント化することで、バリアとして機能します。
発言:メソッドの updateEpochAsync(Epoch epoch, SequenceNumber previousEpochLastSequenceNumber, CancellationToken cancellationToken) 情報を使用すると、サービスは進行状況ベクトル (レプリカが受信した各エポックの一覧)、およびそれらが含まれている最大 LSN を維持できます。 現在適用されている最大 LSN と共に進行状況ベクトル データは、セカンダリ レプリカがコピー操作中にレプリカの状態を記述するために送信するのに役立ちます。 コピー操作中にセカンダリ レプリカから受信した進行状況ベクトルを比較すると、プライマリ レプリカは、セカンダリ レプリカが最新かどうか、セカンダリ レプリカに送信する必要がある状態、およびセカンダリ レプリカが誤った進行状況を行ったかどうかを判断できます。 False の進行状況は、セカンダリ レプリカが、前のエポックの LSN が、プライマリ レプリカの進行状況ベクトルにある LSN よりも大きかったと報告することを意味します。 |
メソッドの詳細
getCopyContext
public OperationDataStream getCopyContext()
セカンダリ レプリカが作成され、プライマリ レプリカにコンテキストを送信するために開かれた後に、セカンダリ レプリカのコンテキストを取得します。
発言:プライマリ レプリカはコンテキストを分析し、 を介して状態を getCopyState(SequenceNumber upToSequenceNumber, OperationDataStream copyContext) 送り返します。 getCopyContext() は、新しく作成されたアイドル状態のセカンダリ レプリカで呼び出され、プライマリ レプリカとの双方向の会話を非同期的に確立するメカニズムを提供します。 セカンダリ レプリカは、セカンダリ レプリカでコンテキストを収集する進行状況をプライマリ レプリカが決定できるオブジェクトを送信 OperationData します。 プライマリ レプリカは、必要な状態を返すことで応答します。 交換の残りの半分については、プライマリ レプリカを参照してください getCopyState(SequenceNumber upToSequenceNumber, OperationDataStream copyContext) 。 メモリ内サービスの場合、 getCopyContext() セカンダリ レプリカの状態が既知であるため、 メソッドは呼び出されません (これらは空であり、すべての状態が必要になります)。
戻り値:
getCopyState
public OperationDataStream getCopyState(SequenceNumber upToSequenceNumber, OperationDataStream copyContext)
セカンダリ レプリカをビルドするために必要なプライマリ レプリカの状態を取得します。
発言:セカンダリ レプリカが を介して getCopyState(SequenceNumber upToSequenceNumber, OperationDataStream copyContext)OperationDataStreamプライマリ レプリカにコンテキストを送信できるようにするのと同様getCopyContext()に、プライマリ レプリカは でOperationDataStream応答できます。 ストリームには、 クラスの メソッドを使用して getCopyStream() セカンダリ レプリカに配信されるオブジェクトが FabricReplicator 含まれています。 オブジェクトは、指定されたデータを実装 Operation し、格納します。 プライマリ レプリカは、この呼び出しを受信すると、 を含むOperationData別OperationDataStreamの を作成して返す必要があります。 OperationData は、セカンダリ レプリカのデータ/状態を表します。
パラメーター:
戻り値:
getLastCommittedSequenceNumber
public long getLastCommittedSequenceNumber()
サービスがコミットした最後のシーケンス番号を取得します。
戻り値:
onDataLossAsync
public CompletableFuture
このレプリカ セット内のレプリカの書き込みクォーラムが失われたため、データ損失が発生した可能性があることを示します。 レプリカ セットは、プライマリ レプリカを含むレプリカの大部分で構成されます。
発言:Service Fabric ランタイムは、プライマリ レプリカを含むレプリカのクォーラムの障害を観察すると、新しいプライマリ レプリカを選択し、新しいプライマリ レプリカで直ちにこのメソッドを呼び出します。 データ損失の可能性が通知されたプライマリ レプリカは、一部の外部データ ソースから状態を復元するか、現在の状態で引き続き実行できます。 サービスが現在の状態で引き続き実行される場合は、このメソッドから false を返す必要があります。これは、状態の変更が行われなかったことを示します。 不完全な作業のロールバックなど、状態を復元または変更した場合は、true を返す必要があります。 true が返された場合は、他のレプリカの状態が正しくないと見なす必要があります。 そのため、Service Fabric ランタイムは、レプリカ セットから他のレプリカを削除して再作成します。
パラメーター:
CancellationToken 操作の取り消し状態を示す オブジェクト。
戻り値:
updateEpochAsync
public CompletableFuture updateEpochAsync(Epoch epoch, SequenceNumber previousEpochLastSequenceNumber, CancellationToken cancellationToken)
プライマリ レプリカの変更または変更が試行されたためにレプリカ セットの構成が変更されたことをレプリカに示します。 この変更は、以前のプライマリ レプリカの障害または負荷分散が原因で発生します。 エポック変更は、特定のプライマリ レプリカによって送信された正確な構成期間に操作をセグメント化することで、バリアとして機能します。
発言:メソッドの updateEpochAsync(Epoch epoch, SequenceNumber previousEpochLastSequenceNumber, CancellationToken cancellationToken) 情報を使用すると、サービスは進行状況ベクトル (レプリカが受信した各エポックの一覧)、およびそれらが含まれている最大 LSN を維持できます。 現在適用されている最大 LSN と共に進行状況ベクトル データは、セカンダリ レプリカがコピー操作中にレプリカの状態を記述するために送信するのに役立ちます。 コピー操作中にセカンダリ レプリカから受信した進行状況ベクトルを比較すると、プライマリ レプリカは、セカンダリ レプリカが最新かどうか、セカンダリ レプリカに送信する必要がある状態、およびセカンダリ レプリカが誤った進行状況を行ったかどうかを判断できます。 False の進行状況は、セカンダリ レプリカが、前のエポックの LSN が、プライマリ レプリカの進行状況ベクトルにある LSN よりも大きかったと報告することを意味します。
パラメーター:
CancellationToken 操作の取り消し状態を示す オブジェクト。
戻り値:
適用対象
Azure SDK for Java