asp.net приложение. На текущий момент в приложении активно используется самописный глобальный и сессионный кеш объектов. Если с сессионным все остается прозрачным, то с глобальным возникают трудности. На глобальный кеш объектов завязаны транзакции (реализовано все на уровне оптимистических блокировок). Упрощенно: каждая транзакция получает копию объекта из кеша, при коммите транзакции сравнивает версия копии с версией объекта в кеше. В случае веб-фермы, глобальных кешей становиться несколько, что в свою очередь вносит изменения в текущий механизм.
Как варианты, вижу след. решения:
1. Отказаться от глобального кеша.
2. Вынести кеш на отдельный сервер и получать объекты кеша через remoting.
3. Синхронизировать кеши.
4. Вынести на отдельный сервер информацию вида: (guid объекта, версия)
Больше всего нравиться 4-й вариант и вариации на его тему. Но так или иначе все это досужие размышления, т.к. опыта в разработке распределенных решений у меня катастрофически мало. Поэтому вопрос к уважаемому all, как обычно решаются подобные задачи, какие готовые решения существуют и какие у них плюсы и минусы. Буду благодарен за любые полезные ссылки, советы и комментарии.