como incrementar rapidamente contadores em Cassandra sem staleness

Eu tenho uma pergunta sobre Cassandra. Você sabe como o Cassandra faz atualizações / incrementos de contadores?

Eu quero usar um parafuso de tempestade (CassandraCounterBatchingBolt do repositório storm-contrib no github) que grava no cassandra. No entanto, não tenho certeza de como parte da implementação do método incrementCounterColumn () funciona. E também há limitações nos contadores cassandra (de:http://wiki.apache.org/cassandra/Counters), o que os torna inúteis para o meu cenário IMHO:

Se uma gravação falhar inesperadamente (tempo limite ou perda de conexão com o nó do coordenador), o cliente não saberá se a operação foi executada. Uma nova tentativa pode resultar em um excesso de contagem CASSANDRA-2495.

A remoção do contador é intrinsecamente limitada. Por exemplo, se você emitir muito rapidamente a sequência "incrementar, remover, incrementar", é possível que a remoção seja perdida

Enfim, aqui está o meu cenário:
Eu atualizo o mesmo contador mais rapidamente do que as atualizações se propagam para outros nós do Cassandra.

Exemplo:
Digamos que eu tenho 3 nós cassandra. Os contadores em cada um desses nós são 0.
Nó1: 0, nó2: 0, nó3: 0

Um incremento vem: 5 -> Nó1: 0, nó2: 0, nó3: 0

O incremento inicia no nó 2 - ainda precisa se propagar para o nó1 e o nó3
Nó1: 0, nó2: 5, nó3: 0

Enquanto isso, outro incremento chega antes do incremento anterior
é propagado: 3 -> Nó1: 0, nó2: 5, nó3: 0

Assumindo que 3 inicia em um nó diferente daquele em que 5 começou, temos:
Nó1: 3, nó2: 5, nó3: 0

Agora, se 3 for propagado para os outros nós como um aumento e não como um novo valor (e o mesmo para 5), eventualmente os nós serão todos iguais a 8 e é isso que eu quero.

Se 3 sobrescreve 5 (porque possui um carimbo de data / hora posterior), isso é problemático - não é o que eu quero.

Você sabe como essas atualizações / incrementos são tratados pelo Cassandra?

Observe que uma leitura antes de uma gravação ainda é suscetível ao mesmo problema, dependendo de qual nó de réplica a leitura é executada (o Quorum ainda pode falhar se a propagação não estiver muito adiantada)

Também estou pensando que talvez colocar um cache em preto e branco e Cassandra possa resolver esse problema, mas isso é uma história para outra hora.

questionAnswers(3)

yourAnswerToTheQuestion