UDN-企业互联网技术人气社区

板块导航

浏览  : 1732
回复  : 0

[资源分享] 使用 Apache Kafka 和微服务实时分析 Twitter 趋势,第 3 部分

[复制链接]
htmlman的头像 楼主
发表于 2016-10-8 14:27:23 | 显示全部楼层 |阅读模式
  将检索到的推文存储到 Cloudant 数据库中

  在前面的文章中,我们介绍了 Match Tracker 的后端架构,该架构可以实时处理有关足球比赛的数千条推文。任务处理管道中的最后一个阶段——推文处理微服务(Tweet Processing Microservice)会将检索到的推文存储到 Cloudant 数据库中。

  图 1. 开源演示应用程序 Match Tracker
2.png

  截至 2016 年 4 月,我们已处理了超过 40 万条与去年 9 月以来的比赛相关的推文,平均每个比赛周处理 1.2 万条推文。在前端 Web 应用程序中,我们希望展示每个比赛周内的各场比赛的受欢迎程度和情绪。

  在 Cloudant 数据库中,我们保存了数千条推文及其元数据,我们可以使用它们生成每场比赛的受欢迎程度和情绪的汇总统计。我们将使用此信息来展示每个比赛周内的各场比赛的排名表。

  CouchDB 视图

  可以过滤推文数据库来获得特定比赛周内发送的消息,此操作是通过 CouchDB 视图(CouchDB Views)来实现的。在传统 SQL 数据库中,将会构造一个 SQL 查询,将 gameweek 参数值作为一条子句插入。每次运行此查询,都会生成一个新结果集。借助 CouchDB,可以定义静态视图,这些视图仅对所有文档运行一次,以便生成概述结果集。

  结果集的高效缓存支持在以后使用查询参数进行过滤,无需重新执行整个视图。在数据库文档被修改时,也会对视图结果进行增量式更新。每个视图都有一个由用户提供的映射函数(map function),该函数是在 JavaScript 中定义的。对每个文档执行此函数,该函数可根据来自文档的属性而发出一条或多条结果。所有生成的结果形成视图结果。视图还可以有一个额外的化简函数(reduce function),用于根据对这些原始值的计算,将视图结果处理为新的元结果。

  CouchDB 视图支持使用查询参数(query parameter)来过滤结果,比如,限制返回的文档数量或跳过前 n 个文档。通过使用“startkey”和“endkey”查询参数,可以从视图结果中丢弃其它键在这些参数值之外的文档。

  比赛推文的自定义视图

  通过为我们的数据库定义一个新视图,映射函数(map function)将从文档中提取发送推文时的日期时间字符串,以及主题标记(hashtag)中提到的球队。发出该日期字符串作为键,并使用球队列表作为值。基于这个键值,以有序列表的形式返回视图结果。“startkey”和“endkey”查询参数限制了所返回的视图结果的子集,将其限定为所提供的这两个参数值之间。通过使用“startkey”和“endkey”参数定义比赛周内的日期范围,将删除结果中的其他所有推文。

  通过迭代结果,将所有提及的球队和情绪评分添加到一起,我们就能够生成每个比赛周内的各场比赛的整体排名表。使用 CouchDB 视图是一种高效检索过去特定比赛周内推文的极佳方法,但我们如何在处理新推文后实时更新结果呢?每次处理一条额外的推文,都要获得整个比赛周的结果集合,这样做不仅效率低下,而且没有必要。

  如果新推文被处理完时可以通知我们,就可以将该数据发送到前端 Web 应用程序来手动扩充客户端数据集……

  检测数据库更改

  CouchDB 拥有监听数据库中更改的内置支持,即更改通知(change notifications)功能。数据库的 _changes 提要是一个发布所有文档修改信息的活动流。通过订阅推文数据库的更改提要,Web 应用程序可在处理实时推文时监听更新。每当 Tweet Processing 微服务创建一个新文档时,更改提要服务就会将这些更新发送到所有已注册的监听者。然后,可以通过 Web 套接字将此信息发送到客户端,后者会在显示屏上更新比赛周的结果集,并重新绘制排名表。

  结束语

  使用 CouchDB 存储已处理的推文,这使得使用自定义视图生成汇总统计数据变得很容易。使用用户提供的在数据库内执行的 JavaScript 函数,开发人员可以创建特定于应用程序的结果集。由于数据库会执行缓存,因此一个视图在生成后,后续的过滤和查询就会非常快速和高效。将 CouchDB 视图与“更改”通知结合使用,我们既可以计算历史推文的统计信息(在用户加载页面时使用),然后,也可以在有新推文被处理时使用实时结果不断更新它。

  访问运行在 match-tracker.mybluemix.net 上的示例应用程序来查看结果。如果在比赛进行期间访问该页面,您会看到统计数据的“实时”更改。使用“重放”按钮,您还可以重新启动比赛时钟,显示在比各个赛周内的各场比赛期间推文的传送情况。

原文作者:佚名 来源:http://www.ibm.com/

相关帖子

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关于我们
联系我们
  • 电话:010-86393388
  • 邮件:udn@yonyou.com
  • 地址:北京市海淀区北清路68号
移动客户端下载
关注我们
  • 微信公众号:yonyouudn
  • 扫描右侧二维码关注我们
  • 专注企业互联网的技术社区
版权所有:用友网络科技股份有限公司82041 京ICP备05007539号-11 京公网网备安1101080209224 Powered by Discuz!
快速回复 返回列表 返回顶部