栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 前沿技术 > 大数据 > 大数据系统

kafka简单介绍

kafka简单介绍

原因

因为好久没有使用kafka了 所以被问kafka的时候印象就有点模糊了,但是要问kafka整体的架构,属实不知怎么回答。

kafka结构

kafka是一个典型的发布订阅模式。主题是kafkaserver,需要有producer生产消息投递,consumer消费消息。

kafka设计目标
  • 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能。

  • 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输。

  • 支持Kafka Server间的消息分区,及分布式消费,同时保证每个partition内的消息顺序传输。

  • 同时支持离线数据处理和实时数据处理。

  • 支持在线水平扩展

kafka中重要的名称概念

broker:准确来说一个kafka的进程就是一个broker,虽然生产上面都是一台机器部署一个,但是测试环境下搭建很有可能一台启动多个kafka进程。

topic:每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。

partition:topic中的数据分割为一个或多个partition。

producer:将消息发布到Kafka的topic中。

consumer:消费者可以从broker中读取数据。消费者可以消费多个topic中的数据。

consumergroup:每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)。这是kafka用来实现一个topic消息的广播(发给所有的consumer)和单播(发给任意一个consumer)的手段。一个topic可以有多个CG。topic的消息会复制-给consumer。如果需要实现广播,只要每个consumer有一个独立的CG就可以了。要实现单播只要所有的consumer在同一个CG。用CG还可以将consumer进行自由的分组而不需要多次发送消息到不同的topic。

关系

broker存储topic的数据。如果某topic有N个partition,集群有N个broker,那么每个broker存储该topic的一个partition。

如果某topic有N个partition,集群有(N+M)个broker,那么其中有N个broker存储该topic的一个partition,剩下的M个broker不存储该topic的partition数据。

如果某topic有N个partition,集群中broker数目少于N个,那么一个broker存储该topic的一个或多个partition。在实际生产环境中,尽量避免这种情况的发生,这种情况容易导致Kafka集群数据不均衡。

生产一条消息后的具体走向

1、有producer生产一条消息,指定好了topic后,根据分区选择算法把消息发送到kafka

2、kafka收到消息后,一般是consumer主动去获取消息(pull)。

生产者与分区之间的关系

生产者通过一定的路由算法去决定把消息投递到哪个分区下的,这个算法可以是默认提供的,也可以是自定义的。所以在同一个partition下是可以保证顺序性的,但是不同的partition下是不能保证顺序性的。

分区与消费者之间的关系

分区与消费者(这里的消费者属于同一个组中)有一点联系的。

分区数 > 消费者。一个消费者对应一个或者多个分区数。

分区数 = 消费者。一个消费者对应一个分区数。

分区数 < 消费者。一个消费者对应一个分区数。多的消费者处于空闲状态。

剩下的就是producer、server、consumer参数设置了。

参数个人觉得有一定的了解就行了,不一定强记

生产者参数配置:

Kafka生产者——重要参数配置 - 6。 - 博客园 (cnblogs.com)

server参数配置:

kafka 配置文件参数详解 - 小小小小小小鱼 - 博客园 (cnblogs.com)

消费者参数配置:

Kafka消费者-重要参数 - 马晟 - 博客园 (cnblogs.com)

核心技术:

顺序读写、零拷贝(sendfile、mmap)、分区存储、批量读写、批量压缩

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/329837.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号