Включение хранилища кэша Infinispan в транзакцию кэша?

Я использую Infinispan 6.0.2 через подсистему Wildfly 8.2. Я настроил кеш транзакций, который использует хранилище кешей JDBC на основе строк для сохранения содержимого, помещенного в кеш infinispan.

Меня беспокоит, что после прочтения в документации Infinispan следующее существует вероятность рассинхронизации кеша и хранилища кешей при помещении / обновлении / удалении нескольких записей в кеш в одной и той же транзакции из-за фиксации / отката транзакции в кеше, но только частичное завершение / сбой в кеше хранить.

4.5. Загрузчики кэша и кеши транзакций. Когда кэш является транзакционным и имеется загрузчик кеша, загрузчик кеша не будет включен в транзакцию, в которую входит кеш. Это означает, что возможны несоответствия на уровне загрузчика кеша: транзакция успешно применяет состояние в памяти, но (частично) не может применить изменения к хранилищу. Ручное восстановление не работает с хранилищами кешей.

Может ли кто-нибудь пояснить, относится ли приведенное выше утверждение только к загрузке из хранилища кеша, если оно также относится к записи в хранилище.

Если это также имеет место при записи в хранилище кеша, существуют ли какие-либо рекомендуемые стратегии / решения для обеспечения синхронизации кеша и хранилища кеша?

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

Я также задавал этот вопрос на форумах Infinispan

Спасибо заранее.


person lucasweb    schedule 24.01.2015    source источник


Ответы (1)


Это также относится к записи, отказ от записи в хранилище не влияет на остальную часть транзакции.

Причина этого в том, что фактический API сохраняемости не является транзакционным (edit: более новые версии Infinispan также поддерживают транзакционную сохраняемость). Следовательно, при 2-фазных фиксациях (в первой фазе - подготовка - все блокировки получены, во второй - фиксация - выполняется запись) запись в хранилище выполняется на второй фазе. Следовательно, сбой не может откатить изменения на разных узлах.

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

person Radim Vansa    schedule 26.01.2015
comment
Спасибо за информацию, это подтверждает то, что я считал правдой. Следующие сообщения форума также предоставляют дополнительную полезную информацию developer.jboss.org/message/916978 и developer.jboss.org/message/916912 - person lucasweb; 26.01.2015