Kafka介绍及其分布式安装使用

今天看到特别励志的一段话,加工一下送给大家。智能产品改变世界,代码改变智能产品,你改变代码    ===推出==》  你改变世界。对,没错,你现在正在做的,就是在改变世界。

1  Kafka简介

Kafka是一个分布式发布(pub)—订阅(Sub)消息系统,消息中间件。由linkedin使用scala编写,用作LinkedIn的活动流(Activity Stream)和运营数据处理管道(Pipeline)的基础。Linkedin于2010年贡献给Apache并孵化成*项目。具有高水平扩展和高吞吐量等特点。它主要用户处理活跃的数据(登录、浏览、点击、分享等用户行为产生的数据)。

kafka作为一款消息中间件,是一个分布式、可划分、冗余备份的持久性消息队列,主要用于处理活跃的流式数据(登录、浏览、点击、分享等用户行为产生的数据)。那么对于流式数据来说,常常需要实时处理,因此Kafka通常与Storm、Spark Streaming、Flink等实时流式处理框架对接,一方面可以缓存数据,避免数据流喷口过大,造成数据拥挤、丢失等情况;另一方面使得各系统层解耦,分离上下游服务,降低系统组网复杂度。

小厨总结了Kafka的几大特点:

  1. 典型的生产者消费者模型,消息遵从FIFO(First In First Out)原则,对于某些要求强顺序处理的场景,Kafka可设置一个Topic里面只有一个Partition。
  2. 高吞吐:Kafka producer的张口每秒可以生产25万字节的消息,Consumer可以消费55万字节的消息。
  3. 持久性:消息可以直接持久化在磁盘上,从而保证消息不会丢失,确保数据的高效安全的持久化。
  4. 分布式:基于分布式的扩展、和容错机制;Kafka的数据都会复制到几台服务器上。当某一台故障失效时,生产者和消费者转而使用其它的机器;根据kafka的结构,对每份数据消息均会保存两份,确保消息安全。

2  Kafka原理架构

Kafka介绍及其分布式安装使用

Kafka的整体架构非常简单,是显式分布式架构,producer、broker(即kafka机器)和consumer都可以有多个。Producer,consumer实现Kafka注册的接口,数据从producer发送到broker,broker承担一个中间缓存和分发的作用。broker分发注册到系统中的consumer。broker的作用类似于缓存,即活跃的数据和离线处理系统之间的缓存。客户端和服务器端的通信,是基于简单,高性能,且与编程语言无关的TCP协议。下面根据上图,小厨为大家介绍一下Kafka的各服务组件,其中上图中的Broker(Kafka集群)包含了Topic、Partition,但没在图中表现出来。

  1. Topic:主题,Kafka处理的消息的不同分类(逻辑概念),可以根据Topic的不同,去区分处理不同的消息;
  2. Broker:消息的代理,Kafka集群中的一个kafka服务节点称为一个broker,主要存储消息数据。存在硬盘中。
  3. Partition:Topic物理上的分组,一个topic在broker中被分为1个或者多个partition,分区在创建topic的时候指定。每个topic都是有分区的。
  4. Message:消息,是通信的基本单位,每个消息都属于一个partition,每个producer可以向一个topic(主题)发布一些消息。
  5. Producer:消息和数据的生产者,向Kafka的一个topic发布消息的过程即为生产。
  6. Consumer:消息和数据的消费者,订阅topic并处理其发布的消息的过程即为消费。
  7. zookeeper:协调kafka的正常运行。

消息发送流程如下图所示。Producer会将消息发布到指定Topic的Partition里面,Consumer会从Kafka集群里拉取数据。

Kafka介绍及其分布式安装使用

3  Kafka分布式安装

待更新。。。。回家吃个饭。明天再写