【问题标题】:Implement Write-Behind Cache using Hazelcast使用 Hazelcast 实现 Write-Behind Cache
【发布时间】:2020-10-12 07:15:20
【问题描述】:

我正在使用 Hazelcast 对 “write-behind cache” 进行 PoC。

假设我有两个服务/微服务:

  1. 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。
  1. 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); // Fetching
    iMap.put(code, country); // Inserting or Updating

如果这是在 Hazelcast 中实现“Write-Behind”缓存的唯一方法,请建议我? 请在下面找到架构图:

【问题讨论】:

    标签: caching hazelcast


    【解决方案1】:

    非常详细的上下文,这很棒!

    真正的“后写”意味着 Hazelcast 服务器和数据库之间的交互是异步的。因此,这取决于MapStore 的确切配置。

    请注意,在这种情况下,您可能会丢失数据。同样,这取决于您的具体实现(例如您可以重试直到交易被确认)。

    【讨论】:

    • 第一季度。这是用 Hazelcast 实现“Write-Behind”的唯一方法吗?还是有更好的方法? Q2。如果我的理解是正确的,Hazelcast 是作为“HZServer”服务中的嵌入式服务器运行的,对吧?
    猜你喜欢
    • 1970-01-01
    • 2019-11-30
    • 2014-09-15
    • 1970-01-01
    • 2010-12-24
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多