分布式服务器模型

时间:2012-05-03 22:39:21

标签: python distributed-computing

假设我有100个运行守护进程的服务器 - 让我们调用它server - 该服务器负责为该特定服务的每个用户生成一个线程(假设每个服务器有1000个线程)。每个N秒,每个线程都会某些并获取该特定用户的信息(此请求/响应模型无法更改)。我遇到的问题有时是线程挂起并停止执行某些事情。我需要一些方法来了解用户数据是陈旧的,需要刷新。

我唯一的想法是每隔5N秒让线程更新与该用户相关联的MySQL记录(users表中的last_scanned列),另一个进程每隔15N检查一次{ {1}}秒,如果last_scanned列不是最新的,请重新启动该线程。

1 个答案:

答案 0 :(得分:1)

处理此问题的一般方法是让线程将其状态报告回服务器守护程序。如果您在最近5N秒内没有看到状态更新,那么您将终止线程并启动另一个线程。

您可以跟踪在列表中旋转的当前活动线程,然后偶尔循环遍历它们以确定状态。

当然,您还应该修复程序中导致线程过早退出的错误。

过早退出并杀死线程也可能使程序处于意外的非原子状态。您可能还应该让服务器守护程序运行清理过程,以确保队列中的任何项目或您用于确定工作负载的任何项目在一段时间不活动后重置。