使用多个数据库配置 Apache Ignite Cluster 作为后端分区

Configure Apache Ignite Cluster with multiple database as backend partitions

我是 Apache Ignite 新手。这是我很好奇的: 我可以将 ignite 集群设置为前端代理,以根据某些数据列(如 tenantID)将请求分发到 mysql 个实例,其中每个 mysql 个实例都保存单个租户的数据吗?

为了清楚起见,它非常类似于具有相同 table 的多个数据库实例的代理。所以我可以将单个租户数据保存到一个独立的数据库中。

可能有两种方法:

  1. 您可以实现自定义缓存存储实现[1],它根据记录的属性使用正确的连接。

  2. 您可以使用 tenantId 作为关联键,将具有相同 tenantId 的记录映射到相同的分区。此外,自定义关联函数 [2] 允许将分区映射到标有某些属性 [3] 的相应节点。 在每个节点上,缓存存储配置 [4] 可以使用数据源到基于节点属性的具体 mysql 服务器。

  • [1] https://apacheignite.readme.io/docs/3rd-party-store
  • [2] https://apacheignite.readme.io/docs/affinity-collocation#affinity-function
  • [3] https://apacheignite.readme.io/docs/cluster#cluster-node-attributes
  • [4] https://apacheignite.readme.io/docs/3rd-party-store#cachejdbcpojostore

您也可以只使用默认的缓存存储实现,只需将不同的数据源传递给每个节点即可。它通常取自本地 Spring 容器。

在这种情况下,每个节点只会与本地MySQL通信,导致每个MySQL只保存一个节点的数据,然后您可以通过Ignite的配置分布设施。

我没试过,但可能不错。