学习
实践
活动
工具
TVP
写文章

Zzreal的大数据笔记-KafkaDay01

Kafka是什么?

Kafka是一个分布式消息系统中间件,主要在分布式环境下为各个系统提供消息传递服务。其主要优点是高吞吐、超强的消息堆积、持久化能力强、快速的消息get、put。

Kafka核心组件以及相关概念

consumer,producer,broker

Broker:Kafka集群的每一个节点称为broker,使用broker来接收Producer和Consumer的请求,并把Message持久化到本地磁盘。每个Cluster当中会选举出一个Broker来担任Controller,负责处理Partition的leader选举,协调Partition迁移等工作。

Consumer:用于从Broker中取出/消费Message。

Producer:用于往Broker中发送/产生Message。

注意:以上组件在分布式环境下均可以是多个,支持故障转移。同时ZK仅和broker和consumer相关。值得注意的是broker的设计是无状态的,消费的状态信息依靠消费者自己维护,通过一个offset偏移量。client和server之间通信采用TCP协议。

topic和partition

Topic:用于划分Message的逻辑概念,一个topic可以分布在多个broker上

Partition:是kafka中横向扩展和一切并行化的基础,每个topic都至少被切分为1个partition。Kafka中采用分区的设计有几个目的。一是可以处理更多的消息,不受单台服务器的限制。Topic拥有多个分区意味着它可以不受限的处理更多的数据。第二,分区可以作为并行处理的单元。

Offset:消息在partition中的编号,编号顺序不能跨partition。由消费者控制offset,因此分区本身所在broker是无状态的。消费者可以自由控制offset,很灵活。

同个分区内有序消费:每一个分区都是一个顺序的、不可变的消息队列, 并且可以持续的添加。分区中的消息都被分配了一个序列号,称之为偏移量(offset),在每个分区中此偏移量都是唯一的。

Replication:(Partition副本数)每个分区都有自己的镜像分区,来保证分区的高可用。其中一个称为leader。如果leader挂掉了,也会有相应的选举算法来选新的leader。Kafka支持以Partition为单位对Message进行冗余备份,每个Partition都可以配置至少1个Replication(当仅1个Replication时即仅该Partition本身)。

Leader:每个Replication集合中的Partition都会选出一个唯一的Leader,所有的读写请求都由Leader处理。其他Replicas从Leader处把数据更新同步到本地,过程类似大家熟悉的MySQL中的Binlog同步。

ISR(In-Sync Replica):是Replicas的一个子集,表示目前Alive且与Leader能够Catch-up的Replicas集合。由于读写都是首先落到Leader上,所以一般来说通过同步机制从Leader上拉取数据的Replica都会和Leader有一些延迟(包括了延迟时间和延迟条数两个维度),任意一个超过阈值都会把该Replica踢出ISR。每个Partition都有它自己独立的ISR。

消费者组--同组每个消费者消费不同分区的数据,最好是消费者数=分区数

消费者组提供两种消费TOPIC的方式:

1)只有一个消费者组:保证消费者组内负载均衡的读取消息

2)多个消费者组:每个组读取全部的消息

以上内容均为作者个人笔记,如有错误欢迎指正...

关注CSDN博客 Zonzereal,更多大数据笔记等你...

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180112G0A4QB00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码关注腾讯云开发者

领取腾讯云代金券