网站首页 > 文章中心 > 其它

go语言kafka

作者:小编 更新时间:2023-09-06 16:11:59 浏览量:187人看过

golang的回调和接口

最近写了个kafka的接收消息的功能,需要使用回调处理收到的消息.

一个是基本的回调,一个是使用接口功能实现回调,对接口是个很好的学习.

①正常回调

kafka的接收消息处.收到消息后,使用传入的Onmessage进行处理.

调用kafka接收消息的单元,并在调用方写好回调

go语言kafka-图1

在调用方实现回调需要执行的方法

感觉还是使用基本回调相对简单点,接口就当学习了.

另外跨包的接口的方法要大写!定位了好久发现个入门的问题.

不要再苦没有合适的kafka管理平台,给你分享10款kafka管理工具

这10款工具如下:

AKHQ

Kowl

Kafdrop

UI for Apache Kafka

go语言kafka-图2

Lenses

CMAK

Confluent CC

Conduktor

LogiKM

kafka-console-ui

如果上面这个地址可以打开,可以直接去看介绍,下文也不再重复说明.

考虑到很多同学可能打开github太慢,我下面会把相关基本信息整理一下,供大家快速了解,方便选型.

概览

AKHQ (previously known as KafkaHQ)

开发语言:后端是java为主

Kowl - A Web UI for Apache Kafka

p.s. github上完整的动图这里上传失败,就只放一个静态的截图了,如果可以打开github,建议打开下面的地址直接看吧.

但是这个并不是所有功能都是免费,有部分功能是商业版才有:

开发语言:后端是go为主

Kafdrop – Kafka Web UI

开发语言:后端以java为主

要求jdk11或更高版本

UI for Apache Kafka – Free Web UI for Apache Kafka

Lenses.io

Apache Kafka 和 Kubernetes 的实时应用程序和数据操作 #DataOps 门户.

CMAK (Cluster Manager for Apache Kafka, previously known as Kafka Manager)

这个想必很多同学都知道,原来的名字就是kafka manager.

开发语言:后端以scala为主

Confluent Inc.

Apache

官网找到一个这样的图片,凑合看吧:

滴滴开源的一站式Apache Kafka集群指标监控与运维管控平台.

也是分社区版和商业版的.

这个建议直接看github说明吧,都是中文,内容清晰,相关的资料也都有.

我也简单的了解了下,有个逻辑集群的概念,对于规模比较大的kafka集群管理还是挺好的,不过,这里比较高端的特性都是不开源的,必须商业版才能用.

kafka-console-ui(kafka可视化管理平台)

一款轻量级的kafka可视化管理平台,安装配置快捷、简单易用.界面风格有点类似rocketmq-console.

这款权当是"王婆卖瓜,自卖自夸"吧,一个小工具,如果刚接触kafka的同学或者是中小型集群,想找个简单易用的,可以考虑一下.

开发语言:后端以java和scala为主

参考链接:

Golang kafka简述和操作(sarama同步异步和消费组)

第一段:Kafka简述

① 为什么需要用到消息队列

异步:对比以前的串行同步方式来说,可以在同一时间做更多的事情,提高效率;

解耦:在耦合太高的场景,多个任务要对同一个数据进行操作消费的时候,会导致一个任务的处理因为另一个任务对数据的操作变得及其复杂.

缓冲:当遇到突发大流量的时候,消息队列可以先把所有消息有序保存起来,避免直接作用于系统主体,系统主题始终以一个平稳的速率去消费这些消息.

这没有绝对的好坏,看个人需求来选择,我这里就抄了一段他人总结的的优缺点,可见原文

kafka的优点:

kafka的缺点:

网上有很多搭建kafka环境教程,这里就不再搭建,就展示一下kafka的环境,在kubernetes上进行的搭建,有需要的私我,可以发yaml文件

github.com/Shopify/sarama // kafka主要的库*github.com/bsm/sarama-cluster // kafka消费组

单个消费者

消费组

同步生产者

异步生产者

同步生产打印:

消费打印:

异步生产打印:

开源数据统计平台 -- GoAnalytics

本项目用于移动端的数据统计,项目地址: .开源的数据统计countly做的很好,但是基础免费版的功能实在不够看,所以呢我就决定用go语言来写了这个项目,一来可以在实践中学习go语言,二来也可以开发功能完整的开源平台.该项目正在开发中,欢迎有兴趣的gopher一起参与.

数据存储方面使用的是mongodb.由于数据统计业务几乎不涉及到事务以及严格的一致性场景,而且mongodb的自动分片功能可以支撑较大的数据量.使用大数据的存储组件的话就太过于重了.所以呢选用mongodb.

后台展示基于Vue-Admin-Template开发,本人前端能力基本就是依葫芦画瓢,希望有前端大神来开发后台页面,项目地址:

下面放一点后台页面的效果图:

GoAnalytics是基于go实现的一个数据统计平台,用于统计移动端的数据指标,比如启动次数、用户增长、活跃用户、留存等指标分析.前端数据展示项目是 goanalytics-web .目前正在积极开发中,欢迎提交新的需求和pull request.

Go版本需要支持module,本地开发测试

cmd/goanalytics_kafka 和 goanalytics_rmq 是分别基于 kafka 和 rocketmq 的发布订阅功能做的数据发布

项目结构

├── README.md

├── api

│ ├── authentication 用户认证、管理API

│ ├── middlewares GIN 中间件

│ └── router API route

├── cmd

│ ├── account 生成admin账号命令

│ ├── analytic_local 不依赖消息系统的goanalytics

│ ├── goanalytics_kafka 基于kafak的goanalytics

│ ├── goanalytics_rmq 基于rocketmq的goanalytics

│ └── test_data 生成测试数据命令

├── common

│ └── data.go

├── conf 配置

│ └── conf.go

├── event

│ ├── codec 数据编解码

│ └── pubsub 消息发布订阅

├── go.mod

├── go.sum

├── metric 所有的统计指标今天这一节实现

│ ├── init.go

│ └── user 用户相关指标的实现

├── schedule

│ └── schedule.go 定时任务调度

├── storage 存储模块

│ ├── counter.go 计数器接口

│ ├── data.go

go语言kafka-图3

│ └── mongodb 基于mongodb实现的存储及计数器

└── utils

├── date.go

├── date_test.go

├── errors.go

└── key.go

filebeat采集日志到kafka配置及使用

Filebeat是elastic公司beats系列工具中的一个,主要用于收集本地日志.

在服务器上安装后,filebeat会监控日志目录或者指定的日志文件,追踪读取这些文件(追踪文件的变化,不停的读),并且转发这些信息到配置文件中指定的输出端(例如:elasticsearch,logstarsh或kafka).

Filebeat使用go语言开发,使用时没有其他依赖,比logstash-forworder轻量,不会占用部署服务器太多的资源.

filebeat的工作流程:当你开启filebeat程序的时候,它会启动一个或多个探测器(prospectors)去检测你指定的日志目录或文件,对于探测器找出的每一个日志文件,filebeat启动收割进程(harvester),每一个收割进程读取一个日志文件的新内容,并发送这些新的日志数据到处理程序(spooler),处理程序会集合这些事件,最后filebeat会发送集合的数据到你指定的地点.

由于我的预期目标是将filebeat收集的日志发送到kafka,所以配置output就选择了kafka.读者可根据自己的使用场景,配置output.

例子中的配置将对/var/log目录下所有以.log结尾的文件进行采集.

本文中只是为满足需求对filebeat进行了最基本的配置.filebeat的很多重要的配置和特性并没有体现(例如:模块,多行消息),读者如果需要更深入的了解请参考: .

欢迎大家在评论区讨论使用过程的心得和疑惑.

聊聊golang的zap的ZapKafkaWriter

本文主要研究一下golang的zap的ZapKafkaWriter

WriteSyncer内嵌了io.Writer接口,定义了Sync方法;Sink接口内嵌了zapcore.WriteSyncer及io.Closer接口;ZapKafkaWriter实现Sink接口及zapcore.WriteSyncer接口,其Write方法直接将data通过kafka发送出去.

以上就是土嘎嘎小编为大家整理的go语言kafka相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!

版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载、或以其他方式使用本站《原创》内容,违者将追究其法律责任。本站文章内容,部分图片来源于网络,如有侵权,请联系我们修改或者删除处理。

编辑推荐

热门文章