美文网首页
kafka是啥?

kafka是啥?

作者: C1R2 | 来源:发表于2020-10-17 22:06 被阅读0次

    是一个实时数据处理系统,可以横向扩展、高可靠,而且还变态快,已经被很多公司使用。
    对于实时数据处理,我们最常见的,就是消息中间件了,也叫MQ(Message Queue,消息队列),也有叫Message Broker的。

    为什么需要消息中间件

    消息中间件的作用主要有两点:
    -解耦消息的生产和消费。
    -缓冲。

    Kafka一代 - 消息队列

    从上面的描述,我们可以看出,消息中间件之所以可以解耦消息的生产和消费,主要是它提供了一个存放消息的地方——生产者把消息放进来,消费者在从中取出消息进行处理。

    那么这个存放消息的地方,应该采用什么数据结构呢?

    在绝大多数情况下,我们都希望先发送进来的消息,可以先被处理(FIFO),这符合大多数的业务逻辑,少数情况下我们会给消息设置优先级。不管怎样,对于消息中间件来说,一个先进先出的队列,是非常合适的数据结构:

    Kafka二代 - Partition

    要解决Kafka一代的那两个问题,很简单——分布存储

    二代Kafka引入了Partition的概念,也就是采用多条队列, 每条队列里面的消息都是相同的topic:


    图片.png

    Kafka三代 - Broker集群

    很明显,为了解决高可用问题,我们需要集群

    Kafka对集群的支持也是非常友好的。在Kafka中,集群里的每个实例叫做Broker,就像这样:

    图片.png
    每个partition不再只有一个,而是有一个leader(红色)和多个replica(蓝色),生产者根据消息的topic和key值,确定了消息要发往哪个partition之后(假设是p1),会找到partition对应的leader(也就是broker2里的p1),然后将消息发给leader,leader负责消息的写入,并与其余的replica进行同步。

    一旦某一个partition的leader挂掉了,那么只需提拔一个replica出来,让它成为leader就ok了,系统依旧可以正常运行。

    通过Broker集群的设计,我们不仅解决了系统高可用的问题,还进一步提升了系统的吞吐量,因为replica同样可以为消费者提供数据查找的功能。

    概念:

    概念一:生产者与消费者
    对于 Kafka 来说客户端有两种基本类型:生产者(Producer)和消费者(Consumer)。
    生产者(也称为发布者)创建消息,而消费者(也称为订阅者)负责消费or读取消息。
    概念二:主题(Topic)与分区(Partition)
    在 Kafka 中,消息以主题(Topic)来分类,每一个主题都对应一个「消息队列」,这有点儿类似于数据库中的表。
    引入分区(Partition)的概念,类似“允许多修几条道”的方式对我们的主题完成了水平扩展。
    概念三:Broker 和集群(Cluster)
    一个 Kafka 服务器也称为 Broker,它接受生产者发送的消息并存入磁盘;Broker 同时服务消费者拉取分区消息的请求,返回目前已经提交的消息。使用特定的机器硬件,一个 Broker 每秒可以处理成千上万的分区和百万量级的消息。
    若干个 Broker 组成一个集群(Cluster),其中集群内某个 Broker 会成为集群控制器(Cluster Controller),它负责管理集群,包括分配分区到 Broker、监控 Broker 故障等。在集群内,一个分区由一个 Broker 负责,这个 Broker 也称为这个分区的 Leader;当然一个分区可以被复制到多个 Broker 上来实现冗余,这样当存在 Broker 故障时可以将其分区重新分配到其他 Broker 来负责。
    Kafka 的一个关键性质是日志保留(retention),我们可以配置主题的消息保留策略,譬如只保留一段时间的日志或者只保留特定大小的日志。当超过这些限制时,老的消息会被删除。我们也可以针对某个主题单独设置消息过期策略,这样对于不同应用可以实现个性化。
    概念四:多集群
    随着业务发展,我们往往需要多集群,通常处于下面几个原因:
    -基于数据的隔离;
    -基于安全的隔离;
    -多数据中心(容灾)

    参考链接https://zhuanlan.zhihu.com/p/37405836
    参考链接-https://zhuanlan.zhihu.com/p/74063251

    相关文章

      网友评论

          本文标题:kafka是啥?

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