Golang Go语言中消息队列的一些折腾心得

发布于 1周前 作者 yibo5220 来自 Go语言

Golang Go语言中消息队列的一些折腾心得

最近一段时间都在整理知识体系,还没整理完备,然后就被拉着做新的消息队列的接入,原来使用 kafka,切到了 rabbitmq。切换还算顺利,同时又有同事想做日志系统的想法。我突然灵光一线,为什么不能 filebeat + 消息队列实现集中式日志管理呢?

调研

折腾 filebeats

  • Go 的 kafka 已经折腾过了,为了给自己练练手准备让 filebeats 支持 rabbitmq。
  • 找到了 https://github.com/sidleal/mqttout
  • 自己尝试使用发现新版 filebeat 的接口有些改变,而且他用的链接 rabbitmq 的底层库也比较老,唯有自己动手
  • 在原有的基础上做了改动 https://github.com/xiangdong1987/mqttout 感觉能用,用的到大家随便用。

总结

学习的过程就是想到就去实践,不懂得就去学习,最后达成目标,估计这就是一个大龄程序员还能继续码代码的动力了。继续整理知识体系去了。留下一个思路,用 kafka+filebeats 实现模调系统以及日志系统。或者听听各位大神的意见。


更多关于Golang Go语言中消息队列的一些折腾心得的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html

14 回复

filebeat kafka es kibana,我司有套这样的玩意

更多关于Golang Go语言中消息队列的一些折腾心得的实战系列教程也可以访问 https://www.itying.com/category-94-b0.html


直接上 kafka + flume

灵光一线?
这明明是成熟的方案……

楼主大大,歪个题想问问您找实习的事儿。

想请教一下 2020 毕业的软件工程想在这个秋招找份 Golang 实习需要什么技能?之前在滴滴实习过,但只是打杂。拿过一个蓝桥杯国赛二等奖,有一点薄薄的项目经验,目前已经熟悉 Golang 基本语法了,还写过一个 Golang 小工具:
https://gist.github.com/Zhang-Siyang/3ad1ffe68f4d65901d6a5367894e96d7

说个小众的 ,pulsar 了解一下

据说 Pulsar 比 Kafka 更灵活,在生产中用过没?

filebeat + elk?

#1 嗯 我是 php 栈的 java 栈玩不转 所以想 用 php 消费日志 自己做个日志或者模调之类的 哈哈

#4 建议直接投抖音 我司 不是 Go 栈

#5 我去了解下

字节想投吗,可以内推

nsq 哪

在Golang中使用消息队列,确实能极大提升系统的异步处理能力和可扩展性。以下是我对Go语言中消息队列的一些折腾心得:

  1. 选择合适的消息队列:Go语言生态中,RabbitMQ、Kafka、NATS等都是流行的选择。RabbitMQ适合简单的任务分发,Kafka则在大数据处理和流处理上表现优异,而NATS则以其轻量级和高性能著称。选择时需根据业务场景和需求权衡。

  2. 并发处理:Go的goroutine和channel机制为并发处理提供了极大便利。在消息队列的消费者中,可以充分利用这些特性来实现高效的并发处理。但需注意避免资源泄漏和竞态条件。

  3. 错误处理:消息队列中的错误处理至关重要。应设计合理的重试机制和死信队列来处理失败的消息,确保系统的健壮性。

  4. 性能调优:消息队列的性能往往直接影响整个系统的吞吐量。在使用Go语言时,可以通过调整goroutine的数量、优化数据结构、使用高效的序列化方式等手段来提升性能。

  5. 监控和告警:为了及时发现和处理消息队列中的问题,应建立完善的监控和告警体系。这包括消息队列本身的监控(如队列长度、消息延迟等)以及消费者性能的监控。

总的来说,Go语言在消息队列的应用上具有丰富的生态和强大的性能优势。通过合理的选择和使用,可以极大地提升系统的异步处理能力和可扩展性。希望这些心得能对你有所帮助。

回到顶部