请求等待列表
跟踪需要在满足响应条件后才能响应的客户端请求,该条件基于来自其他集群节点的响应。
问题
集群节点需要与其他集群节点通信以在处理客户端请求时复制数据。在响应客户端之前,需要来自所有其他集群节点的响应或多数仲裁。
与其他集群节点的通信是异步进行的。异步通信允许使用请求管道和请求批处理等模式。
因此,集群节点异步接收和处理来自多个其他集群节点的响应。然后,它需要将它们关联起来以检查是否已达到特定客户端请求的多数仲裁。
解决方案
集群节点维护一个等待列表,该列表映射一个键和一个回调函数。键的选择取决于调用回调的特定条件。例如,如果需要在收到来自其他集群节点的消息时调用它,则它可以是消息的相关 ID。在复制日志的情况下,它是高水位标记。回调处理响应并决定是否可以满足客户端请求。
有关更多详细信息,请访问 oreilly.com 上的在线电子书第 14 章。
此模式是分布式系统模式的一部分。
2023 年 11 月 23 日