阿卡接口_阿卡vs风暴
阿卡接口
我最近在Twitter的Storm上工作了一段时间,这让我想知道,它与另一个高性能的并发数据处理框架Akka相比如何 。
什么是Akka和Storm?
让我们从两个系统的简短描述开始。 Storm是一种分布式实时计算系统。 在Storm集群上,您执行拓扑 ,该拓扑处理元组 (数据)流。 每个拓扑都是一个由喷口 (生成元组)和螺栓 (转换元组)组成的图形。 Storm负责群集通信,群集之间的故障转移和拓扑分布。
Akka是用于构建分布式,并发,容错应用程序的工具包。 在Akka应用程序中,基本构造是actor ; actor异步处理消息 ,并且保证每个actor实例一次最多使用一个线程运行,从而使并发变得更加容易。 Actor也可以远程部署。 即将提供一个集群模块 ,该模块将处理集群节点上的参与者的自动故障转移和分配。 两种系统都可以很好地扩展,并且可以处理大量数据。 但是何时使用一个,何时使用另一个?
关于该主题还有另一篇不错的博客文章,但我想进一步进行比较:让我们看看Storm中的基本构造与Akka中的基本构造相比。
比较基础
首先,Storm中数据的基本单位是元组 。 一个元组可以有任意数量的元素,每个元组元素可以是任何对象,只要有一个序列化器即可。 在Akka中,基本单位是message ,它可以是任何对象,但是它也应该可序列化(用于将其发送给远程参与者)。 因此,这里的概念几乎是等效的。
让我们看一下基本的计算单位。 在Storm中,我们有一些组成部分 : 螺栓和芽 。 螺栓可以是任何代码,它可以对传入的元组进行任意处理。 它还可以存储一些可变数据,例如以累积结果。 此外,螺栓在单个线程中运行,因此,除非您在螺栓中启动其他线程,否则不必担心并发访问螺栓数据。 这与演员非常相似,不是吗? 因此,暴风雨螺栓/萌芽对应于Akka演员。 这两个如何详细比较? 参与者可以接收任意消息; 螺栓可以接收任意元组。 预计两者都将根据接收到的数据进行一些处理。 两者都具有内部状态,该状态是私有的,并且可以防止并发线程访问。
演员和螺栓:差异
一个关键的区别是角色和螺栓之间的通信方式。 演员可以将消息发送给其他任何演员,只要它具有ActorRef
(如果没有,则可以按名称查找演员)。 它还可以将回复发送给正在处理的邮件的发件人。 另一方面,暴风雨是单向的 。 您无法发送回邮件; 您也无法将消息发送到任意螺栓。 您还可以将元组发送到命名通道(流),这将导致元组(消息)广播到拓扑中定义的所有侦听器。 (螺栓还会向发短信确认消息,这也是通信的一种形式。)
在Storm中,可以并行运行螺栓/新芽代码的多个副本(取决于并行性设置 )。 因此,这对应于一组(可能是远程的)actor,在它们前面有一个负载均衡器actor 。 在Akka的路线中众所周知的概念。 关于元组如何路由到Storm中的螺栓实例(随机,字段上的一致性哈希),有两种选择,这大致对应于Akka中的各种路由器选项(轮询,消息上的一致性哈希)。
螺栓和演员的“重量”也有所不同。 在Akka,通常会有很多演员 (多达数百万)。 在Storm中,预期的螺栓数量要少得多; 无论如何这都不是Storm的缺点,而是设计上的决定。 同样,Akka角色通常共享线程 ,而每个螺栓实例都倾向于具有专用线程 。
其他特性
Storm还具有一项现成的Akka尚未实现的关键功能: 保证消息传递 。 Storm跟踪了整个元组树,这些元组树是由发芽产生的任何元组产生的。 如果未确认所有元组,则将重播该元组。
另外,Storm的群集管理更加先进(基于Zookeeper的自动故障转移,群集中工作人员的自动平衡);以及 但是即将推出的Akka群集模块应该可以解决这个问题。
最后,Storm中的通信布局-拓扑-是静态的,并且是预先定义的。 在Akka中,通信模式可以随时间变化,并且可以完全动态。 actor可以向其他任何actor发送消息,甚至可以发送地址(ActorRefs)。
因此,总体而言,Storm很好地实现了特定范围的用法,而Akka则更多地是通用工具包。 可以在Akka之上构建类似于Storm的系统,但反之则不行(至少很难)。
翻译自: https://www.javacodegeeks.com/2013/06/akka-vs-storm.html
阿卡接口
阿卡接口_阿卡vs风暴相关推荐
- 微信小程序实名认证接口_人脸核身接口整理
一.微信小程序实名认证接口_人脸核身接口整理 开场一个字: 悲观.目前实名接口,人脸识别接口开放度不高."实名信息授权"已经回收. 二.人脸核身接口 1.使用条件 需要现申请通过才 ...
- PbootCMS发布接口_免登陆开源
由于之前的接口需要每次发布都需要登录一次,太麻烦,于是这次就搞了个免登陆的接口,设置一次可以一直使用,方便多了.(下载地址见文章最下方) 最新的这个PbootCMS发布插件是免登陆的,开源的,免费的, ...
- 2021-06-19复习java Collection集合 Iterator接口_迭代器 增强for循环 泛型
2021-06-19复习java Collection集合 Iterator接口_迭代器 增强for循环 泛型 Collection集合 java.util.coLlection接口 所有单列集合的最 ...
- 抖音小店商品接口_抖音接口
抖音小店商品接口_抖音接口 {"msg": "","code": 200,"data": {"toast&qu ...
- c语言实现java接口_五分钟带你了解Java是如何从容而优雅地实现接口数据校验
本篇文章给大家分享平时开发中总结的一点小技巧!在工作中写过Java程序的朋友都知道,目前使用Java开发服务最主流的方式就是通过Spring MVC定义一个Controller层接口,并将接口请求或返 ...
- golang 接口_「实战」助力数据库开发之接口篇 - Golang 连接 Greenplum
Greenplum 作为一款强大的 HTAP 数据库,针对大多数流行语言都有相应的连接库.大部分均是与 PostgreSQL 采用相同的接口,但是也有部分接口是 Greenplum 专门优化后用于自身 ...
- html调用接口_搜狗ocr识别接口
详细情况在代码中说明,如果不想自己使用TensorFlow,可使用下面接口 这是要识别的图片: 最终识别的结果: This is a lot of 12 point text to test the ...
- 免费idc公益接口_数据科学促进社会公益免费开放数据的最佳来源
免费idc公益接口 内容(Contents) Introduction 介绍 What is Open Data? 什么是开放数据? Open vs. Free vs. Online Data 开放与 ...
- VBS 请求WebAPI接口_从零开始实现简单的webapi框架【Golang 入门系列十一】
之前,已经讲过很多Golang的东西,比如基础语法,mysql的使用,redis的使用等等,感兴趣的可以看看以前的文章,https://www.cnblogs.com/zhangweizhong/ca ...
最新文章
- iOS游戏框架Sprite Kit基础教程第1章编写第一个Sprite Kit程序
- 闪电模型数学_初中数学|23种几何模型汇总(中)
- PHP中使用redis 执行lua脚本
- 时间序列趋势分解 seasonal_decompose
- 《架构探险》第三章 项目核心实现
- 一阶线性微分方程的初等积分法例题
- 华为鸿蒙p9刷机包,华为P9原版rom系统刷机包_华为P9最新版升级包更新下载
- [Git]删除git文件历史记录
- 高性能服务器开发基础系列 (七)——开源一款即时通讯软件的源码
- 大名鼎鼎的 Linux —— 进程,线程,协程
- 哪个软件测试手机电池续航好,6款手机电池续航测试排名:iPhone12mini险些垫底,第1名是小米10...
- 图片不变形,按照等比例缩小或扩大显示
- java word 批注_Java 添加Word批注(文本、图片)
- 程序员成长之旅——同步IO和异步IO(五种IO模型)
- 【比赛回顾】广工2020程序设计初赛B-秋夜easy
- 利用最小二乘法做线性回归
- Kratos,RPC服务调用过程
- 如何检查内存泄露问题
- Android实习周记:第二周,(IT==不停的学习) is TRUE
- jvm.dll+0x4c4686异常