kafka
讲kafka之前,我先说一下什么场景下面需要用到kafka,比如在发布与订阅系统中,发布者可以将文章发布到平台中,阅读者就只需要订阅相应的公众号,当有新的文章发布的时候,就可以阅读这篇文章了,这种发布者和订阅者之间没有直接沟通,而是通过中间站来传递消息的模式就是订阅模式啦,其实这种可能是一个必然,当一个程序向另一个程序发送消息的时候,他们会建立一条直接连接,当有很多程序的时候呢,这样可能会导致团队之间会重复工作,造成资源的浪费,当信息过多无法及时同步,会造成消息的丢失,程序之间相互依赖,耦合度太高,可能会牵一发动全身,那在这种情况下,引入发布与订阅系统就是有必要的了,kafka就是可以接受不同的生产者的消息,然后有不同的消费者来订阅这些消息供自己使用,所谓消息,可以想象成一个数据,数据库中的一行数据,生产者就是发布消息的程序,消费者就是订阅消息的程序。那消费者怎样拿到自己想要的消息呢?此时就引入了主题topic,在生产者把消息放入kafka的时候,需要把消息分好主题,消费者呢就会订阅不同的主题。除了topic,还有一个重要的概念就是分区partition,分区可以发布在不同的服务器上,这样一个主体就可以发布到不同服务器上了,生产者会把消息相应的主题的相应分区下面,那么生产者怎么知道放到那个分区,分为两种情况,一是生产者指定分区,二如果生产者没有指定分区那么消息中的键就起作用啦,分区器会根据消息中的键,指定消息的去处。那么这样子我们就知道一条消息包含了主题,分区,键,值。这样他才可以找到相应的去处。那接下来我们的消费者要怎样读取消息呢,一般消费者都会说给我partition0中的第二个,这个第二个就是偏移量了,偏移量才写入的时候就定好了,一个分区里,每个消息的偏移量是唯一的,消费者只能顺序读取。一个kafka独立的服务器也叫做broker,一个broker里面可能有不同的主题,一个主体呢也可能有多个的分区。那多个broker可能组成kafka集群
初识kafka
最新推荐文章于 2024-11-12 20:39:42 发布