最近写了个kafka的接收消息的功能,需要使用回调处理收到的消息.
一个是基本的回调,一个是使用接口功能实现回调,对接口是个很好的学习.
①正常回调
kafka的接收消息处.收到消息后,使用传入的Onmessage进行处理.
调用kafka接收消息的单元,并在调用方写好回调
在调用方实现回调需要执行的方法
感觉还是使用基本回调相对简单点,接口就当学习了.
另外跨包的接口的方法要大写!定位了好久发现个入门的问题.
这10款工具如下:
AKHQ
Kowl
Kafdrop
UI for Apache Kafka
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为主
参考链接:
第一段:Kafka简述
① 为什么需要用到消息队列
异步:对比以前的串行同步方式来说,可以在同一时间做更多的事情,提高效率;
解耦:在耦合太高的场景,多个任务要对同一个数据进行操作消费的时候,会导致一个任务的处理因为另一个任务对数据的操作变得及其复杂.
缓冲:当遇到突发大流量的时候,消息队列可以先把所有消息有序保存起来,避免直接作用于系统主体,系统主题始终以一个平稳的速率去消费这些消息.
这没有绝对的好坏,看个人需求来选择,我这里就抄了一段他人总结的的优缺点,可见原文
kafka的优点:
kafka的缺点:
网上有很多搭建kafka环境教程,这里就不再搭建,就展示一下kafka的环境,在kubernetes上进行的搭建,有需要的私我,可以发yaml文件
github.com/Shopify/sarama // kafka主要的库*github.com/bsm/sarama-cluster // kafka消费组
单个消费者
消费组
同步生产者
异步生产者
同步生产打印:
消费打印:
异步生产打印:
本项目用于移动端的数据统计,项目地址: .开源的数据统计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
│ └── mongodb 基于mongodb实现的存储及计数器
└── utils
├── date.go
├── date_test.go
├── errors.go
└── key.go
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
WriteSyncer内嵌了io.Writer接口,定义了Sync方法;Sink接口内嵌了zapcore.WriteSyncer及io.Closer接口;ZapKafkaWriter实现Sink接口及zapcore.WriteSyncer接口,其Write方法直接将data通过kafka发送出去.
以上就是土嘎嘎小编为大家整理的go语言kafka相关主题介绍,如果您觉得小编更新的文章只要能对粉丝们有用,就是我们最大的鼓励和动力,不要忘记讲本站分享给您身边的朋友哦!!