Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/redis/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
多个微服务和Redis—云中每个应用程序一个数据库和一个节点_Redis_Google Cloud Memorystore - Fatal编程技术网

多个微服务和Redis—云中每个应用程序一个数据库和一个节点

多个微服务和Redis—云中每个应用程序一个数据库和一个节点,redis,google-cloud-memorystore,Redis,Google Cloud Memorystore,我想知道在多个微服务/应用程序中使用Redis的最佳实践是什么(在我的例子中是Google Memorystore,标准层)。根据我到目前为止的研究,以下选项可用: 使用单个集群和数据库,为所有微服务水平扩展。这似乎最具成本效益,因为我将使用整个系统所需的确切数量的节点。数据隔离在这里受到影响,但我可以减少影响,例如,通过在键前加上microservice名称 为每个微服务使用单独的集群和数据库。在这种情况下,隔离效果更好,所需集群的扩展只会影响单个微服务,但这似乎不划算,因为许多节点可能负载不

我想知道在多个微服务/应用程序中使用Redis的最佳实践是什么(在我的例子中是Google Memorystore,标准层)。根据我到目前为止的研究,以下选项可用:

  • 使用单个集群和数据库,为所有微服务水平扩展。这似乎最具成本效益,因为我将使用整个系统所需的确切数量的节点。数据隔离在这里受到影响,但我可以减少影响,例如,通过在键前加上microservice名称
  • 为每个微服务使用单独的集群和数据库。在这种情况下,隔离效果更好,所需集群的扩展只会影响单个微服务,但这似乎不划算,因为许多节点可能负载不足(例如,微服务M1利用一个节点50%的容量,微服务M2利用一个节点40%的容量,因此在情况1中,两个微服务将仅由一个节点提供服务)
  • 理论上,我可以使用多个数据库在单个集群中隔离数据,但据我所知,Redis不支持这一点(并且在单个节点上使用多个数据库会导致性能问题)

  • 我倾向于选项1,但也许我遗漏了什么?

    不确定最佳实践,我会告诉你我的经验。 一般来说,我会选择选项2

    每个微服务都有自己的redis实例或集群。 Redis集群遵循自己的微服务生命。例如,当您重新部署或重新启动服务时,它们可能会得到重生

    您可能会多付一点钱,但您会获得弹性和维护麻烦