深入理解kafka核心原理,应用场景,kafka与RocketMQ、RabbitMQ之间的比较

kafka

    Kafka是使用jJava和Scale实现的一种高吞吐量的分布式发布订阅消息系统,较传统消息系统,Kafka是重量级的,它具有更好的吞吐量,内置分区,复制和固有的容错能力,这使得它非常适合大规模消息处理应用程序。如日志处理,数据收集等海量流数据处理。

基本概念

Broker
    Kafka集群包含一个或多个服务器,这种服务器被称为broker [5] 
Topic
    每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。(物理上不同Topic的消息分开存
储,逻辑上一个Topic的消息虽然保存于一个或多个broker上但用户只需指定消息的Topic即可生产或消费数据
而不必关心数据存于何处)
Partition
    Partition是物理上的概念,每个Topic包含一个或多个Partition.
Producer
    负责发布消息到Kafka broker
Consumer
    消息消费者,向Kafka broker读取消息的客户端。
Consumer Group
    每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group
name则属于默认的group)。

Kafka的使用场景

(1)日志收集:一个公司可以用Kafka可以收集各种服务的log,通过kafka以统一接口服务的方式开放给各种consumer,例如Hadoop、Hbase、Solr等;

(2)消息系统:解耦和生产者和消费者、缓存消息等;

(3)用户活动跟踪:Kafka经常被用来记录web用户或者app用户的各种活动,如浏览网页、搜索、点击等活动,这些活动信息被各个服务器发布到kafka的topic中,然后订阅者通过订阅这些topic来做实时的监控分析,或者装载到Hadoop、数据仓库中做离线分析和挖掘;

(4)运营指标:Kafka也经常用来记录运营监控数据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告;

(5)流式处理:比如Spark streaming和storm;

(6)事件源;

集群架构

在kafka集群中,通过多个 broker 协同合作,producer 和 consumer 部署在各个业务逻辑中被频繁的调用,三者通过 zookeeper管理协调请求和转发。

Zookeeper在kafka的作用

(1)无论是kafka集群,还是producer和consumer都依赖于zookeeper来保证系统可用性集群保存一些meta信息。

(2)Kafka使用zookeeper作为其分布式协调框架,很好的将消息生产、消息存储、消息消费的过程结合在一起。

(3)同时借助zookeeper,kafka能够生产者、消费者和broker在内的所以组件在无状态的情况下,建立起生产者和消费者的订阅关系,并实现生产者与消费者的负载均衡。

kafka与RocketMQ、RabbitMQ之间的区别比较

Kafka的特性:
    - 高吞吐量、低延迟:kafka每秒可以处理几十万条消息,它的延迟最低只有几毫秒,每个topic可以分多个partition, consumer group 对partition进行consume操作。
    - 可扩展性:kafka集群支持热扩展
    - 持久性、可靠性:消息被持久化到本地磁盘,并且支持数据备份防止数据丢失
    - 容错性:允许集群中节点失败(若副本数量为n,则允许n-1个节点失败)
    - 高并发:支持数千个客户端同时读写

支持实时在线处理和离线处理:可以使用Storm这种实时流处理系统对消息进行实时进行处理,同时还可以使用Hadoop这种批处理系统进行离线处理;

发布了117 篇原创文章 · 获赞 17 · 访问量 8万+

猜你喜欢

转载自blog.csdn.net/Jack__iT/article/details/102759741