分布式系统中的任务分配、缓存管理与查询优化
1. 简单技术及其局限性
有一种简单技术,若结合日志和相对快速的下游 API,会有一定效果。但它仅适用于低吞吐量接口,会引入不必要的延迟,还限制了工作项的处理频率。
2. 集合哈希(Rendezvous Hashing)
当需要低延迟和高吞吐量时,可采用更复杂的机制,如集合哈希。它是一种将对象唯一分配给节点的技术,常用于分布式缓存,这里将其用于把工作项事实分配给服务,类似的一致性哈希算法也适用。
- 服务启动与注册 :每个服务实例启动时生成一个随机数,并向其他服务注册该数。服务注册可通过流言协议、分布式哈希或存储日志的同一数据库实现,关键是服务上线后其他服务能尽快知晓。
- 订阅工作项 :注册后,服务订阅新进入队列的工作项。与随机处理延迟解决方案不同,服务无需轮询,工作可用时会通过 Webhook、广播或发布 - 订阅消息队列得到通知,具体机制取决于所选通信基础设施。
- 计算权重与处理工作项 :服务收到工作项后计算哈希值,在检查日志前,将工作项哈希与所有注册服务(包括自身)的随机数配对,计算每对的哈希值得到权重,权重最高的服务处理该工作项。若该服务是自身,则检查日志并处理工作项。所有服务对同一工作项计算的权重相同,会选出相同的获胜者,减少并行执行的可能性。
graph TD;
A[服务启动] --> B[生成随机数];
B --> C[注册随机数];
C --> D
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



