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

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

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

本系列前面的两篇文章:


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

查看所有标签

猜你喜欢:

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

Java学习指南(第4版)(上下册)

Java学习指南(第4版)(上下册)

Patrick Niemeyer、Daniel Leuck / 李强、王建新、吴戈 / 人民邮电出版社 / 2014-7 / 128.00元

《Java学习指南(第4版)(上、下册)》是畅销Java学习指南的最新版,详细介绍了Java 6和Java 7的语言特性和API。本书全面介绍了Java的基础知识,力图通过完备地介绍Java语言、其类库、编程技术以及术语,从而成为一本名符其实的入门级图书。 《Java学习指南(第4版)(上、下册)》加入了从Java 6和Java 7发布以后的变化,包括新的语言功能、并发工具(Fork-Joi......一起来看看 《Java学习指南(第4版)(上下册)》 这本书的介绍吧!

Base64 编码/解码
Base64 编码/解码

Base64 编码/解码

Markdown 在线编辑器
Markdown 在线编辑器

Markdown 在线编辑器

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换