美文网首页
kafka之关联应用系统的系统架构

kafka之关联应用系统的系统架构

作者: 每天进步一点点变成更好的自己 | 来源:发表于2022-10-05 16:53 被阅读0次

    数据从哪里来,大数据系统的框架,kafka如何连接我们的应用系统、大数据批处理系统、大数据流式处理系统,kakfa系统的设计,和传统的消息队列系统区别,以及为什么kafka要这样设计。

    kafka的假设:我们处理的互联网领域的海量日志,对于丢失一部分日志是可以容忍的,但是整体关注的是系统整体的吞吐量、可扩展性、以及错误恢复能力。

    1.大数据系统框架

    日志系统

    2.kafka的系统架构

    kafka可以看成一个日志收集器,上游的应用服务器把日志发送到kafka集群,kafka的下游,不仅能能把对应的数据存到HDFS上,还可以直接从kafka里获得数据。kafka的模型:生产者-消费者。

    • 生产者
      首先是producer,日志的生产者,即应用服务器。应用服务器生成日志,作为生产者,把日志发送到kafka系统中去。
    • Broker
      kafka的服务进程,为了容错和高可用,kafka是一个分布式的集群,每台服务器都有对应的broker的进程。kafka对所有的消息,进行两者类型的分组:业务分组和数据分区。
      业务分组:对应TOPIC,比如有广告日志、搜索日志。
      数据分区:分区可以帮助我们水平扩展系统的处理能力。同一个TOPIC的日志,平均分配到多台服务器上。
      Broker会在内存里维护一个简单的索引,即通过虚拟的偏移量,执行一个具体的segment文件。通过找到segment文件,然后去读取数据就好了。
    • 消费者
      实际去处理日志的消费者。我们去读取kafka数据,把它放到HDFS上的程序,就是一个消费者。
    image.png

    3.kakfa的单个partition的读写实现

    在实际的实现上,每一个TOPIC都会有很多个分区,分区到不同的服务器上。一个物理机,会存在很多分区。实际存储的时候,一个分区存储的是一个逻辑上的日志系统,在物理上,这些日志未见会分成大小相同的segment文件(比如1GB大小),每当有新消息从producer发过来的时候,broker就会把消息追加写入到最后那个segment文件里。

    partition是一个逻辑上的日志文件,在物理上会拆分成多个同样大小的segment文件,顺序存储日志

    4.kafka文件系统

    kafka是直接使用本地的文件系统承担了消息队列持久化的功能,即直接依赖了linux文件系统的页缓存(page cache)。


    kakfa直接通过mmap来写入数据,使得数据读写的性能很好

    相关文章

      网友评论

          本文标题:kafka之关联应用系统的系统架构

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