Проблема согласованности с 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 имеет новую пакетную реализацию, которая может использовать прокси.

http://www.aerospike.com/download/server/notes.html

Другие вопросы по тегам