Реализация кэша с последующей записью с использованием Hazelcast

#caching #hazelcast

#кэширование #hazelcast

Вопрос:

Я делаю PoC для «кэша с последующей записью» с использованием Hazelcast.

Допустим, у меня есть две службы / микросервисы:

  1. «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».

  1. «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? Пожалуйста, ознакомьтесь со схемой архитектуры ниже:

Архитектура PoC HZ

Ответ №1:

Очень подробный контекст, это здорово!

Истинная «обратная запись» означает, что взаимодействие между сервером Hazelcast и базой данных является асинхронным. Таким образом, это зависит от точной конфигурации MapStore .

Обратите внимание, что в этом случае вы можете потерять данные. Опять же, это зависит от вашей конкретной реализации (например, вы можете повторить попытку, пока транзакция не будет подтверждена).

Комментарии:

1. Q1. Это единственный способ реализовать «резервную запись» с помощью Hazelcast? или есть какой-нибудь лучший подход? Вопрос 2. Если я правильно понимаю, Hazelcast работает как встроенный сервер в службе «HZServer», верно?