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