分布式服务器模式
问题描述:
可以说我有每运行一个后台程序100个服务器 - 允许调用它server
- 服务器是负责产生线程此特定服务的每一个用户(可以说每个服务器1000个线程)。每N
秒每个线程做东西并获取特定用户(这个请求/响应模式不能改变)的信息。我有一个问题有时是一个线程挂起,并停止做东西。我需要一些方法来知道用户数据已过时,需要刷新。分布式服务器模式
我唯一的想法是每个5N
秒纷纷跟帖更新与用户(users表中的一个last_scanned
列)相关的MySQL的记录,并检查表中的每一15N
秒另一个过程中,如果last_scanned
列不是最新的,重新启动线程。
答
来处理这种情况的一般方法是让线程报告其状态回服务器守护程序。如果你在最近5秒钟内没有看到状态更新,那么你杀死线程并开始另一个线程。
您可以跟踪你已经在列表中纺起来,然后就循环通过他们偶尔来确定状态当前活动的线程。
当然也应该修复你的程序是导致线程过早退出的错误你。
过早退出,杀死一个线程也可能让你的程序在一个意想不到的,非原子状态。您应该也可以让服务器守护进程运行一个清理过程,以确保队列中的任何项目或您用来确定工作负载的任何项目,在一段时间不活动后重置。
当线程停止执行某些操作时,是预期的行为还是由于错误? – Jordan
由于错误 - 我应该指定线程挂起(是的,我也应该修复错误,所以这不会发生在第一位,但让我们忽略) – v0idless