美文网首页收藏
[kafka]kafka是什么

[kafka]kafka是什么

作者: AbstractCulture | 来源:发表于2021-12-22 19:48 被阅读0次

    什么是kakfa?

    先看官网是怎么描述的:

    kafka

    Apache Kafka 是一个开源分布式事件流平台,被数千家公司用于高性能数据管道、流分析、数据集成和关键任务应用程序。

    在旧的版本里面,Kafka是基于Zookeeper建立的一个分布式消息系统,但最新版,zookeeper已经被淘汰了。

    同时,Kafka最强大的优势便是高吞吐量、高性能、实时性、高可靠。

    削峰填谷

    在大型的高并发场景中,往往要对数据进行计算、分析,在一个大数据的系统中,从外部收集到的数据是很难实时响应的,这个时候需要一个系统先去承载这部分数据量,Kafka就可以充当一个消息系统的角色,并且由于这个中间层的存在,可以让应用之间的通信变的灵活,原则上是解耦的。

    分布式

    来看一个消息队列的对比表格:

    特点 ActiceMQ RabbitMQ RocketMQ Kafka
    单机吞吐量 万级 万级 10W级 10W级,吞吐量高。一般配合大数据系统进行实时数据计算、日志采集等
    topic数量对吞吐量的影响 topic可以达到几百、几千个级别,吞吐量会有小幅度的下降 topic到达几百个后吞吐会明显下降
    时效性 ms级 微妙级别,这是RabbitMQ的最大特点,延时最低 ms级 ms以内
    可用性 非常高,适合大型分布式结构 非常高,kafka是分布式的,一个数据多个副本,少数机器宕机,不会丢失数据,不会导致不可用
    消息可靠性 有较低的概率丢失 经过参数配置,可以做到0丢失 经过参数配置,可以做到0丢失
    核心特点 MQ领域的功能及其完备 基于erlang语言开发,并发强、性能好、延时低 阿里巴巴开源的MQ组件,支持分布式、高可用 功能较为简单,主要支持简单的MQ功能,在大数据领域的实时计算以及数据采集被大规模使用

    Client

    Topic

    Topic是一个虚拟的概念,由1到N个Partitions组成.
    类似于消息队列中的Queue.
    比如说我们现在需要做一个计算积分的任务,那么就可以定义一个“积分”的主题,去进行消息传递

    Producer

    消息生产者,生产者负责向主题中发生消息

    Consumer

    消息消费者,消费者负责消费主题中的消息。在Kafka中,对点对点模型引入了消费组概念,即多个消费者实例共同消费一个TOPIC中的消息。这样可以增加消息消费的速率,一个进程或者一个线程都可以是一个消费者实例。

    消费者之间可以协同消费那些失败的消息,比如A,B是一组,A无法消费,这个消息就会到达B,这个过程称为Rebalance.

    Consumer Offset

    每个消费者单独记录消息的位移,即消费后+N;

    Server

    Broker

    Kafka的服务端被称为Broker服务进程,那么多个Kafka则组成一个集群,也就是多个Broker.
    通常在生产环境中,不同的Broker部署在不同的机器中,来保证kafka集群的高可用,一旦有单节点出现故障,其他的Broker仍然可以提供服务

    Replica

    副本,kafka会把同一份数据拷贝到多个机器上,这些数据统一称为副本。在副本中,还区分LeaderFollower,顾名思义,Leader负责写入,Follower负责备份。但是这里跟普通的master和slave不同,kafka中的Follower是不提供对外服务的.

    Partition

    实际消息存储单位.分区解决了分布式系统中伸缩性的问题,如果一个Broker中的Topic接收了太多的消息,导致单台机器无法容纳了,那么就会造成故障。kafka的思想是,将topic进行分区,然后再结合副本分别保存在不同的节点上。这跟es中的分片也是异曲同工之妙。
    分区从0开始编号.

    Offset

    位移,每条消息在分区中都有属于自己的位置,这就是位移,如果往分区中写入了10条,那么这些数据的顺序是0,1,2,3....在某些场景下,可以根据位移实现顺序性.

    相关文章

      网友评论

        本文标题:[kafka]kafka是什么

        本文链接:https://www.haomeiwen.com/subject/ryqcqrtx.html