Масштабирование обмена сообщениями WCF с клиентами

Я унаследовал систему, которая состоит из (для простоты) 1 службы WCF, к которой подключаются несколько клиентов. Служба поддерживает кэш данных (среди прочих работ), а клиенты также поддерживают локальный кеш данных, чтобы, если это возможно, сохранить вызов службе. Клиенты обновляются с использованием последних данных из службы WCF с помощью сообщения Tibco RV, которое отправляется по таймеру. Каждый клиент прослушивает это сообщение, а затем обращается к службе, чтобы получить последние данные для локального кэширования.

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

Я кратко подумал о посреднике посредника, который мог бы объединять сообщения, но это в основном не удается, потому что эти сообщения могут приходить в совершенно разные моменты времени, в зависимости от того, когда была запущена служба.

Я думаю, что в моем идеальном мире у меня был бы кластер серверов MongoDB или что-то еще; клиенты будут просто извлекать данные оттуда, что устраняет аспект кэша WCF. Служба может перезагрузить хранилище Mongo по мере необходимости, но мы все равно будем использовать сеть. Такое дополнительное использование сети, по-видимому, противоречит первоначальным целям разработки этой конструкции кэша клиента.

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

0 ответов

Другие вопросы по тегам