時間ベースの一貫性の使用

時間ベースの一貫性ポリシーでは、レプリカ・ノードに許されるマスター・ノードからの遅れの時間を示します。レプリカ・ノードは読取り操作のみサービスできるため、この種の一貫性ポリシーは読取り操作にのみ関係します。

読取り操作をサービスする際、レプリカのデータが、マスターと比べて指定された時間以上に古い場合、ConsistencyExceptionがスローされます。その場合、操作を中止するか、すぐに再試行するか、間をおいてから再試行します。

この種の一貫性ポリシーが機能するには、ストア内のすべてのノードの時計が、NTPなどのプロトコルを使用して同期している必要があります。

時間ベースの一貫性ポリシーを指定するには、Consistency.Timeクラスを使用します。このクラスのコンストラクタには、次の情報が必要です。

次の例では、2秒のデフォルト時間ベース一貫性ポリシーを設定します。タイムアウトは4秒です。

package kvstore.basicExample;

import oracle.kv.Consistency;
import oracle.kv.KVStore;
import oracle.kv.KVStoreConfig;
import oracle.kv.KVStoreFactory;

import java.util.concurrent.TimeUnit;

...

KVStoreConfig kconfig = new KVStoreConfig("exampleStore", 
    "node1.example.org:5088, node2.example.org:4129");

Consistency.Time cpolicy =  
        new Consistency.Time(2, TimeUnit.SECONDS,
                             4, TimeUnit.SECONDS);
kconfig.setConsistency(cpolicy);

KVStore kvstore = KVStoreFactory.getStore(kconfig);