【发布时间】:2020-10-12 07:15:20
【问题描述】:
我正在使用 Hazelcast 对 “write-behind cache” 进行 PoC。
假设我有两个服务/微服务:
- “HZServer”(在端口 9091、9092、9093 上运行)。我在此服务中包含以下依赖项:
- 'com.hazelcast:hazelcast-all: 4.0.3'
-
'org.springframework.boot:spring-boot-starter-data-jpa'
我已在此服务中实现 MapStore,并使用 CRUDRepository 连接到 PostgreSQL。只有 HZServer 将与数据库通信。 我已将其配置为 Hazelcast 服务器。另外,如果我的理解是正确的,Hazelcast 在这里作为嵌入式服务器运行。 使用 MapStoreConfig 实现“CountryMapStore”定义了一个名为“Country”的 MapConfig。
- “MyClient”(在端口 8081、8082、8083.... 上运行)。我在此服务中包含以下依赖项:
-
'com.hazelcast:hazelcast-all: 4.0.3'(我本可以只使用 hazelcast-client)。
我已使用“Hazelcast-client.yaml”将其配置为 Hazelcast 客户端。我还在 MyClient 服务中定义了一些 RestController。因此,MyClient 服务将仅与 HZServer(缓存)通信,而不与数据库通信。我通过以下方式从 HZInstance 中获取“国家”地图:IMap<String, Country> iMap = hazelcastInstance.getMap("Country");
按以下方式获取和放置键值对:Country country = iMap.get(code); // FetchingiMap.put(code, country); // Inserting or Updating
如果这是在 Hazelcast 中实现“Write-Behind”缓存的唯一方法,请建议我? 请在下面找到架构图:
【问题讨论】: