缓存操作的拓扑行为
NCache 提供各种缓存拓扑,它们在对它们执行缓存操作时表现不同。 下面给出的是 NCache 拓扑及其行为。
镜像拓扑
备注
此功能仅在 NCache Enterprise 型号.
In 镜面 拓扑中,客户端只与主动节点通信,被动节点是主动节点的副本,用于备份。
批量操作在主动节点上执行,应用程序等待操作被复制到被动节点。
异步操作也在活动节点上执行,但控制权会立即返回给应用程序,因此它不会等待在两个节点上执行操作。 如果注册了回调,它将在操作成功或失败时触发。
复制拓扑
In 复制 拓扑,客户端一次连接到一个节点。 因此,批量/异步操作被发送到客户端连接的特定节点。 然后这些操作在节点之间同步复制,确保数据一致性。
在批量操作的情况下,操作被发送到客户端连接的特定节点。 在集群的所有节点上发生复制后,控制权将返回给用户。
对于异步操作,控制立即返回给应用程序,而不是等待复制发生。 但是,一旦发生复制,就会触发回调并返回给客户端。
分区拓扑
In 分区 or 分区副本 拓扑,维护一个分布图,负责整个集群的数据分布。 在我们详细了解正在执行的操作之前,了解什么是分布图非常重要。 分布图是一个键值对结构,其中键代表节点身份,值包含驻留在该节点上的桶(数据)的信息。 这样就为缓存生成了一个完整的地图,并在服务器端进行维护。 NCache 让协调器节点根据地图决定数据分布。
备注
分布图在全连接集群的情况下分布所有数据(集群的所有节点都连接)。 如果一个节点与集群断开连接, NCache 不再根据分布图划分数据,并将数据发送到下一个连接节点。
从分发映射操作中得到bucket所在的节点地址后,发送到目的节点。 NCache 将分布式映射保存在客户端,对key执行下一个操作,操作会直接发送到数据所在的节点。 这提高了性能,因为操作直接发送到数据所在的节点。
假设数据项1-500在N1上,501-1000在N2上(但数据不按顺序划分,随机打乱)按照分布图。 在对批量项目执行的任何操作上,该操作将在一次调用中发送到相应的节点。 在客户端拥有分布图的主要好处是更快的性能,因为操作将直接在数据驻留节点上执行。 操作完成后,控件将返回给用户(用于任何进一步的操作)。
对于异步操作,一旦执行任何写入操作,调用会立即返回给您,同时操作会在后台继续执行。 NCache 在后台维护一个队列(不影响您的客户端操作)跟踪操作 wrt 数据。 它为需要很长时间才能执行操作的大量数据集提供了极大的便利。
分区副本拓扑
备注
此功能仅在 NCache Enterprise 型号.
In 分区副本 拓扑中,客户端操作首先在分配的节点上执行,然后根据用户的指定同步或异步复制到其副本。
在批量操作的情况下,如果在 同步 模式下,操作在分配的节点上执行,应用程序等待直到在分区的副本上发生复制。 如果在 异步 模式下,在分区节点上执行操作后立即将控制权返回给应用程序,并且不等待复制,因为它是异步的。
在异步操作的情况下,无论指定的同步模式如何,操作都会被发送到分配的分区节点并立即将控制权返回给用户。
客户端缓存
备注
此功能仅在 NCache Enterprise 型号.
A 客户端缓存 是与远程集群缓存同步的本地缓存。 这种同步通过轮询发生——如果集群缓存在其默认轮询间隔 1 秒后检测到其任何客户端缓存的更改,它会通知客户端缓存轮询更改的数据。 否则,在其默认间隔 10 秒后,客户端缓存请求集群缓存提供更改的数据(如果有)。
在写操作的情况下,每个操作首先在客户端缓存上执行,然后通过内部的Write-Behind机制在远程缓存上执行。
对于批量操作,一旦对客户端缓存和远程缓存执行操作,控制权就会返回给应用程序。 在异步操作的情况下,在对缓存执行操作后,回调从远程缓存返回到客户端缓存。
但是,对于读操作,首先在客户端缓存中搜索键; 如果未找到,客户端缓存将从远程缓存中获取关键项,然后将其返回给客户端。 这在不影响数据完整性的情况下最大限度地提高了应用程序的性能和可扩展性。