随便谈一下 kafka 消息队列
随便谈一下 kafka 消息队列
今天就随便说一说 kafka 吧,看到哪说到哪,我们有时为了改善系统的性能不得不采取很多措施,消息队列就是其中一个十分有效的方法,我们平时的短信群发,为了避免一下子涌入大量数据,往往会把这些短信送入发送队列,排队一条一条的发送。我们的消息队列和这个发送队列也类似。
消息队列也有几种不同的类型,其中一种是点对点的消息队列。点对点说的是一个特定消息生产者生产消息放入队列,然后就会有一个消费者去队列中取数据,所以一个消息只会对应一个消费者。还有一种是发布/订阅的消息队列,就是一个消息会对应多个消费者。
Kafka 是什么?
Kafka 是由 Scala 和 Java 编写的。
Kafka 现在由 Apache 开发。
Kafka 是具有高吞吐量的特性:每秒可处理高达百万的消息。
Kafka 的优点
降低了系统架构的难度,将具体的任务细分到各个节点,谁发布任务,谁去处理任务都被安排妥当。
降低了编程的难度,Kafka 起到了连接各个子系统的作用。
是分布式的,无需关机也可扩展集群。
消费者分组
消费者分组是用来归类同类消费者。
假如我们有多个消费者,其中消费者 c0 要从 p0 去拿数据,消费者 c1 也要从 p0 去拿数据,那么我们就可以把 c0 和 c1 放到一个消费者组中,这个消费者组中的消费者共享消息,可以节约一些连接的时间。
应用场景
Kafka 是一直等待生产者生产消息,它是用来处理活跃的数据流的,如果数据量不多,是完全没有必要使用 Kafka 的。
需要同时处理在线消息和离线日志的情况下。
其它的消息队列
RabbitMQ:是一种重量级的消息队列,具有可伸缩性和消息持久化的特性。
ZeroMQ:号称最快的消息队列,在吞吐量上超过了 TCP 的性能。但是相关的技术比较复杂。
ActiveMQ:中庸的一个消息队列系统。
Redis:是一种 NoSQL 数据库也支持消息队列,数据量较小的时候性能比较强,但是数据量较大时就慢得令人绝望。
版权声明: 本文为 InfoQ 作者【Regan Yue】的原创文章。
原文链接:【http://xie.infoq.cn/article/83bc66b8552171fc11e3acc7f】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论