Microservices hazelcast与微服务

Microservices hazelcast与微服务,microservices,hazelcast,Microservices,Hazelcast,不同的微服务正在连接到单个hazelcast群集,因为如果缓存因其中任何一个而损坏,则需要重新启动整个群集,从而影响其他服务,是否有任何方法可以防止这种情况发生?如果您有多个服务实例,然后可以将它们设置为使用集群中的不同存储容器 即 服务A的实例1使用名为“A” 服务A的实例2使用名为“A” 服务B的实例1使用名为“B”的 服务B的实例2使用名为“B”的 所以,数据隔离。每个服务都有自己的数据存储 服务1实例使用映射“A”,如果它们以某种方式损坏了映射,则使用映射“B”的服务B不受影响 然后

不同的微服务正在连接到单个hazelcast群集,因为如果缓存因其中任何一个而损坏,则需要重新启动整个群集,从而影响其他服务,是否有任何方法可以防止这种情况发生?

如果您有多个服务实例,然后可以将它们设置为使用集群中的不同存储容器

  • 服务A的实例1使用名为“A”
  • 服务A的实例2使用名为“A”
  • 服务B的实例1使用名为“B”的
  • 服务B的实例2使用名为“B”的
所以,数据隔离。每个服务都有自己的数据存储

服务1实例使用映射“A”,如果它们以某种方式损坏了映射,则使用映射“B”的服务B不受影响

然后,您可以执行
hazelcast.getMap(“A”).clear()
删除服务A的所有数据,而不影响服务B。或者,如果您可以识别坏记录,则可以选择删除


为了增加强度,(商业)安全模块增加了基于角色的授权。你可以设置这样的服务A不能访问服务B的数据(读或读/写),并且这样服务A不能破坏Server-B的数据。

< P>如果你的微服务主要执行对地图的读取操作,你可以考虑使用近缓存特性。

近缓存将为您带来两个好处

  • 当数据从客户机的本地内存中提取时,映射上的数据将更快,如果密钥的数据在集群上发生变异,本地近缓存将失效
  • 如果集群由于某种原因停机,客户机将继续从本地内存获取数据。为了确保即使集群关闭,客户机也能继续响应近缓存GET,您需要在客户机连接上配置异步模式,如下所示

    除此之外,我将考虑更改集群的访问模式,如果可能的话,尝试针对每个微服务拥有一个集群来提供真正的隔离。 它通常被称为“每个服务的数据库”。。。

    这是Hazelcast在微服务中如此受欢迎的原因之一,与数据库或NoSQL相比,在每个微服务中启动大量集群要简单得多