阿里云-云小站(无限量代金券发放中)
【腾讯云】云服务器、云数据库、COS、CDN、短信等热卖云产品特惠抢购

使用Akka来优化Spark+ElasticSearch的准实时系统

465次阅读
没有评论

共计 2124 个字符,预计需要花费 6 分钟才能阅读完成。

假如有这样一个场景:系统每秒钟都会收到大量的事件,每个事件又包含很多参数,用户不仅需要准实时地还需要定期地判断每一种事件、事件的每一种参数值的组合是否超过了系统设定的阈值。面对这一场景,用户应该采用什么样的方案呢?最近,来自于 Premium Minds 的软件架构师 André Camilo 在博客上发表了一篇文章,介绍了他们是 如何使用 Akka 解决这一棘手问题的。

在该文章中 André Camilo 首先介绍了他们的应用场景:

我们的系统每秒钟最多会收到几百个事件,有些事件有 8 个参数,有些事件有超过 240,000 个参数值的组合(* 假如有一个 PhoneCall(phoneNumber, countryCode, geoZone) 事件,该事件有三个参数,其中 phoneNumber 有 4,000 个值, countryCode 有 5 个值,geoZone 有 10 个值,那么可能的参数值组合约为 (4000+1)(5+1)(10+1)=240k 个 *),我们不 仅需要实时地判断这些事件以及参数值的组合是否超过了系统设定的阀值,还要保留最近 30 分钟的数据,以便于判断在这段时间内它们出现的频率是否也超过了阀 值。

处理该问题最简单的方式或许就是将这些数据都存起来,然后每隔一秒钟就去计算每一种组合出现的频率,但是事实上这是无法实现的,因为这样每秒钟会有超过 240,000 个查询,系统是无法承受的。André Camilo 给出的第一种方案是使用 Spark 和 ElasticSearch:

我们创建了一个 Spark Streaming 的数据流管道,该管道首先从 JMS 队列中读取消息并将其转换成 PhoneCall 事件,然后根据事件的参数值将一个事件分离成多个事 件,之后再使用 countByWindow 函数计算每一种事件组合的频率,最后检查每种组合的平均频率是否超过了阈值。在使用 countByWindow 计算时,每秒钟都会设置一个 30 分钟的窗口,同时函数输出值会除以 1800 秒以得到每个窗口的平均频率,最终结果使用 ElasticSearch 集群存 储。

该方案的流程如下:

使用 Akka 来优化 Spark+ElasticSearch 的准实时系统

这一方案虽然可行,但是并没有解决 André Camilo 的问题,不是因为 Spark 不行,而是因为虽然 Spark Streaming 能够处理大量的实时数据,但是却无法处理大量的窗口。在 André Camilo 的实验中,如果组合数低于 1000,那么这种方案能够工作的很好,但是如果超出了这一数量,那么就会导致内存溢出问题。

André Camilo 给出的第二种方案是使用 Akka:

  • 对每一种参数值的组合创建一个组合 Actor
  • 创建一个负责接收所有事件的 Actor,该 Actor 根据事件的参数值将一个事件分离成多个事件,并根据参数组合的对应关系将分离后的事件发送到步骤 1 创建的组合 Actor
  • 每一个组合 Actor 通过 环形缓冲区 存储最近 30 分钟的事件数(单位为秒),每过一秒,该缓冲区就滚动一个位置,同时该 Actor 会计算事件的频率,检查该频率是否超过了系统设定的阈值,并将结果发送到 ElasticSearch Actor
  • ElasticSearch Actor 仅仅是一个 ActorPublisher,负责将数据发送到 ElasticSearch 流驱动

第二种方案的流程如下:

使用 Akka 来优化 Spark+ElasticSearch 的准实时系统

环形缓冲区的结构如下:

使用 Akka 来优化 Spark+ElasticSearch 的准实时系统

你可能会问,为每一种组合创建一个 Actor 会不会导致 Actor 太多?André Camilo 告诉我们,对 Akka 这个超轻量级的事件驱动框架来说这都不是问题。使用该方案 André Camilo 在一个 i7 4GB 的笔记本上轻松解决了 800 个事件的分离处理。更为重要的是,Akka 支持水平扩展,如果系统有更多的参数值组合,或者需要更大的吞吐量,那么只需 要增加更多的机器即可。

最后,André Camilo 的结论是:Spark 有非常好的特性,它的解决方案更简单、更直观,但不太适合这个场景。Akka 非常适合处理 CPU 敏感的问题,Actor 模型更适合处理高并发的问题。

Linux 上安装部署 ElasticSearch 全程记录  http://www.linuxidc.com/Linux/2015-09/123241.htm

Elasticsearch 安装使用教程 http://www.linuxidc.com/Linux/2015-02/113615.htm

ElasticSearch 配置文件译文解析 http://www.linuxidc.com/Linux/2015-02/114244.htm

ElasticSearch 集群搭建实例  http://www.linuxidc.com/Linux/2015-02/114243.htm

分布式搜索 ElasticSearch 单机与服务器环境搭建  http://www.linuxidc.com/Linux/2012-05/60787.htm

ElasticSearch 的工作机制  http://www.linuxidc.com/Linux/2014-11/109922.htm 

Akka 的详细介绍 :请点这里
Akka 的下载地址 :请点这里

本文永久更新链接地址 :http://www.linuxidc.com/Linux/2015-12/126439.htm

正文完
星哥玩云-微信公众号
post-qrcode
 0
星锅
版权声明:本站原创文章,由 星锅 于2022-01-21发表,共计2124字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
【腾讯云】推广者专属福利,新客户无门槛领取总价值高达2860元代金券,每种代金券限量500张,先到先得。
阿里云-最新活动爆款每日限量供应
评论(没有评论)
验证码
【腾讯云】云服务器、云数据库、COS、CDN、短信等云产品特惠热卖中

星哥玩云

星哥玩云
星哥玩云
分享互联网知识
用户数
4
文章数
19351
评论数
4
阅读量
7985431
文章搜索
热门文章
星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛NAS-6:抖音视频同步工具,视频下载自动下载保存

星哥带你玩飞牛 NAS-6:抖音视频同步工具,视频下载自动下载保存 前言 各位玩 NAS 的朋友好,我是星哥!...
星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛NAS-3:安装飞牛NAS后的很有必要的操作

星哥带你玩飞牛 NAS-3:安装飞牛 NAS 后的很有必要的操作 前言 如果你已经有了飞牛 NAS 系统,之前...
我把用了20年的360安全卫士卸载了

我把用了20年的360安全卫士卸载了

我把用了 20 年的 360 安全卫士卸载了 是的,正如标题你看到的。 原因 偷摸安装自家的软件 莫名其妙安装...
再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见zabbix!轻量级自建服务器监控神器在Linux 的完整部署指南

再见 zabbix!轻量级自建服务器监控神器在 Linux 的完整部署指南 在日常运维中,服务器监控是绕不开的...
飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛NAS中安装Navidrome音乐文件中文标签乱码问题解决、安装FntermX终端

飞牛 NAS 中安装 Navidrome 音乐文件中文标签乱码问题解决、安装 FntermX 终端 问题背景 ...
阿里云CDN
阿里云CDN-提高用户访问的响应速度和成功率
随机文章
自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个AI智能体—跟创业大佬对话

自己手撸一个 AI 智能体 — 跟创业大佬对话 前言 智能体(Agent)已经成为创业者和技术人绕...
星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛NAS-1:安装飞牛NAS

星哥带你玩飞牛 NAS-1:安装飞牛 NAS 前言 在家庭和小型工作室场景中,NAS(Network Atta...
300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

300元就能买到的”小钢炮”?惠普7L四盘位小主机解析

  300 元就能买到的 ” 小钢炮 ”?惠普 7L 四盘位小主机解析 最近...
星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛NAS-8:有了NAS你可以干什么?软件汇总篇

星哥带你玩飞牛 NAS-8:有了 NAS 你可以干什么?软件汇总篇 前言 哈喽各位玩友!我是是星哥,不少朋友私...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...

免费图片视频管理工具让灵感库告别混乱

一言一句话
-「
手气不错
星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛NAS硬件03:五盘位+N5105+双网口的成品NAS值得入手吗

星哥带你玩飞牛 NAS 硬件 03:五盘位 +N5105+ 双网口的成品 NAS 值得入手吗 前言 大家好,我...
星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

星哥带你玩飞牛NAS-16:飞牛云NAS换桌面,fndesk图标管理神器上线!

  星哥带你玩飞牛 NAS-16:飞牛云 NAS 换桌面,fndesk 图标管理神器上线! 引言 哈...
开发者福利:免费 .frii.site 子域名,一分钟申请即用

开发者福利:免费 .frii.site 子域名,一分钟申请即用

  开发者福利:免费 .frii.site 子域名,一分钟申请即用 前言 在学习 Web 开发、部署...
小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比

小白也能看懂:什么是云服务器?腾讯云 vs 阿里云对比 星哥玩云,带你从小白到上云高手。今天咱们就来聊聊——什...
星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的NAS中!

星哥带你玩飞牛 NAS-10:备份微信聊天记录、数据到你的 NAS 中! 大家对「数据安全感」的需求越来越高 ...