1。
我正在使用twitter流api获取一些带有特定标签的tweets。我想从每条tweet中提取一些元数据,并使用它们更新一些本地数据结构。
有时我的电脑会在短时间内收到很多推文。我不确定处理速度是否比tweets流的速度快。我想保证所有的tweets都能被成功接收,并且每个tweets都能继续。
所以我想问我是否需要添加一些结构来缓存我收到的tweets?如果是的话,你能就结构或工具提出建议吗?一个缓冲区,一个线程池或者一些缓存软件,比如memecached或者redis?
2。
我还想使用twitter搜索api(一个restfulapi)来获取一些tweets。我会在一个查询中得到100条tweets。在这种情况下有必要缓存tweets吗?
在收集到足够数量(约30000条)的tweets之前,程序不会处理这些tweets。我应该使用map reduce模式来处理这样一个音量的tweets吗?
谢谢!
最佳答案
有时我的电脑会在短时间内收到很多推文。我不确定处理速度是否比tweets流的速度快。我想保证所有的tweets都能被成功接收,并且每个tweets都能继续。
这正是message broker的作用(see this question),只需将这些tweets添加到队列中并使用它们。这样,如果队列大小增长过大,您就可以垂直或水平地扩展客户流程。
在收集到足够数量(约30000条)的tweets之前,程序不会处理这些tweets。我应该使用map reduce模式来处理这样一个音量的tweets吗?
这是针对联机处理的批处理,使用一个队列您可以同时执行这两个操作。您的使用者进程将只需每隔x秒请求队列大小(使用消息代理api),当队列将高于特定的3shold(此处为30k)时,使用者将开始使用它。