每 5 秒后,一个节点 ping 服务器。如果 ping 成功,节点的时间戳会更新到服务器数据库中。每 3 分钟服务器检查是否有任何超过 3 分钟的时间戳。如果找到,它会从其数据库中删除该节点。
现在的问题。我无法实现此查询。例如,我希望它以一种相当简单的方式,例如:
// Get the server time-stamp in milliseconds
select LastPingedAt from JustPinged where LastPingedAt > 3 Minutes"
// If it finds any,delete each of them from the database.
The logic :
Let the server's time stamp at the point of checking be 'serverStamp'
Let the node's time stamp (time in milliseconds when it last pinged) in the
database's table be 'nodeStamp'.
If ( serverStamp - nodeStamp > 3 minutes)
// Delete those nodes
If( severStamp - nodeStamp < 3 minutes)
// retain those nodes
我无法设计查询以进一步实施。
在任何时候,JustPinged
表格看起来像:
--------------------------|----------------------
NodesThatJustPinged | LastPingedAt
--------------------------|-----------------------
xxx.xxx.xxx.xxx | 1355406367402
--------------------------|-----------------------
yyy.yyy.yyy.yyy | 1355406421277
--------------------------|-----------------------
时间以毫秒为单位,从 开始new GregorianCalendar().getTimeInMillis()
。