使用 Apache Kafka 和微服务实时分析 Twitter 趋势,第 3 部分: 将检索到的推文存储到 Cloudant 数...

栏目: 数据库 · 发布时间: 8年前

内容简介:使用 Apache Kafka 和微服务实时分析 Twitter 趋势,第 3 部分: 将检索到的推文存储到 Cloudant 数...

本文英文原文源自 James Thomas 在 IBM Bluemix Dev 社区的专栏。

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

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

使用 Apache Kafka 和微服务实时分析 Twitter 趋势,第 3 部分: 将检索到的推文存储到 Cloudant 数...

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

本系列前面的两篇文章:


以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

JavaScript and Ajax for the Web, Sixth Edition

JavaScript and Ajax for the Web, Sixth Edition

Tom Negrino、Dori Smith / Peachpit Press / August 28, 2006 / $24.99

Book Description Need to learn JavaScript fast? This best-selling reference’s visual format and step-by-step, task-based instructions will have you up and running with JavaScript in no time. In thi......一起来看看 《JavaScript and Ajax for the Web, Sixth Edition》 这本书的介绍吧!

SHA 加密
SHA 加密

SHA 加密工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具