Требование: у меня есть 4 сервера: A, B, C, D. Все они подключаются к поставщику данных, получают данные и сохраняют их в mongodb в течение N минут. Так что, если в следующий раз тот же запрос поступит на другой сервер, он будет брать данные только из mongodb вместо того, чтобы звонить поставщику данных.
|A|
|B| |data provider|
|C|
|D|
Но если |поставщик данных| ответ медленный, есть вероятность, что 2 разных запроса на один и тот же ресурс поступят в A, B. Я хочу, чтобы один запрос ждал, пока не будет получен ответ на первый запрос. Я использую для этого очередь, которая подходит для одного сервера. Но теперь мне нужен распределенный кеш из-за нескольких серверов.
Реализация. Прочитав несколько статей в сети, я узнал, что распределенный кэш в Java можно реализовать с помощью репликации ehcache RMI. Но у меня мало сомнений, прежде чем продолжить эхчаче. (Хотя есть и другие решения, такие как JCS и т. д., я решил выбрать ehcache на основе других ответов на StackOverflow)
Сомнения
- Что делать, если один из серверов выйдет из строя? Обрабатывает ли ehcache это автоматически?