最近挺火的一个网站ifttt,今天终于激活了,进去看了一下,确实很棒,但做为一个无证程序员,对新的技术新的创意总是充满了好奇,所以发个帖跟大家讨论一下这个网站的实现方法,主要在以下几点:
1、这个网站用web的方式实现了一个触发器,这个是如何做到的呢?
个人观点:通过使用后发现这个“触发器”不是实时的,最小时间间隔是15分钟,这个可能是考虑到服务器负载的原因吧。每个task当然是记录在了数据库,实现触发器功能主要的难点在于如何来触发,这个从数据库和web服务器两方面来说。
在数据库方面一般都有计划任务功能,用这个可以做到定时去检查数据库进行触发,但难点在于调用执行task的程序,这点应该是比较难的。可能的解决方案是写个系统服务来执行task,然后在计划任务中调用这个服务。
在web服务器方面可用定时器或另开一个线程,这个线程定时检查数据库中的task,然后执行。
2、如何确保准时?
如果有10W个task要在某个时间点上执行,即使用上面提到的几种方法实现了触发器,现在大部分API中没有定时执行功能,如何保证每个task准时执行呢,这个目前没任务思路。
欢迎大家对上面两个问题给出自己的看法!
1、对于提供实时通知功能的服务,如Gtalk可以实现简单客户端,使用低价的计算机集群来收集信息,对于没有实时通知功能的,可以使用定时查看的策略,这也是你说的15分钟现象。如果后期网站用户变得多起来,可以定制策略,对于无效账户降低查看频率权重。
2.对于没有提供定时功能的task,可以在task被触发后放到一个队列里,然后使用服务器集群来协同完成task,尽量保证时效。
个人想法太愚钝,可能他们用的是更有策略与效率的方法。不过不重要,重要的是我要这50分啊
不错,试试