Проблема согласованности с Aerospike
Я использую в Aerospike (v3.5.12), как в хранилище значений ключа памяти одного узла.
Также используйте Java-клиент (v3.1.7) для извлечения и записи данных.
Я замечаю, что при определенных QPS (3K) читает (Batch) и пишет.
Часть поиска данных не работает.
[INFO] [24/11/2015 14:43:38.782] Write Data
[ERROR] [24/11/2015 14:43:38.937] Read Data - Not Found
Кто-то сталкивался с похожей проблемой?
ОБНОВИТЬ
Я обновился до Aerospike 3.7.1.
Я использую асинхронные операции в следующем вопросе:
public void store() {
WritePolicy expirationWritePolicy = new WritePolicy();
expirationWritePolicy.sendKey = true;
expirationWritePolicy.priority = Priority.HIGH;
expirationWritePolicy.expiration = 10;
Key key = new Key(namespace, SET_NAME, requestId);
Bin bin = new Bin(BIN_NAME, serializer.toBinary(budgetCommit));
Bin extra = new Bin("extra", "data");
client.put(expirationWritePolicy, new WriteListener() {
@Override
public void onSuccess(Key key) {
logger.info("Succeed to store {}", requestId());
}
@Override
public void onFailure(AerospikeException exception) {
logger.error(exception, "Fail to store {}", key);
}
}, key, extra, bin);
}
public void retrieve() {
WritePolicy defaultWritePolicy = new WritePolicy();
defaultWritePolicy.priority = Priority.LOW;
defaultWritePolicy.sendKey = true;
Key key = new Key(namespace, SET_NAME, requestId);
Bin closeExtra = new Bin("extra", "_closed");
client.operate(defaultWritePolicy, new RecordListener() {
@Override
public void onSuccess(Key key, Record record) {
if (record.getValue(BIN_NAME) == null){
logger.error("Fail to retrieve {}", requestId);
}
}
@Override
public void onFailure(AerospikeException exception) {
logger.error("Fail to retrieve {} : {}", requestId, exception.getMessage());
}
}, key,
Operation.append(closeExtra), Operation.get());
}
[ИНФО] [12/01/2016 08:37:16.732] Успешно сохранить 379e67dc-945d-4717-97a7-721cc8093c05 [ОШИБКА] [01.12.2016 08:37:16.736] Не удалось получить 379e67dc-945d-4717 -97a7-721cc8093c05
Обратный вызов onSuccess вызывается при получении Ack от Aerospike.
Начиная сбой около 8k QPS на основной записи.
1 ответ
Вероятно, происходит раунд баланса. Пакетное получение в этой версии не будет прокси для других узлов.
Aerospike Server 3.6.4 имеет новую пакетную реализацию, которая может использовать прокси.