kafka使用(一)- 概念理解

0. 概念

0.1 消息系统

消息系统负责将数据从一个应用程序传输到另一个应用程序,因此应用程序可以专注于数据,而不用担心怎么去共享它。

1)点对点消息系统:

消息被保留在队列中,一个或多个消费者可以消耗队列中的消息,但是特定的消息只能由一个消费者消费,一旦消费掉了,消息就会从队列中消失。

2)发布-订阅 消息系统

消息被保留在主题中,与点对点的系统不同,消费者可以订阅一个或多个主题,并使用该主题中的所有消息

0.2 LinkedIn开源

1)Databus 分布式数据同步系统
2)Cubert 高性能计算引擎
3)ParSeq Java一部处理框架
4)kafka 流处理平台

1. kafka介绍

1.1 kafka工作流程

1.1.1 发布-订阅工作流程

1)生产者定期向主题发送消息
2)kafka代理存储为该特定主题的分区中的所有消息,它确保消息在分区之间的平等共享
3)消费者订阅特定的消息
4)一旦消费者订阅了相应的主题,kafka将会向消费者提供主题的当前便宜,并且还将保存在zookeeper中
5)消费者将定期请求kafka的新消息
6)一旦kafka收到来自生产者的消息,它将这些消息转发给消费者
7)消费者将接受这些消息并且进行处理
8)一旦消息被处理了,消费者将向kafka代理发送确认
9)一旦kafka收到确认,它将便宜改为新值,并在zookeeper中更新它
10)以上流程将重复,直到消费者停止请求
11)消费者可以随时退回/跳到所需要的主题的偏移量,并阅读所有后续的消息

1.1.2 队列消息/用户组的工作流

在队列消息传递系统而不是单个消费者中,具有相同的"组ID"的一组消费者将订阅主题。简单来说,订阅具有相同groupid的主题的消费者被认为是单个组,并且消息在他们之中共享。一下为工作流程“

1)生产者以固定间隔向某个主题发送消息
2)Kafka存储在为该特定主题配置的分区中的所有消息,类似于前面的方案
3)单个消费者订阅特定主题,
4)kafka以发布-订阅消息的方式同消费者交互,知道新的消费者以相同的组id订阅相同的主题topic
5)一旦新的消费者到达,kafka将其操作切换为共享模式,并在两个消费者之间共享数据
6)一旦消费者数量超过分区数量,新消费者将不会接收到任何进一步消息,知道现有的消费者取消订阅,出现这种情况是因为kafka中的每个消费者将被分配到至少一个分区,一旦所有分区都被分配给消费者之后,新的消费者必须等待

1.2 kafka 官方介绍

是一个分布式流处理平台

1.3 基本概念

1)Producer:消息和数据的生产者,向kafka的一个topic发布消息的进程/代码/服务
2)Consumer:消息和数据的消费者,订阅数据(Topic)并且处理其发布的消息的进程/代码/服务
3)Consumer Group:一个group只有一个consumer能消费这个订阅的消息
4)Broker:kafka集群中的每个kafka节点
5)Topic:消息的类别,对数据进行区分、隔离
6)Partition:一个Topic下的数据分散存储在多个Partition上,Partition是有序的
  每个Topic被切分为多个partitions
  消费者数目少于或等于Partition的数目
  broker group中的每个brioker保存topic的一个或多个partition,同一个partition不会被多个几次保存在多个broker上
  consumergroup中的仅有一个consumer读取topic的一个或多个partitions,并且是唯一的consumer
7)Partition offset
  每个分区消息具有称为 offset 的唯一序列标识
8)Replication:一个partition可能有多个副本
  当集群中有broker挂掉的情况下,系统可以主动使用replicas提供服务
  系统默认设置每个topic的replication系数为1,可以创建topic时单独设置
  replication的剧本单位是topic的partition
  所有的读和写都是从leader进,followers只是为了做备份
  followers必须能够即使复制leader的数据
  增加容错性与可扩展性
9)Replication Leader:负责该partition与consumer的交互
10)ReplicaManager:负责管理当前的broker所有分区和副本的信息,处理kafkaController发起的一些请求,副本状态的切换、添加、读取消息等

1.4 kafka消息结构

offset|length|crc32|magic|attributes|timestamp|key length|key|value length|value

1.5 api分类

Producer Api
Consumer Api
Streams Api
Connectors Api

1.6 kafka特点

1)分布式:多分区,多副本,多订阅者,基于zookeeper调度(记录broker、topic、partition信息)
2)高性能:高吞吐量、低延迟、高并发、时间复杂度为O(1)
3)持久性与扩展性:数据可持久化、容错性、支持在线水平扩展、消息自动平衡(避免数据集中在某几台机器上导致频繁地访问某几台机器,产生一种热点的问题)
posted @ 2018-12-16 20:19  INVOKERrrrrrr~  阅读(833)  评论(0编辑  收藏  举报