Go 操作 Kafka 如何保证无消息丢失

背景

目前一些互联网公司会使用消息队列来做核心业务,因为是核心业务,所以对数据的最后一致性比较敏感,如果中间出现数据丢失,就会引来用户的投诉,年底绩效就变成325了。之前和几个朋友聊天,他们的公司都在用 kafka 来做消息队列,使用 kafka 到底会不会丢消息呢?如果丢消息了该怎么做好补偿措施呢?本文我们就一起来分析一下,并介绍如何使用 Go 操作 Kafka 可以不丢失数据。

本文操作 kafka 基于: github.com/Shopify/sara

初识kafka架构

维基百科对 kafka 的介绍:

Kafka是由Apache软件基金会开发的一个开源流处理平台,由Scala和Java编写。该项目的目标是为处理实时数据提供一个统一、高吞吐、低延迟的平台。其持久化层本质上是一个“按照分布式事务日志架构的大规模发布/订阅消息队列”,这使它作为企业级基础设施来处理流式数据非常有价值。此外,Kafka可以通过Kafka Connect连接到外部系统(用于数据输入/输出),并提供了Kafka Streams——一个Java]流式处理库。该设计受事务日志的影响较大。

kafka的整体架构比较简单,主要由 producer 、 broker 、 consumer 组成:


v2-e0777f5db350250bb0c40b41b2bd3fc5_b.jpg

截屏2021-09-12 上午10.00.13

针对架构图我们解释一个各个模块:

  • Producer :数据的生产者,可以将数据发布到所选择的 topic 中。
  • Consumer :数据的消费者,使用 Consumer Group 进行标识,在 topic 中的每条记录都会被分配给订阅消费组中的一个消费者实例,消费者实例可以分布在多个进程中或者多个机器上。
  • Broker:消息中间件处理节点(服务器),一个节点就是一个broker,一个Kafka集群由一个或多个broker组成。

还有些概念我们也介绍一下:

  • topic:可以理解为一个消息的集合,topic存储在broker中,一个topic可以有多个par
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值