kafka概述与下一代消息队列
常用的消息中间件
消息中间件是当前处理大数据的一个非常重要的组件,用来解决应用解耦、异步通信、流量控制等问题,从而构建一个高效、灵活、消息同步和异步传输处理、存储转发、可伸缩和最终一致性的稳定系统。目前业界应用比较多的分布式消息中间件主要包括:ActiveMQ、RabbitMQ、Kafka、RocketMQ,虽然都是分布式消息中间件,但是每种消息中间件使用方式区别还是很大的。
ActiveMQ
优点:Apache开源,功能集全,文档多,历史悠久,支持多语言客户端,使用简单。
缺点:性能比较低、只支持主从架构,扩展性差。
RabbitMQ
优点:用Erlang语言实现,性能比ActiveMQ高,功能丰富,支持协议多(AMQP、XMPP、SMTP)。
缺点:虽然性能比ActiveMQ好,但比Kafka、RocketMQ还是有差距,只支持主从方式。扩展性差
Kafka
优点:Apache开源,性能非常高,可靠性好,分布式扩展能力,支持多语言。
缺点:管理工具少,支持协议少
RocketMQ
- 优点:Apache开源,java语言实现,学习了Kafka的设计理念,继承了高性能、扩展性好。功能对企业应用支持比较好了,如定时消息。
kafka设计目标
以时间复杂度为O1的方式 提供消息持久化能力,即使对TB级的数据也能保证常数级时间的访问能力。
高吞吐率,即使在廉价的商用机器上,也能做单机10万条每秒的传输率。
支持消息分区,及分布式消费,保证每个分区的消息顺序消费
支持离线数据处理和实时数据处理
支持在线水平扩展
Kafka的特性
高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。
可扩展性:kafka集群支持热扩展
持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失
容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)
高并发:支持数千个客户端同时读写
应用场景
消息系统:
KafKa作为一个优秀的消息系统,具有高吞吐量、内置的分区、备份冗余分布式的特点,为大规模的消息处理提供了一种很好的解决方案;
应用监控:
利用KafKa收集应用程序和服务器健康相关指标,如CPU占用率、IO、内存、连接数、TPS、QPS等,然后将指标信息进行处理
流处理:
需要将已经收集的流数据,如系统的点击、浏览事件,提供给其他流式计算框架进行处理,Spark Stream, Storm Flink;
持久性日志:
KafKa可以为外部系统提供一种持久性日志的分布式系统。日志可以在多个节点之间进行备份
Kafka概念
Message(消息):一条数据,每条消息都有一个键和对应的一个值。
producer(生产者):将消息发布到 topics。Producer 决定向 topic 分区的发布方式
consumer(消费者):消息的订阅者
Consumer Group:consumer的逻辑组,一条消息,只能被同一个Consumer Group消费一次。
topic(主题):消息的分类。消费者通过订阅Topic来读取数据
partition(分区):一个topic至少一个分区,不同分区不保证消息的消费顺序。更多的分区意会着,更高吞吐能力。同时会打开更多的文件句柄。进程打开的文件句柄是目前Kafka系统的一大瓶颈。Kafka broker使用的是本地文件系统,这将会影响Kafka往流式架构发展,也许Kafka以后会支持分布式的文件系统。如MapR Stream.
Broker:Kafka 以分布式系统/集群方式运行。集群中的每个节点称一个 Broker,负责消息的持久化,可以横向扩展。
Replication:Kafka消息的备份,实现数据冗余,保障数据尽量不丢失;
Offset(偏移量):消息是存储在broker上的分区里
ISR(In-sync Replica):可用同步的副本列表,ISR<Replication,消息在所有复本同步的过程中,有的节点同步速度比较慢,如果和Leader差比较多,这个时这个节点的复本就会被从ISR中移除,当同步进度跟上leader后重新加入ISR
Kafka的创新
消息的持久化的时间:不再需要跟踪特定消息的读取情况,设定消息的保留时间。确保消息被读取之后再删除。
消费者可以自己管理消息偏移量offset,Kafka可以将消息存储在文件系统上,读取消息时就和读文件一样,可以顺序性的读消息。因此Kafka的处理消息的速度非常快。
Kafka的缺点
Topic和分区数量问题,Kafka在上万的topic面前,性能会非常低下。
手动均均衡分区负载,不能自动实现负载均衡
没有固定的序列化机制,如果大规模使用时,不一样的序列机制,就无法兼容通讯
镜像不足,Kafka只是简单把消息转发,生产者和消费者却不能转移过去
下一代的消息系统-MapR Stream
被称为下一代的消息系统,使用MapR平台的分布式文件系统,在存储上比KafKa更加强大。它的应用是在Kafka等消息队列都无法满足时,才考虑的一个消息系统。当前的架构都是请求响应型,无法满足现实生活的实时性,像当前的直播系统,或者其他实时的系统,对消息实时性有很高的要求,主是、数据量都很大时,Kafka消息队列可能也无法满足。

kafka概述与下一代消息队列的更多相关文章
- 为什么要用kafka、rabbit等消息队列
1.解耦: 允许你独立的扩展或修改两边的处理过程,只要确保它们遵守同样的接口约束. 2.冗余: 消息队列把数据进行持久化直到它们已经被完全处理,通过这一方式规避了数据丢失风险.许多消息队列所采用的&q ...
- Kafka,Mq,Redis作为消息队列有何差异?
Kafka作为新一代的消息系统,mq是比较成熟消息系统,而redis也可以发布订阅,那么这三者有何异同? RabbitMQ 是使用Erlang编写的一个开源的消息队列,本身支持很多的协议:AMQP,X ...
- 【kafka】一、消息队列
在高并发的应用场景中,由于来不及同步处理请求,接收到的请求往往会发生阻塞.例如,大量的插入.更新请求同时到达数据库,这会导致行或表被锁住,最后会因为请求堆积过多而触发“连接数过多的异常” 的错误.因此 ...
- 消息队列,RabbitMQ、Kafka、RocketMQ
目录 1.消息列队概述 1.1消息队列MQ 1.2AMQP和JMS 1.2.1AMQP 1.2.2JMS 1.2.3AMOP 与 JMS 区别 1.3消息队列产品 1.3.1 Kafka 1.3.2 ...
- 消息队列与Kafka
2019-04-09 关键词: 消息队列.为什么使用消息队列.消息队列的好处.消息队列的意义.Kafka是什么 本篇文章系本人就当前所掌握的知识关于 消息队列 与 kafka 知识点的一些简要介绍,不 ...
- 【消息队列】kafka是如何保证高可用的
一.kafka一个最基本的架构认识 由多个broker组成,每个broker就是一个节点:创建一个topic,这个topic可以划分为多个partition,每个partition可以存在于不同的br ...
- 消息队列Kafka学习记录
Kafka其实只是众多消息队列中的一种,对于Kafka的具体释义我这里就不多说了,详见:http://baike.baidu.com/link?url=HWFYszYuMdP_lueFH5bmYnlm ...
- POSIX 消息队列 之 概述 链接方式
NAMEmq_overview —— POSIX消息队列概述 DESCRIPTIONPOSIX消息队列允许进程以消息的形式交换数据.此API与System V消息队列(msgget(2),msgsnd ...
- 消息队列kafka
消息队列kafka 为什么用消息队列 举例 比如在一个企业里,技术老大接到boss的任务,技术老大把这个任务拆分成多个小任务,完成所有的小任务就算搞定整个任务了. 那么在执行这些小任务的时候,可能 ...
随机推荐
- noip模拟赛 时之终末
题目背景 圣乔治:不用拘泥,剩下的时间已不多…… 圣乔治:直呼我的真名—— 丝佩碧雅:圣乔治大人 圣乔治:如今,已无法维持结界,或是抑制深渊的前进 圣乔治:既然如此,我将献上这副身躯,期望最后的战斗 ...
- 清北学堂模拟赛d6t4 数组异或
分析:直接O(n^3)做是只有50分的,可以加一点小小的优化,就是c[k]可以从c[k-1]得到,但是还是只有60分,从宏观意义上是不能继续优化了.对于这类涉及到位运算的性质的题目,将每个数转化成二进 ...
- maven local responsitory 手工新增jar
1.推荐几个好的 Maven 常用仓库网址:http://mvnrepository.com/http://search.maven.org/http://repository.sonatype.or ...
- 温故之--Linux 初始化 init 系统
参选URL: http://www.ibm.com/developerworks/cn/linux/1407_liuming_init1/index.html 本系列一共三篇,看完记住,那水平就不一样 ...
- hdu_1285_确定比赛名次_201312081335
确定比赛名次 Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- springcloud(十一):服务网关Zuul高级篇
时间过的很快,写springcloud(十):服务网关zuul初级篇还在半年前,现在已经是2018年了,我们继续探讨Zuul更高级的使用方式. 上篇文章主要介绍了Zuul网关使用模式,以及自动转发机制 ...
- EPEL reporsitory
在centos 5上yum install git的时候报错说没有git这个package. 这是因为centos的软件策略非常保守,因为它基本就是redhat企业版的copy.所以想在centos5 ...
- Harry Potter and the Order of the Phoenix
书名:Harry Potter and the Order of the Phoenix 作者:J.K. Rowling 篇幅: 870P 蓝思值:950L 用时: 22天 工具: 有道词典 [透析成 ...
- luogu1005 矩阵取数游戏
题目大意 一个矩阵,每次从每一行的行首或行尾取一个数,每一行的价值为 取的数*2^当前取数的次数,每一次的价值为每一行的价值的和.求得到的价值的最大值. 思路 #include <cstdio& ...
- [POJ 2536] Gopher ||
[题目链接] http://poj.org/problem?id=2536 [算法] 匈牙利算法解二分图最大匹配 [代码] #include <algorithm> #include &l ...