#caching #hazelcast
#кэширование #hazelcast
Вопрос:
Я делаю PoC для «кэша с последующей записью» с использованием Hazelcast.
Допустим, у меня есть две службы / микросервисы:
- «HZServer» (работает на портах 9091, 9092, 9093). Я включил в эту службу следующие зависимости:
- ‘com.hazelcast:hazelcast-all: 4.0.3’
- ‘org.springframework.boot:spring-boot-starter-data-jpa’
Я внедрил MapStore в этой службе и подключился к PostgreSQL с помощью CrudRepository. только HZServer будет взаимодействовать с базой данных. Я настроил это как сервер Hazelcast. Кроме того, если я правильно понимаю, Hazelcast работает здесь как встроенный сервер. Определен файл MapConfig с именем «Country» с его реализацией MapStoreConfig «CountryMapStore».
- «MyClient» (работает на портах 8081, 8082, 8083…. ). Я включил в эту службу следующие зависимости:
- ‘com.hazelcast:hazelcast-all: 4.0.3’ (я мог бы использовать только hazelcast-client).
Я настроил его как клиент Hazelcast, используя «Hazelcast-client.yaml». У меня также есть некоторые RestControllers, определенные в службе MyClient. Таким образом, служба MyClient будет взаимодействовать только с сервером HZ (Cache), а не с базой данных. Я извлекаю карту «Country» из HZInstance следующим образом:
IMap<String, Country> iMap = hazelcastInstance.getMap("Country");
Выборка и ввод пар ключ-значение следующим образом:
Country country = iMap.get(code); // Fetching
iMap.put(code, country); // Inserting or Updating
Пожалуйста, подскажите мне, является ли это единственным способом достижения кэша с последующей записью в Hazelcast? Пожалуйста, ознакомьтесь со схемой архитектуры ниже:
Ответ №1:
Очень подробный контекст, это здорово!
Истинная «обратная запись» означает, что взаимодействие между сервером Hazelcast и базой данных является асинхронным. Таким образом, это зависит от точной конфигурации MapStore
.
Обратите внимание, что в этом случае вы можете потерять данные. Опять же, это зависит от вашей конкретной реализации (например, вы можете повторить попытку, пока транзакция не будет подтверждена).
Комментарии:
1. Q1. Это единственный способ реализовать «резервную запись» с помощью Hazelcast? или есть какой-нибудь лучший подход? Вопрос 2. Если я правильно понимаю, Hazelcast работает как встроенный сервер в службе «HZServer», верно?