Kafka入门、Kafka应用场景、Kafka设计理念 01

1. Kafka简介

  • Kafka是linkedin用于日志处理的分布式消息队列,同时支持离线和在线日志处理。
  • Kakfa对消息保存时根据Topic进行归类,发送消息者成为Producer,消息接受者成为Consumer。
  • Kafka集群有多个Kafka实例组成,每个实例(server)称为broker。无论是Kafka集群,还是producer和consumer都依赖有zookeeper来保证系统可用性,为集群保存一些meta信息。
    Kafka入门、Kafka应用场景、Kafka设计理念 01

2. Kafka应用场景

2.1 日志收集

  • 日志收集方面,其实开源产品有很多,包括Scribe、Apache Flume。很多人使用Kafka代替日志聚合(log aggregation)。
  • 日志聚合一般来说是从服务器上收集日志文件,然后放到一个集中的位置(文件服务器或hdfs)进行处理。
  • 然而Kafka忽略掉文件的细节,将其更清楚地抽象成一个个日志或者事件的消息流。这就让Kafka处理过程延迟更低,更容易支持多数据源和分布式数据处理。
  • 比起日志为中心的系统,比如Scribe或者Flume来说,Kafka提供同样高效的性能和因为复制导致的更高的耐用性保证,以及封底的端到端延迟。

2.2 行为跟踪

  • Kafka的另一个应用场景是跟踪用户浏览页面、搜索及其他行为,以发布-订阅的模式实时记录到对应的Topic里。
  • 那么这些结果被订阅者拿走后,就可以做进一步的实时处理,或实时监控,或放到Hadoop离线数据仓库里处理。

2.3 Kafka基本概念

  • Topic:特指Kafka处理的消息源(feeds of messages)的不同分类
  • Parition: Topic物流上的分组,一个topic可以分为多个parition,每个parition是一个有序的队列。parition中的每条消息都会被分配到一个有序的id(offset)。
  • Message:消息,是通信的基本单位,每个producer可以向一个Topic中(主题)发布一些消息。
  • Producers:消息和数据生产者,向Kafka的一个Topic发布消息的过程叫做paroducerss。
  • Consumers:消息和数据消费者,订阅topics并处理发布的消息的过程叫做Consumers.
  • Broker:缓存代理,Kafka集群职工的一台或多台服务器统称为Broker。

3. Kafka的Topics/Log

  • 一个Topic可以认为是一类消息,每个topic将被分成多个parition(区),每个parition在存储层是append log文件。
  • 任何发布到此parition的消息都会被直接追加到log文件的尾部,每条消息在文件中的位置称offset(偏移量),parition是以文件的的形式存储在文件系统中。
  • Logs文件根据broker中的配置要求,保留一定时间后删除来释放磁盘空间。

Parition: Topic 物理上的分组,一个 topic 可以分为多个 partition,每个 partition 是一个有序的队列。 partition 中的每条消息都会被分配一个有序的 id(offset)。
Kafka入门、Kafka应用场景、Kafka设计理念 01