3

В нашем веб-приложении используется кэширование в памяти (кэширование данных приложений), чтобы повысить пропускную способность, так что часто запрашиваемые данные не нужно загружать из базы данных (SQL Server) для каждого запроса. Потенциально, он будет развернут в веб-ферме, поэтому мы должны решить классическую проблему синхронизации кешей всех узлов. Итак, нам нужен распределенный кеш.Может ли соединительная плата SignalR использовать для построения распределенного кеша?

Легко доступны решения NCache и REDIS (и, возможно, больше). Однако, поскольку мы уже используем панель SignalR Backplane для обмена изменениями в нашем наборе данных с сервисом Windows (и клиентами браузера), мне интересно, можно ли использовать его для реализации распределенного кеша.

Сделав это, мы (более или менее) повторно используем существующие существующие данные, которые изменили сообщения, но подписаться на них в самом веб-приложении, чтобы аннулировать его кеш. Поверхность заключается в том, что нам не нужно вводить новую библиотеку/технологию.

Я думаю, мои самые большие вопросы: это имеет смысл? И, является ли сигнальная плата SignalR надежной достаточной для того, чтобы убедиться, что никакие события не теряются, что приводит к устаревшим кэшам? Или это архитектурное злоупотребление?

+0

Я задал связанный и более конкретный вопрос здесь: http://stackoverflow.com/questions/36239434/how-reliable-is-signalr-backplane – Dejan

ответ

1

Signalr предназначен для решения в реальном времени не для статического электричества.

В вашем решении вы выберете данные на одной службе, и вы отправите их на другую услугу на объединительной плате. И что ? Вероятно, вы сохраните это в памяти. Что произойдет, если одна из служб перезапустится? Данные исчезнут. Вы никогда не столкнетесь с этой проблемой с redis. Кроме того, для этих данных вы будете использовать свою локальную память.

Также как вы справитесь с истечением срока? Кроме того, вы приложите усилия для реализации этой системы кэширования с помощью signalr.

Я не предлагаю вам использовать объединительную плату signalr для этого. Придерживайтесь Redis или smilar технологий.

+1

Я не отправляю данные из одной службы в другую. Я просто хочу использовать систему, которая * уже * отправляет события с измененными данными. Был бы еще один подписчик: сам веб-приложение, чтобы он знал, когда нужно сбросить его кеш. Я не уверен, почему вы говорите, что для распространения сообщений нужна другая технология? SignalR делает это. – Dejan

+0

Вы говорите о сигнале в виде объединительной платы или сигнальной панели Backplane ?. Signalr отправляет сообщения клиентам или клиентам, отправляющим на серверы. Таким образом, на одном сервере вы отправляете сообщение клиентам, но если вы хотите получить клиентов других серверов, то этому сигналу signalr нужна объединительная плата. Я хотел сказать это. Но если вы говорите о signalr как объединительной панели, это не связано с вашим вопросом. –

+0

Я говорю о объединительной панели SignalR, как описано здесь: http://www.asp.net/signalr/overview/performance/scaleout-with-sql-server. По моему мнению, это помогает мне распространять сообщения через отдельные (IIS или Windows Service) процессы. – Dejan

 Смежные вопросы

  • Нет связанных вопросов^_^