У меня распределенный кэш поплавка (не int). Мой процесс часто увеличивает эти поплавки и время от времени доступа к ним.

Если это локальная, атомная структура данных по плаванию (или поплавкой сумматор, если есть один) с методом приращения, вероятно, будет лучшим способом. Неблокировка и Async будет идеальным, поскольку последовательность приращения не имеет значения, если каждое приращение проводится в конце концов.

Какой лучший способ увеличить численное значение для достижения высокой пропускной способности?

Мой текущий метод:

  1. Партия несколько операций при увеличении к разным ключам
  2. Используя invokeAll Метод в IgniteCache, прохождение в CacheEntryProcessor, который содержит значение приращения для каждой клавиши.
  3. CacheAtomicityMode Конфигурация установлена на ATOMIC

Это лучший способ пойти?

Есть ли какая-либо конфигурация, которую я должен обратить внимание на повышение производительности, например, Используйте двоичный формат или память в куче или избегайте ненужной сериализации?

0
Hao 14 Мар 2018 в 22:55

1 ответ

Лучший ответ

Я думаю, что вы определенно на правильном пути.

Двоичный формат будет использоваться по умолчанию, поэтому вам не нужна какая-либо специальная конфигурация для него. Я не думаю, что вы должны беспокоиться о сериализации поплавков, поэтому я бы не настроил кеш в кучи, если вы не запускаете проблемы производительности.

Я также предложил бы взглянуть на внутреннюю реализацию Зажигание реагирования как оно может дать вам более полезные идеи.

Наконец, я бы предложил реализовать его как Служба зажигания, которая позволит вам предоставить Пользовательский API с учетом этой функциональности.

0
Dmitriy 16 Мар 2018 в 05:55