akka 与kafka

akka 并发编程框架

kafka 高吞吐量分布式消息系统

akka 是一个用 Scala 编写的库,用于简化编写容错的、高可伸缩性的 Java 和 Scala 的 Actor 模型应用。

Actor模型并非什么新鲜事物,它由Carl Hewitt于上世纪70年代早期提出,目的是为了解决分布式编程中一系列的编程问题。其特点如下:

系统中的所有事物都可以扮演一个Actor

Actor之间完全独立

在收到消息时Actor所采取的所有动作都是并行的,在一个方法中的动作没有明确的顺序

Actor由标识和当前行为描述

Actor可能被分成原始(primitive)和非原始(non primitive)类别

非原始Actor有

由一个邮件地址表示的标识

当前行为由一组知识(acquaintances)(实例变量或本地状态)和定义Actor在收到消息时将采取的动作组成

消息传递是非阻塞和异步的,其机制是邮件队列(mail-queue)

所有消息发送都是并行的

什么是actor?

Actor模型在并发编程中是比较常见的一种模型。很多开发语言都提供了原生的Actor模型。例如erlang,scala等。

它由Carl Hewitt于上世纪70年代早期提出,目的是为了解决分布式编程中一系列的编程问题。

Actor模型的本质已经被强调了无数遍:万物皆Actor。Actor之间只有发送消息这一种通信方式。

一个Actor如何处理多个Actor的请求呢?它先建立一个消息队列,每次收到消息后,就放入队列,而它每次也从队列中取出消息体来处理。通常我们都使得这个过程是循环的。让Actor可以时刻处理发送来的消息。

什么是akka?

Akka是一个用Scala编写的库,用于简化编写容错的、高可伸缩性的Java和Scala的Actor模型应用。

>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>

Kafka[1]是linkedin用于日志处理的分布式消息队列,linkedin的日志数据容量大,但对可靠性要求不高,其日志数据主要包括用户行为(登录、浏览、点击、分享、喜欢)以及系统运行日志(CPU、内存、磁盘、网络、系统及进程状态)。

当前很多的消息队列服务提供可靠交付保证,并默认是即时消费(不适合离线)。高可靠交付对linkedin的日志不是必须的,故可通过降低可靠性来提高性能,同时通过构建分布式的集群,允许消息在系统中累积,使得kafka同时支持离线和在线日志处理。

Kafka是一个高吞吐量分布式消息系统。linkedin开源的kafka。 Kafka就跟这个名字一样,设计非常独特。首先,kafka的开发者们认为不需要在内存里缓存什么数据,操作系统的文件缓存已经足够完善和强大,只要你不搞随机写,顺序读写的性能是非常高效的。kafka的数据只会顺序append,数据的删除策略是累积到一定程度或者超过一定时间再删除。Kafka另一个独特的地方是将消费者信息保存在客户端而不是MQ服务器,这样服务器就不用记录消息的投递过程,每个客户端都自己知道自己下一次应该从什么地方什么位置读取消息,消息的投递过程也是采用客户端主动pull的模型,这样大大减轻了服务器的负担。Kafka还强调减少数据的序列化和拷贝开销,它会将一些消息组织成Message
Set做批量存储和发送,并且客户端在pull数据的时候,尽量以zero-copy的方式传输,利用sendfile(对应java里的 FileChannel.transferTo/transferFrom)这样的高级IO函数来减少拷贝开销。可见,kafka是一个精心设计,特定于某些应用的MQ系统,这种偏向特定领域的MQ系统我估计会越来越多,垂直化的产品策略值的考虑。

时间: 2024-10-09 11:07:10

akka 与kafka的相关文章

DCOS实践分享(4):如何基于DC/OS整合SMACK(Spark, Mesos, Akka, Cassandra, Kafka)

这篇文章入选CSDN极客头条 http://geek.csdn.net/news/detail/71572 当前,要保证业务的市场竞争力,仅靠设计一个可用并且好看的产品,已经完全不能满足要求.全球消费者都希望产品能够足够的智能化,通过大数据分析来改善他们的用户体验.简言之,物联网和大数据终将成为改变生活的技术驱动力. 近几年涌现了大量的技术架构与设计模式,开发者和科学家可以利用它们为大数据和物联网开发实时的数据分析工作流应用.其中批处理架构,流式处理架构,lambda架构,Kappa架构,都是其

使用Akka、Kafka和ElasticSearch等构建分析引擎 -- good

本文翻译自Building Analytics Engine Using Akka, Kafka & ElasticSearch,已获得原作者Satendra Kumar和网站授权. 在这篇文章里,我将和大家分享一下我用Scala.Akka.Play.Kafka和ElasticSearch等构建大型分布式.容错.可扩展的分析引擎的经验. 我的分析引擎主要是用于文本分析的.输入有结构化的.非结构化的和半结构化的数据,我们会用分析引擎对数据进行大量处理.如下图所示为第一代架构,分析引擎可以用REST

初步认识kafka

Kafka是用于日志处理的分布式消息队列,Kafka使用scala语言开发的. 各个开源分布式处理系统Cloudera.Apache Storm.Spark都支持与Kafka集成.其日志处理的一个场景:Kafka采集日志以后,经过spark分布式计算,将日志数据导入到HBase中.Kafka采集的日志主要包括用户行为及系统运行日志等.在大数据领域中,Spark.Akka.Kafka都是用Scala语言开发的,因此凸显了scala语言的巨大价值.

流处理基本介绍

1.  什么是流处理 一种被设计来处理无穷数据集的数据处理系统引擎 2.  流处理的几个概念 1.     无穷数据(Unbounded data):一种持续生成,本质上是无穷尽的数据集.它经常会被称为"流数据".然而,用流和批次来定义数据集的时候就有问题了,因为如前所述,这就意味着用处理数据的引擎的类型来定义数据的类型.现实中,这两类数据的本质区别在于是否有限,因此用能体现出这个区别的词汇来定性数据就更好一些.因此我更倾向于用无穷数据来指代无限流数据集,用有穷数据来指代有限的批次数据

Scala在挖财的应用实践--转载

原文地址:http://www.infoq.com/cn/articles/scala-architecture-wacai 编者按:本文是根据ArchSummit大会上挖财资深架构师王宏江的演讲<Scala在挖财的应用实践>整理而成. 这次分享有三个方面,1是介绍一下挖财当前的开发情况和后端的架构, 2是挖财选择Scala的原因,3是挖财使用Scala相关的技术时碰到的问题以及经验. 第一部分是团队的情况和后端技术的架构.近一年我们的开发团队从50人增长到了现在两百人,公司总人数扩张到600

新书:Scala语言基础与开发实战

大数据科学丛书系列的最新一本<Scala语言基础与开发实战>即将面市,预计月底上架.内容还是不错的,文笔简介,内容实用,值得学.用. 大数据资深培训师王家林新作. 详细介绍大数据开发语言Scala及其在分布式框架Akka和Kafka中的应用. 秉承"实战"类图书特点,解析大量代码的编写操作,具有较强的可操作性,便于读者学习和理解. 算上再过几个月出版的<Spark内核解析及性能调优>,一年时间,大数据科学丛书系列之Spark的小套系基本形成了:从学习Spark的

[转]什么是分布式系统,如何学习分布式系统

什么是分布式系统 分布式系统挑战 分布式系统特性与衡量标准 组件.理论.协议 用一个请求串起来 一个简化的架构图 概念与实现 总结 references 正文 虽然本人在前面也写过好几篇分布式系统相关的文章,主要包括CAP理论.分布式存储与分布式事务,但对于分布式系统,并没有一个跟清晰的概念.分布式系统涉及到很多的技术.理论与协议,很多人也说,分布式系统是“入门容易,深入难”,我之前的学习也只算是管中窥豹,只见得其中一斑.因此,一致希望能对分布式系统有一个更全面的认识,至少能够把分布式系统中的各

什么是分布式系统,如何学习分布式系统

目录 什么是分布式系统 分布式系统挑战 分布式系统特性与衡量标准 组件.理论.协议 用一个请求串起来 一个简化的架构图 概念与实现 总结 references 正文 虽然本人在前面也写过好几篇分布式系统相关的文章,主要包括CAP理论.分布式存储与分布式事务,但对于分布式系统,并没有一个跟清晰的概念.分布式系统涉及到很多的技术.理论与协议,很多人也说,分布式系统是"入门容易,深入难",我之前的学习也只算是管中窥豹,只见得其中一斑.因此,一致希望能对分布式系统有一个更全面的认识,至少能够把

大数据组件

一.大数据组件分类: 1.计算类: hadoop,spark,flink,hive 2.传输类:kafka,flume,redis 3.存储类:hbase,mongodb,Cassandra 4.调度类:zookeeper 5.配置类:mesos,yarn 二.流行的框架SMACK Spark Mesos Akka Cassandra Kafka 三.Apache Zookeeper 分布式调度 Spark 计算 Kafka 中心化传输整合数据,面向服务 Cassandra 线性增加容量,节省资