Dan*_*nny 0 php linux api cron cron-task
我即将开展一个大型项目,在那里我将需要预定任务(cron作业)来运行一个脚本,该脚本将遍历我的整个实体数据库并每10分钟调用多个API,如Facebook,Twitter和Foursquare .我需要这个应用程序可扩展.
我已经可以预见到一些潜在的陷阱......
我的问题是如何构建我的应用程序......?
谢谢!
我即将开展一个大型项目,在那里我将需要预定任务(cron作业)来运行一个脚本,该脚本将遍历我的整个实体数据库并每10分钟调用多个API,如Facebook,Twitter和Foursquare .我需要这个应用程序可扩展.
您最好的选择是设计应用程序以使用分布式数据库,并将其部署在多个服务器上.
您可以将其设计为在服务器的两个"等级"中工作,与map-reduce方法不同:仅执行查询和"预先消化"某些数据的轻量级服务器("map"),以及聚合数据的服务器("降低").
一旦你这样做,你可以建立一个性能基线并计算,例如,如果你每分钟可以生成2000个查询,并且你可以处理尽可能多的响应,那么每20,000个用户需要一个新的服务器.在"每分钟生成2000个查询"中,您需要考虑:
这种架构的一个优点是你可以从小做起 - 一个测试平台可以用一台运行连接器,映射器,减速器,命令和控制以及持久性的机器构建.当您成长时,您只需将不同的服务外包给不同的服务器.
在几个分布式计算平台上,这还允许您通过在地理上或连接方面明智地分配Mappers来更快地运行查询,并通过玩亚马逊"区域"来减少各种平台之间的流量成本(亚马逊也有一个消息服务,您可能会发现在任务之间进行通信很有价值)
一个注意事项:我不确定PHP是否适合这一切.我宁愿想Python.
但是,在每个实例20,000个用户的流量级别上,我认为你最好还是与Facebook,Foursquare等人一起讨论这个问题.您至少可以收集一些策略,例如将连接器脚本作为独立任务运行,每个连接器根据该服务的用户ID对其队列进行排序,利用可能存在的小数据位置,并利用流水线技术来挤压更多带宽减少服务器负载.最多,他们可能会指向批量API或不同协议,或者以1万亿美元购买你:-)
| 归档时间: |
|
| 查看次数: |
896 次 |
| 最近记录: |