Go Kafka示例代码

Go Kafka 示例代码, 使用github.com/streadway/amqp库, 包含生产和消费示例代码 ...

January 2, 2023 · 2 min

Kafka介绍以及常见问题总结

Kafka介绍 Kafka 比较重要的几个概念: Producer(生产者) : 产生消息的一方。 Consumer(消费者) : 消费消息的一方。 Broker(代理) : 可以看作是一个独立的 Kafka 实例。多个 Kafka Broker 组成一个 Kafka Cluster。每个 Broker 中又包含了 Topic 以及 Partition Topic(主题) : Producer 将消息发送到特定的主题,Consumer 通过订阅特定的 Topic(主题) 来消费消息。 Partition(分区) : Partition 属于 Topic 的一部分。一个 Topic 可以有多个 Partition ,并且同一 Topic 下的 Partition 可以分布在不同的 Broker 上,这也就表明一个 Topic 可以横跨多个 Broker Kafka 如何保证消息不丢失 生产者丢失消息的情况 生产者(Producer) 调用send方法发送消息之后,消息可能因为网络问题并没有发送过去 最佳实践 使用 producer.send(msg, callback)。带有回调通知的 send 方法可以针对发送失败的消息进行重试处理 设置 acks = all,如果设置成 all,则表明所有副本 Broker 都要接收到消息,该消息才算是“已提交” 设置 retries = 3,当出现网络的瞬时抖动时,消息发送可能会失败,此时配置了 retries > 0 的 Producer 能够自动重试消息发送,避免消息丢失 设置 retry.backoff.ms = 300,合理估算重试的时间间隔,可以避免无效的频繁重试 消费者丢失消息的情况 处理消息异常导致失败,并且提交了偏移量 最佳实践 确保消息消费完成再提交,设置成 enable.auto.commit = false,并采用手动提交位移的方式 Kafka 如何保证消息不重复消费 kafka出现消息重复消费的原因 服务端侧已经消费的数据没有成功提交 offset Kafka 侧 由于服务端处理业务时间长或者网络链接等等原因让 Kafka 认为服务假死,触发了分区 rebalance 最佳实践 消费消息服务做幂等校验 Kafka消费组 为了提升Kafka消费者服务的性能,需要为Topic多分几个分区,然后使用消费者组(Consumer Group)去消费者topic ...

December 26, 2022 · 1 min

Go Rabbitmq 示例代码

Go Rabbitmq 示例代码, 使用github.com/streadway/amqp库, 包含生产和消费示例代码 ...

December 17, 2022 · 4 min

Etcd部署以及以及应用

etcd 是一个高可用强一致性的键值仓库在很多分布式系统架构中得到了广泛的应用,其最经典的使用场景就是服务发现。etcd 中应该尽量只存储系统中服务的配置信息,对于应用数据只推荐把数据量很小,但是更新和访问频次都很高的数据存储在 etcd 中。 ...

December 11, 2022 · 2 min

Golang pprof性能分析

pprof 是 golang 官方提供的性能调优分析工具,可以对程序进行性能分析,并可视化数据,看起来相当的直观。 当你的 go 程序遇到性能瓶颈时,可以使用这个工具来进行调试并优化程序。 ...

November 27, 2022 · 1 min