## 背景新项目涉及大数据方面。之前接触微服务较多,趁公司没反应过来,赶紧查漏补缺。Kafka 是其中之一。Apache Kafka 是一个开源的分布式事件流平台,可跨多台计算机读取、写入、存储和处理事件,并有发布和订阅事件流的特性。本文将研究 Kafka 从生产、存储到消费消息的详细过程。 ## Producer### 消息发送所有的 Kafka 服务器节点任何时间都能响应是否可用、是否 topic 中的 partition leader,这样生产者就能发送它的...
## 一、Topic 介绍Topic(主题)类似于文件系统中的文件夹,事件就是该文件夹中的文件。Kafka 中的主题总是多生产者和多订阅者:一个主题可以有零个、一个或多个向其写入事件的生产者,以及零个、一个或多个订阅这些事件的消费者。可以根据需要随时读取主题中的事件——与传统消息传递系统不同,事件在消费后不会被删除。相反,您可以通过每个主题的配置设置来定义 Kafka 应该保留您的事件多长时间,之后旧事件将被丢弃。Kafka 的性能在...
对此本文将在接下来的内容中以 Kafka 和 RabbitMQ 为例分享消息队列选型的一些经验。消息队列即 Message+Queue,消息可以说是一个数据传输单位,它包含了创建时间、通道/主题信息、输入参数等全部数据;队列(Queue)是一种 FIFO(先进先出)的数据结构,编程语言一般都内置(内存中的)队列实现,可以作为进程间通讯(IPC)的方法。使用队列最常见的场景就是生产者/消费者模式:生产者生产消息放到队列中,消费者从队列里面获取消息消费。典型...
则副本信息只会存在某一个broker节点,Isr即其自身。这很容易出现单点故障,当当前节点挂了的时候,选举不出新的leader,导致分区不可用。在生产环境的话,可设置多个副本因子来保证高可用性(比如三个节点组成一个集群,副本数量为2,这样当任意一台节点丢失,kafka集群仍会正常工作Working...)。## 解决方案当然,把这个宕掉的节点拉起来,查看该分区的信息leader:xxxx Isr:xxxx,保障生产者线程也能正常将数据入发送到Kafka中,消费者...
对此本文将在接下来的内容中以 Kafka 和 RabbitMQ 为例分享消息队列选型的一些经验。消息队列即 Message+Queue,消息可以说是一个数据传输单位,它包含了创建时间、通道/主题信息、输入参数等全部数据;队列(Queue)是一种 FIFO(先进先出)的数据结构,编程语言一般都内置(内存中的)队列实现,可以作为进程间通讯(IPC)的方法。使用队列最常见的场景就是生产者/消费者模式:生产者生产消息放到队列中,消费者从队列里面获取消息消费。典型...
执行以下命令启动生产者,开始生产消息。 Bash bash kafka-console-producer.sh --broker-list ${默认接入点} --topic ${Topic名称} 参数 说明 默认接入点 控制台实例详情页面获取的默认接入点信息,默认接入点仅支持 VPC 访问。 Topic名称 Kafka 实例的 Topic 名称。 输入需要生产的消息内容,按回车键发送此消息到 Kafka 实例。光标下输入的每一行内容都将封装到消息中发送到 Kafka 实例。如需停止生产,可以使用 Ctrl+C ...
消息队列 Kafka版是一款基于 Apache Kafka 构建的分布式消息中间件服务,具备高吞吐、高可扩展性等特性,提供流式数据的发布/订阅和多副本存储机制,广泛应用于日志压缩收集、流式数据处理、消息解耦、流量削峰去谷等... 能力处理请求,使得下游系统可在安全水位内平滑稳定的运行,避免下游订阅系统因突发流量崩溃。 日志分析将应用与分析系统解耦,构建应用系统和日志分析系统的桥梁,将多台应用主机产生的日志信息“批量”、“异步”地发...
本文以 Go 客户端为例,介绍如何在 VPC 环境下通过默认接入点(PLAINTEXT)接入消息队列 Kafka版,并收发消息。 前提条件已完成准备工作。详细说明请参考准备工作。 1 添加配置文件创建消息队列 Kafka版配置文件 confi... // 创建一个Kafka生产者对象 producer, err := kafka.NewProducer(configMap) if err != nil { return err } // 处理消息发送的结果 go callBack(producer)() // 获取发送channel sendChann...
本文介绍通过 SASL_SSL 接入点连接 Kafka 实例,进行消息生产和消息消费的操作步骤。 背景信息消息队列 Kafka版通过 SASL_SSL 接入点提供多重安全保障的访问方式,选择该接入点连接实例时,数据需要通过 SASL_PLAIN 协... 生产消息解压 Kafka 客户端文件。 在 ./bin 目录下,打开终端。 执行以下命令启动生产者,开始生产消息。 Bash bash kafka-console-producer.sh --broker-list ${SASL_SSL接入点} --topic ${Topic名称} --prod...
Topic(消息主题)是同一种类型消息的集合,是消息队列 Kafka版中数据写入操作的基本单元。本文档介绍创建单个 Topic 的操作步骤。 背景信息在实际业务场景中,一个 Topic 常被用作承载同一种业务流量,由开发者根据自身系统设计、数据架构设计来决定如何设计不同的 Topic。每个 Topic 可以有多个生产者向它发送消息,也可以有多个消费者去消费其中的消息。分区(Patition)是 Topic 在物理上的分组,每个 Topic 可以划分为多个分区,每个分...
本文介绍通过 SASL_PLAINTEXT 接入点连接 Kafka 实例,进行消息生产和消息消费的操作步骤。 背景信息消息队列 Kafka版提供 SASL/PLAIN 协议的安全访问方式,即 SASL_PLAINTEXT 接入点。通过 SASL_PLAINTEXT 接入点连... sasl.mechanism=SCRAM-SHA-256security.protocol=SASL_PLAINTEXT 生产消息解压 Kafka 客户端文件。 在 ./bin 目录下,打开终端。 执行以下命令启动生产者,开始生产消息。 Bash bash kafka-console-produ...
则副本信息只会存在某一个broker节点,Isr即其自身。这很容易出现单点故障,当当前节点挂了的时候,选举不出新的leader,导致分区不可用。在生产环境的话,可设置多个副本因子来保证高可用性(比如三个节点组成一个集群,副本数量为2,这样当任意一台节点丢失,kafka集群仍会正常工作Working...)。## 解决方案当然,把这个宕掉的节点拉起来,查看该分区的信息leader:xxxx Isr:xxxx,保障生产者线程也能正常将数据入发送到Kafka中,消费者...
背景信息基于产品定位与产品设计,Kafka 并非计算密集型产品,Kafka 实例的业务数据量主要体现在网络带宽占用与磁盘的吞吐,日常场景下无需关注 CPU 占用率。但是在实际生产环境中,往往存在多样化的使用场景,部分业务模型中 CPU 也会成为服务端的使用瓶颈。目前对于服务端 CPU 消耗比较大的主要场景有请求速率过快、客户端消息格式低于服务端版本。 请求速率过快Kafka 在客户端的设计实现中就已经考虑到请求速率过快的问题。 对于消...