У нас есть большой кластер серверов Tomcat, и я пытаюсь найти эффективный способ разделить счет между всеми ними. Это количество купленных «виджетов», которое необходимо проверять для каждого просмотра страницы. Любой сервер может завершить продажу и увеличить этот счет, после чего новое значение должно стать доступным для всех членов кластера.
Мы не хотим использовать счетчик из базы данных, потому что между обновлениями в кластере будет много просмотров страниц, и операция get для db для каждого просмотра страниц кажется ненужной.
У нас есть обширный кластер memcached, в котором мы можем хранить значение, получать его при каждом просмотре страницы, и любой, кто обновляет значение, устанавливает новое значение для кластера. Это снова кажется расточительным из-за кэша, получаемого для каждого просмотра страницы.
То, что я хотел бы сделать, это иметь значение в памяти на каждом сервере и многоадресное сообщение (или аналогичный механизм), сообщающее всем серверам, что они только что увеличились, и новое число - X. Это может показаться наиболее эффективный, потому что действие выполняется только после обновления, а не для каждого просмотра страницы.
Как вы справились с этим в своих приложениях? Я слишком обдумываю это ... мы должны просто выбросить его в memcached?
Спасибо!