先看看模糊的概念, kafaka是一个纷纷不是,支持分区的(partition),多副本的(replica)基于zookeeper协调的分布式消息系统。他的最大的特性就是可以实时的处理大量数据以满足各种需求场景:比如基于hadoop的批处理系统,低延迟的实时系统、storm/spark六十处理引擎,web/nginx日志、访问日志、消息服务等等、用scala语言编写。
1.kafka的使用场景
日志收集:公司可以使用kafka手机各种服务的log,通过kafka以同一个接口服务的方式开放给各种consumer,列如hadoop、hbase、solr、等。
消息系统:解耦生产者和消费者、缓存消息等。
用户活动跟踪:kafka进场用来记录web用户或者app用户的各种活动,如浏览网页、搜索和点击等活动,这些活动i你休息被各个服务器发布到kafka的topic中,然后订阅者通过订阅topic来做实时的监控分析,或者装载到hadoop、数据仓库中做离线分析和挖掘。
运营指标:kafka也经常用来记录运营监控数据据。包括收集各种分布式应用的数据,生产各种操作的集中反馈,比如报警和报告。
2.kafka的基本概念
kafka是一个发呢不是的,分区的消息(commit log)服务。他提供一个消息系统因该具备的功能,
但是却有着独特的设计。可以这样来说,kafka借鉴了jms规范的思想,但是却并没有王权遵循jms规范,
名称 | 解释 |
Broker | 消息中间件处理节点,一个kafka节点就是一个broker,一个或者多个broler可以组成一个kafka集群 |
Topic | kafka更具topic对消息进行归类,发布到kafka集群的每条消息要指定一个topic |
Producer | 消息生产者,向broker发送消息的客户端 |
Consumer | 消息消费者,从broker读取消息的客户端 |
ConsumerGroup | 每个Consumer属于一个特定的Consumer Group,一条消息可以被多个不同的Consumer Group消息,但是一个Consumer Group 中只能有一个Consumer能够消费该消息 |
Partition | 物理上,一个topic可以分为多个partirion,每个partition内部消息是有序的 |
差不多就是和其他的消费队列一样,produce发送消息给fafka集群,然后转发给
消费者。 服务端(broker) 和客户端(producer、cumsumer)之间通过TCP协议完成。