Я ищу, чтобы уменьшить давление на «службу поиска», которая обращается к базе данных каждый раз, помещая слой кэширования между поставщиком услуг и клиентом службы. Я хочу, чтобы этот уровень кеширования был постоянным и вмещал больше объектов, чем позволял RAM, поэтому ванильный Guava Cache не будет делать. Я изучал такие вещи, как EhCache и CouchBase, но решил повернуть по-разному.Можно ли использовать Guava Cache в качестве «помощника» для моего собственного постоянного кеша?
Это очень простой способ написать наивный код для этого постоянного слоя кеширования. Тем не менее, я знаю достаточно о кешировании, чтобы понять, что есть много проблем параллелизма для обработки, и я уверен, что я не получу их всех в первый раз. Например, существует проблема «громового стада», когда промахи в кеше могут вызвать много одновременных запросов к службе поддержки для одного и того же объекта. Мне показалось, что это именно тот тип, который уже обрабатывает LoadingCache. Кажется ли разумной идеей попытаться заставить Guava делать тяжелые вещи, связанные с параллелизмом, и просто подключить мой собственный подкласс (ы) для фактического поиска и хранения объектов? Я не уверен, где будут указаны точные границы с точки зрения того, что я буду подклассифицировать или переопределить, но я могу понять это, если это не просто полностью ошибочная идея. Я не видел примеров расширения/настройки кэширования Guava, поэтому, если есть какие-то примеры и/или документы, на которые я смотрю, меня бы это интересовали.
Мне действительно интересно, что бы мотивировало того, чтобы тратить время на реализацию своего собственного кеша с использованием существующего, существует так много проверенных на практике решений. – vptheron
«Я не уверен, где будут указаны точные границы с точки зрения того, что я буду подклассифицировать или переопределить»: границы заключаются в том, что вы не можете подклассифицировать что-либо, кроме основного «CacheLoader». –
@vtheron Я признаю вашу точку вообще и, вероятно, и в этом конкретном случае. Однако ни одно из решений, на которые я смотрел, не было идеальным, поэтому я начал изучать другие возможности. Кроме того: кодирование - забава; установка и настройка всепоглощающего, все-танцевального продукта, который решает мою проблему не так :) – jfrank