golang整合kafka

这篇具有很好参考价值的文章主要介绍了golang整合kafka。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

kafka 基本概念

  • 消息队列

1、什么是消息队列

消息(Message)是指在应用之间传送的数据,消息可以非常简单,比如只包含文本字符串,也可以更复杂,可能包含嵌入对象。
消息队列(Message Queue)是一种应用间的通信方式,消息发送后可以立即返回,有消息系统来确保信息的可靠专递,消息发布者只管把消息发布到MQ中而不管谁来取,消息使用者只管从MQ中取消息而不管谁发布的,这样发布者和使用者都不用知道对方的存在。

2、消息队列的应用场景

应用耦合:多应用间通过消息队列对同一消息进行处理,避免调用接口失败导致整个过程失败;

异步处理:多应用对消息队列中同一消息进行处理,应用间并发处理消息,相比串行处理,减少处理时间;

限流削峰:广泛应用于秒杀或抢购活动中,避免流量过大导致应用系统挂掉的情况;

消息驱动的系统:系统分为消息队列、消息生产者、消息消费者,生产者负责产生消息,消费者(可能有多个)负责对消息进行处理;

3、消息队列的两种模式

消息队列包括两种模式,点对点模式(point to point, queue)和发布/订阅模式(publish/subscribe,topic)

点对点:点对点模式下包括三个角色:消息队列、生产者、消费者

消息发送者生产消息发送到queue中,然后消息接收者从queue中取出并且消费消息。消息被消费以后,queue中不再有存储,所以消息接收者不可能消费到已经被消费的消息。

3.1、点对点模式特点:

每个消息只有一个接收者(Consumer)(即一旦被消费,消息就不再在消息队列中);

发送者和接发收者间没有依赖性,发送者发送消息之后,不管有没有接收者在运行,都不会影响到发送者下次发送消息;

接收者在成功接收消息之后需向队列应答成功,以便消息队列删除当前接收的消息;

3.2、发布订阅模式

每个消息可以有多个订阅者;

发布者和订阅者之间有时间上的依赖性。针对某个主题(Topic)的订阅者,它必须创建一个订阅者之后,才能消费发布者的消息。

为了消费消息,订阅者需要提前订阅该角色主题,并保持在线运行;

  • kafka是什么?

Kafka 是一个分布式,分区的,多副本的,多订阅者的消息发布订阅系统,由 LinkedIn 公司开发。以下是 Kafka 的一些相关知识:

1、优点

可靠性强(分布式-分区-副本)、扩展性强(可伸缩)、性能高(数据读写)、耐用性强(数据持久化)、时效性强。

2、缺点

由于是批量发送,数据并非真正的实时; 仅支持统一分区内消息有序,无法实现全局消息有序; 有可能消息重复消费; 依赖zookeeper进行元数据管理。

kafka重要概念

  • Topic:Kafka 中的消息被组织成主题(topic),生产者将消息发布到特定的主题,消费者从感兴趣的主题订阅消息。

  • Partition:每个主题(topic)可以被分成多个分区(partition),每个分区是一个有序的消息队列,生产者将消息发送到某个特定的分区,每个分区可以分布在不同的服务器上以实现负载均衡、容错等目的。

  • Broker:Kafka 集群中的每个节点称为 broker,每个 broker 可以承载多个分区(partition),每个分区(partition)可能被分配到不同的 broker 上。

  • Producer:消息的生产者,可以将消息发布到特定主题(topic)的某个分区(partition)。

  • Consumer:消息的消费者,可以从某个主题(topic)的某个分区(partition)订阅消息。

  • Consumer Group:若干个消费者可以组成一个消费者组(consumer group),共同消费某个主题(topic)的所有消息。每个分区(partition)只能由同一个 consumer group 中的一个消费者消费。

  • Offset:Kafka 中的每条消息都有一个唯一的偏移量(offset),代表该消息在分区(partition)中的位置。每个消费者都有自己的 offset 计数器,可以指定从哪个 offset 开始读取消息。

  • Replication:Kafka 支持数据备份和容错机制,每个分区(partition)可以有多个副本(replica),这些副本分布在不同的 broker 上,以保证某一个 broker 宕机时数据不会丢失。

副本

在kafka 中, 副本和正本都被称之为副本,但存在leader 和follower之分,活跃的称之为leader,其它的为follower, topic、partition、replica的关系:消息进来的时候首先存入leader replica,然后从leader replica中复制到其它的follower replica, 只有当复制全部完成的时候,consumer才可以消费此条消息,这样的措施的目的是为了意外发生的时候,数据可以恢复,consumer的消费也是从leader replica中获取的。

概念要点补充

  1. 一个partition只能被同组的一个consumer消费
  2. 同一个组里的一个consumer可以消费多个partition
  3. 消费效率最高的情况是partition和consumer 的数量相同,这样可以确保每个consumer可以专职负责一个partition
  4. consumerd的数量不能多余partition的数量,当consumer的数量大于partition时,就会有consumer闲置
  5. consumer可以认为是一个订阅者的集群,其中的每个consumer负责自己所消费的分区

参考资料

1、https://www.cnblogs.com/itlz/p/15470456.html文章来源地址https://www.toymoban.com/news/detail-575071.html

到了这里,关于golang整合kafka的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • java阻塞队列/kafka/spring整合kafka

    queue增加删除元素 增加元素 add方法在添加元素的时候,若超出了度列的长度会直接抛出异常: put方法,若向队尾添加元素的时候发现队列已经满了会发生阻塞一直等待空间,以加入元素 offer方法在添加元素时,如果发现队列已满无法添加的话,会直接返回false 删除元素 pol

    2024年02月12日
    浏览(46)
  • 什么是kafka,如何学习kafka,整合SpringBoot

    目录 一、什么是Kafka,如何学习 二、如何整合SpringBoot 三、Kafka的优势   Kafka是一种分布式的消息队列系统,它可以用于处理大量实时数据流 。学习Kafka需要掌握如何安装、配置和运行Kafka集群,以及如何使用Kafka API编写生产者和消费者代码来读写数据。此外,还需要了解Ka

    2024年02月10日
    浏览(40)
  • Flume 整合 Kafka

    先说一下,为什么要使用 Flume + Kafka? 以实时流处理项目为例,由于采集的数据量可能存在峰值和峰谷,假设是一个电商项目,那么峰值通常出现在秒杀时,这时如果直接将 Flume 聚合后的数据输入到 Storm 等分布式计算框架中,可能就会超过集群的处理能力,这时采用 

    2024年02月04日
    浏览(37)
  • SparkStreaming与Kafka整合

    1.3 SparkStreaming与Kafka整合 1.3.1 整合简述 kafka作为一个实时的分布式消息队列,实时的生产和消费消息,在实际开发中Spark Streaming经常会结合Kafka来处理实时数据。Spark Streaming 与 kafka整合需要引入spark-streaming-kafka.jar,该jar根据kafka版本有2个分支,分别是spark-streaming-kafka-0-8 和

    2024年02月03日
    浏览(35)
  • Kafka、SpringMVC整合例子

    例子源码下载: xiaqo.com 一、安装zookeeper 1.下载安装包:http://zookeeper.apache.org/releases.html#download; 2.进入Zookeeper设置目录,笔者D:kafkazookeeper-3.4.11conf; 3. 将“zoo_sample.cfg”重命名为“zoo.cfg” ; 3. 编辑zoo.cfg配置文件; 4. 找到并编辑 dataDir=/tmp/zookeeper 并更改成您当前的路径;

    2024年01月22日
    浏览(40)
  • Spring整合kafka

    只用spring-kafka依赖就行  注入KafkaTemplate模板 消息发送  监听消息消费 测试发送 spring-kafka和kafka-clients结合使用(推荐)  消费者组件 生产者组件 生产消息和消费消息  注: 这里记录一下生产发生的问题 关于max.poll.interval.ms配置的问题,根据自己的业务配置poll拉去间隔等待

    2024年02月02日
    浏览(43)
  • springboot整合kafka入门

    producer: 生产者,负责发布消息到kafka cluster(kafka集群)中。生产者可以是web前端产生的page view,或者是服务器日志,系统CPU、memory等。 consumer: 消费者,每个consumer属于一个特定的consuer group(可为每个consumer指定group name,若不指定group name则属于默认的group)。创建消费者时,

    2024年02月07日
    浏览(47)
  • Kafka 整合 SpringBoot

    1. 添加依赖 2. 配置文件 application.properties 3. 代码实现发送消息 1. 添加依赖 2. 配置文件 applicatio.properties  3. 代码实现消费消息 首先在 kafka 节点上创建 topic: 打开kafka节点服务器的终端,输入以下命令: 一些常用命令: 编写测试代码:ApplicationTests.java

    2024年02月07日
    浏览(44)
  • springboot整合kafka-笔记

    这里我的springboot版本是2.3.8.RELEASE,使用的kafka-mq的版本是2.12 测试发送kafka消息-控制台日志

    2024年02月12日
    浏览(46)
  • SpringBoot整合Kafka

    官网:Apache Kafka cmd进入到kafka安装目录: 1:cmd启动zookeeer .binwindowszookeeper-server-start.bat .configzookeeper.properties 2:cmd启动kafka server .binwindowszookeeper-server-start.bat .configzookeeper.properties 3:使用cmd窗口启动一个生产者命令: .binwindowskafka-console-producer.bat --bootstrap-server local

    2024年01月20日
    浏览(39)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包