DevOps研发效能
媒体矩阵
开源中国APP
授权协议 MIT
开发语言 Google Go
操作系统 跨平台
软件类型 开源软件
所属分类 大数据数据处理
开源组织
地区 国产
投 递 者 elenahu
适用人群 未知
收录时间 2020-05-11

软件简介

golang 版本的 hangout,有效缓解内存问题。

hangout 是一款仿 Logstash 的应用,用 java 实现了 Logstash 的几个常用 input/filter/output,用于提升数据处理效率。

安装

可以从源码编译, 或者是直接下载二进制可执行文件

从源码编译

使用 go module 管理依赖. 直接 make 就可

make

为避免编译后gohangout在docker容器中无法正常启动,推荐使用完整编译命令进行编译,如:

GOOS=linux GOARCH=amd64 CGO_ENABLED=0 make

下载编译后二进制文件

https://github.com/childe/gohangout/releases 直接下载

go get

go get github.com/childe/gohangout

运行

gohangout --config config.yml

日志

日志模块使用 github.com/golang/glog , 几个常用参数如下:

  • -logtostderr 日志打印出标准错误

  • -v 5 设置日志级别. 我这边一般设置到 5 , 数字越大, 日志级别越详细.

pprof debug

  • -pprof=true (默认是不开启 pprof的)

  • -pprof-address 127.0.0.1:8899 pprof 的http地址

多线程处理

默认是一个线程

--worker 4

使用四个线程(goroutine)处理数据. 每个线程拥有自己的filter, output. 比如说translate filter, 每个线程有自己的字典, 他们占用多份内存. elasticsearch output也是一样的, 如果每个 elasticsearch 设置了2并发, 那一共就是8个并发.

进一步说明一下为什么添加了这个配置:

最开始是没有这个配置的, 如果需要多线程并发处理数据, 依赖 Input 里面的配置, 比如说 Kafka 配置 topicname: 2 就是两个线程去消费(需要 Topic 有至少2个Partition, 保证每个线程可以消费到一个 Partition 里面的数据).

但是后面出现一些矛盾, 比如说, Kafka 的 Consumer 个数多的情况下, 给 Kafka 带来更大压力, 可能导致 Rebalance 更频繁等. 所以如果 Kafka 消费数据没有瓶颈的情况下, 希望控制尽量少的 Consumer, 后面多线程的处理这些数据.

开发新的插件

 
展开阅读全文

代码

的 Gitee 指数为
超过 的项目

评论

点击引领话题📣 发布并加入讨论🔥
暂无内容
发表了博客
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
发表了问答
{{o.pubDate | formatDate}}

{{formatAllHtml(o.title)}}

{{parseInt(o.replyCount) | bigNumberTransform}}
{{parseInt(o.viewCount) | bigNumberTransform}}
没有更多内容
暂无内容
暂无内容
0 评论
5 收藏
分享
OSCHINA
登录后可查看更多优质内容
返回顶部
顶部