Kafka(一)背景和概念

背景

《财富》杂志前100企业,有80家以上信任、使用Kafka。全球行业top10企业中,制造业10/10,银行业7/10,电信8/10,保险10/10,10/10信息技术服务公司,7/10零售公司,使用Kafka。

Apache Kafka的一个开源的、分布式的事件流流平台,成千上万的企业使用它来实现高性能的数据管道,流分析,数据集成和关键任务应用程序。

Kafka由Scala和Java开发。

背景,原来是一个高吞吐量,分布式的发布——订阅消息系统,分布式流处理平台,最初由Linkedin 公司开发,后面成为Apache基金会ASF的一分子。

核心模块由Scala开发,支持Java,C/C++,Scala,Python,Go,Erlang,Nodejs等多语言的客户端。越来越多的开源分布式系统支持与Kafka集成,如Flume,Apache Storm,Spark,Flink。

特性,高吞吐量,可持久化,分布式,支持数据流处理。

特点,开源的,轻量级,分布式,可分区,具有复制备份(Replication),基于Zookeeper协调管理,流式处理,高吞吐量,高性能,低延迟,可容错,可持久化。

场景

使用场景包括

  • 发布、订阅,作为一个消息系统,读写流数据
  • 处理,编写实时的、可扩展的流处理应用程序。
  • 存储,基于分布式,复本和容错机制的集群中存储流数据

消息队列

提出问题

双11的时候,PK剁手了,买了N多的东西,过了几天,周五,快递小哥送快递来了,可是PK正在搬砖,工头很苛刻,不让PK回家拿快递,快递小哥又只能等着PK签收,才能送下一家,怎么办呢?这个时候PK告诉快递小哥,让他把快递放在门卫王大爷那儿。

解耦,不用现在来接收这个快递了,不影响搬砖了,找王大爷取快递就可以了,不管是那个快递小哥,找王大爷拿就可以了。

异步,快递小哥不用等待PK签收,可以去送别的快递了。

削峰,双十一订单剧增,多个快递小哥都有满满一车的快递,门卫大爷房间也小,年老色衰也记不住谁是谁的了,快递小哥把快递放在菜鸟驿站。

消息队列通信模式

包括点对点和发布订阅与的模式

点对点,发布订阅

点对点模式,消息队列中的消息只能被一个消费者消费。

发布订阅,生产者生产一个消费,可以被订阅Topic的所有消费者消费,每个消费者可以拿到消息队列中原始消息的拷贝。

流处理

流处理和批处理

流处理,对于源源不断、实时、动态的数据的处理、聚合、分析。快速,高效,低延迟。(场景包括支付交易,社交网络,物联网,系统监控等)

批处理,对有界、持久、大量的数据的处理,聚合分析。速度较慢,处理数据量大。(场景包括数据仓库,离线日志分析,数据挖掘)

基本概念

Kafka集群可以在一个或跨数据中心的多个服务器上运行。Kafka集群存储流数据在Topic中。每条数据由一个键,一个值,和一个时间戳。

通过一个Kafka的架构图来了解Kafka的基本概念,如下:

  • Producer,消息的生产者
  • Consumer,消息的消费者
  • Kafka Cluster,Kafka集群
  • Broker,Kafka实例,每个机器上有一个或者多个Kafka实例,一般情况下一个机器上一个Kafka实例,多个Kafka实例构成一个Kafka集群,每个Kafka实例在集群中都有一个唯一的编号。
  • Topic,消息的主题,可以认为是消息的分类,一个Broker上可以创建多个Topic,Kafka消息保存在Topic中。
  • Partition,Topic的分区,每个Topic可以有多个分区,分区的作用是负载,提高Kafka的吞吐量,同一个Topic在不同分区的数据是不同的,Partition的物理表现形式就是一个文件夹。一个分区包含一系列有序不可变的消息。跨分区的消息没有顺序。
  • Leader,每个分区都有多个副本,Leader负责处理客户端读、写请求的分区。
  • Follower,即Replication,作为Leader的备胎,从Leader同步数据,但不处理客户端请求。当主分区Leader故障时,会选择一个备胎Follower作为Leader。Kafka中默认的最大副本数量是10个,副本和被复制Partition的数据是相同的,且副本的数量不能大于Broker的数量,Follower和Leader要在不同的机器,同一机器对于同一个分区也只可能存放一个副本。通过副本保证可用性。
  • Message,消息,Kafka通信的基本单位,固定长度的消息头和可变长度的消息体构成。
  • Consumer Group,可以将多个消费者组成一个消费者组,在Kafka的设计中,同一个分区的数据,只能被消费者组中的某一个消费者消费,同一个消费者组中的消费者可以消费同一个Topic的不同分区的数据,这也提高了Kafka的吞吐量,如下图所示。

             

  • Zookeeper,Kafka集群依赖Zookeeper来保存集群的元数据,选举Leader,Folloler,保证系统的可用性。

(完)(^_^)

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值