Синхронизация серверов через кеш/базу/или еще что-то?
От: DaDa Cloun Россия  
Дата: 25.10.10 09:36
Оценка:
Приветствую всех!

Возникла задача синхронизации нескольких серверов, обрабатывающих запросы от клиентов. Сервера находятся за load balancing и сессия не привязывается к конкретному серверу.
Проблема возникла абсолютно классическая: клиент шлет запросы на обновления его состояния, они выполняются в различном порядке различными серверами, что, в итоге, приводит к неверному состоянию. Требуется выбирать состояние, проверять очередность и сохранять. Но на период между выборкой и сохранением нужно блокировать состояние. Отсюда и возникает эта задача.
Так как состояние храниться в базе и в кеше (memcached) то неясно, через что производить блокировку.
Если через базу, то в случае масштабирования серверов баз данных (а мы используем MS SQL) master-slave этот подход не будет работать.
В memcached я не нашел механизмов синхронизации (может кто знает?)
И думается мне, что лучше взять еще один сервер БД (или что-то специализированное для этого) и делать через него синхронизацию.
Вопрос состоит в том, как лучше поступить? И какие средства существуют для этого?
Сервер реализован на платформе .NET 3.5.

Всем спасибо за ответы.
синхронизация
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.