Мне поручено создать процесс, который компенсирует задержки репликации в нашей системе LDAP. В настоящее время существует один сервер записи и 4 сервера чтения. После записи записи на сервер записи может произойти до 4 секундной задержки в системе до того, как запись будет реплицирована на серверы чтения. Поэтому, если я вызываю службу «А», которая обновляет запись, а затем сразу же попадает в службу «Б», которая должна читать эту запись, данные будут устаревшими.Фоновый рабочий процесс с WCF (кэширование)
Чтобы решить эту проблему, я планировал создание кэширующих веб-сервисов, чтобы приложения не связывались напрямую с базой данных, а скорее через службу кеширования. Служба будет хранить все создания, обновления и удаления в кеше (предположительно List<ModelObject>
). Записи CRUD-R должны оставаться в кеше как минимум на четыре секунды. Затем, когда служба «B» пытается прочитать, служба кеширования проверит кеш до выполнения операции чтения в базе данных.
Итак, мой вопрос состоит из двух частей. 1) Является ли это приемлемым решением, а если нет, то какие проблемы вы видите? 2) Как мне выполнить обслуживание против кеша в службе WCF. Другими словами, есть ли способ инициировать поток рабочего фона, который очищает записи из кеша, который составляет 4 секунды?
Спасибо. Решение для # 1 не будет работать, потому что эти же серверы LDAP используются как для хранения данных клиента (имя, фамилия и т. Д.), Так и для аутентификации (привязки LDAP). Один сервер не сможет обрабатывать нагрузку от всех наших пользователей, прошедших проверку подлинности. Однако, думая о своем заявлении, вы привели меня к лучшему решению: отделите данные клиента от системы аутентификации. – regex