kafka tool 查看指定group下topic的堆积数量_ELK架构下利用Kafka Group实现Logstash的高可用...
系统运维的过程中,每一个细节都值得我们关注
下图为我们的基本日志处理架构
所有日志由Rsyslog或者Filebeat收集,然后传输给Kafka,Logstash作为Consumer消费Kafka里边的数据,分别写入Elasticsearch和Hadoop,最后使用Kibana输出到web端供相关人员查看,或者是由Spark接手进入更深层次的分析。
在以上整个架构中,核心的几个组件Kafka、Elasticsearch、Hadoop天生支持高可用,唯独Logstash是不支持的,用单个Logstash去处理日志,不仅存在处理瓶颈更重要的是在整个系统中存在单点的问题,如果Logstash宕机则将会导致整个集群的不可用,后果可想而知
如何解决Logstash的单点问题呢?我们可以借助Kafka的Consumer Group来实现
Kafka Consumer Group
为了便于理解,我么先介绍一下Kafka里边几个重要的角色:
Broker:一台kafka服务器就是一个broker,一个kafka集群由多个broker组成,上图中的kafka集群有3台kafka服务器组成,也就是有3个broker,一个broker上可以有多个topic。
Topic:是个逻辑上的概念,用来区分不同的消息类别,类似于数据库中的表,可以将一组相同的数据发送给一个Topic,在日志处理中通常会将不同类型的日志写入不同的Topic,例如nginx日志写入名字为 nginx_log 的topic,tomcat日志写入名字为 tomcat_log 的topic,topic上图中没有标出,我们可以理解为图上的三个partition构成了一个topic
Partition:是kafka数据存储的基本物理单元,同一个Topic的数据可以被存储在一个或多个partition中,例如上图中的一个topic数据被存储在了partition1,partition2,partition3中,通常我们设置一个topic下partition的数量为broker的整数倍,这样一来数据能够均匀分布,二来可以同时利用集群下的所有服务器资源
Producer:生产者,向kafka写数据的服务,例如filebeat
Consumer:消费者,去kafka取数据的服务,例如logstash
Consumer Group:也是个逻辑上的概念,为一组consumer的集合,同一个topic的数据会广播给不同的group,同一个group中只有一个consumer能拿到这个数据
也就是说对于同一个topic, 每个group都可以拿到同样的所有数据,但是数据进入group后只能被其中的一个consumer消费 ,基于这一点我们只需要启动多个logstsh,并将这些logstash分配在同一个组里边就可以实现logstash的高可用了
input { kafka { bootstrap_servers => "10.8.9.2:9092,10.8.9.3:9092,10.8.9.4:9092" topics => ["ops_coffee_cn"] group_id => "groupA" codec => "json" }}
以上为logstash消费kafka集群的配置,其中加入了 group_id 参数, group_id 是一个的字符串,唯一标识一个group,具有相同 group_id 的consumer构成了一个consumer group,这样启动多个logstash进程,只需要保证 group_id 一致就能达到logstash高可用的目的,一个logstash挂掉同一Group内的logstash可以继续消费
除了高可用外同一Group内的多个Logstash可以同时消费kafka内topic的数据,从而提高logstash的处理能力,但需要注意的是消费kafka数据时,每个consumer最多只能使用一个partition,当一个Group内consumer的数量大于partition的数量时, 只有等于partition个数的consumer能同时消费 ,其他的consumer处于等待状态。
例如一个topic下有3个partition,那么在一个有5个consumer的group中只有3个consumer在同时消费topic的数据,而另外两个consumer处于等待状态,所以想要增加logstash的消费性能,可以适当的增加topic的partition数量,但kafka中partition数量过多也会导致kafka集群故障恢复时间过长,消耗更多的文件句柄与客户端内存等问题,也并不是partition配置越多越好,需要在使用中找到一个平衡
kafka partition
kafka中partition数量可以在创建topic时指定:
# bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --create --topic ops_coffee --partitions 3Created topic "ops_coffee".
--partitions:指定分区数,如果不指定默认会使用配置文件中 num.partitions 配置的数量
也可以手动修改partition的数量:
# bin/kafka-topics.sh --alter --zookeeper 127.0.0.1:2181 --partitions 5 --topic ops_coffeeAdding partitions succeeded!
注意partition的数量只能增加不能减少
如果想要知道topic的partition信息,可以通过以下命令查看topic详情:
# bin/kafka-topics.sh --zookeeper 127.0.0.1:2181 --describe --topic ops_coffeeTopic:ops_coffee PartitionCount:3 ReplicationFactor:2 Configs: Topic: ops_coffee Partition: 0 Leader: 1 Replicas: 1,2 Isr: 1,2 Topic: ops_coffee Partition: 1 Leader: 2 Replicas: 2,3 Isr: 2,3 Topic: ops_coffee Partition: 2 Leader: 3 Replicas: 3,1 Isr: 3,1
至此对kafka consumer group有了更深入的了解,可以在具体的使用中游刃有余。
end:如果你觉得本文对你有帮助的话,记得关注点赞转发,你的支持就是我更新动力。
kafka tool 查看指定group下topic的堆积数量_ELK架构下利用Kafka Group实现Logstash的高可用...相关推荐
- 唯品会、滴滴、沪江架构师,关于微服务粒度、高可用、持续交互的实践分享交流(下)...
架构师小组交流会:每期选择一个时下最热门的技术话题进行实践经验分享. 本期小组交流会邀请到了沪江黄凯.唯品会郑明华.滴滴赵伟.七牛云肖勤,对微服务粒度.高可用.持续交互展开了交流. 本期接着上期唯品会 ...
- 下一个风口-基于数据湖架构下的数据治理
前言 随着大数据.人工智能.云计算.物联网等数字化技术的普及和广泛应用,传统的数据仓库模式,在快速发展的企业面前已然显的力不从心.数据湖,是可以容纳大量的原始数据的存储库和处理系统,已经成为企业应用大 ...
- Kafka(八)----Kafka Tool 2.0.7(最新)版本超详细使用指北
Kafka Tool 2.0.7版本使用指北 本篇博客要点如下: Kafka Tool 2.0.7下载安装 Kafka Tool 2.0.7参数优化及连接Kafka集群 Kafka Tool 2.0. ...
- Kafka整体结构图、Consumer与topic关系、Kafka消息分发、Consumer的负载均衡、Kafka文件存储机制、Kafka partition segment等(来自学习资料)
##1. Kafka整体结构图 Kafka名词解释和工作方式 Producer : 消息生产者,就是向kafka broker发消息的客户端. Consumer : 消息消费者,向kafka ...
- activemq后台管理 看topic消息_17 个方面,综合对比 Kafka、RabbitMQ、RocketMQ、ActiveMQ 四个分布式消息队列...
作者:28cm不含头(来自:知乎) 原文链接: https://www.zhihu.com/question/43557507 一.资料文档 二.开发语言 三.支持的协议 四.消息存储 五.消息事务 ...
- 内网环境下手动部署kubernetes(v1.26.3)高可用集群
这篇博客主要是记录了手动部署一个高可用的Kubernetes集群的过程.旨在帮助自己及初学者学习kubernetes,并记录下具体的操作过程和总结的知识点.文中可能存在一些问题或不足之处,仅供参考. ...
- 利用Kafka和Cassandra构建实时异常检测实验
导言 异常检测是一种跨行业的方法,用于发现事件流中的异常事件 - 它适用于物联网传感器,财务欺诈检测,安全性,威胁检测,数字广告欺诈以及许多其他应用程序.此类系统检查流数据以检查异常或不规则,并在检测 ...
- 用友云微服务架构下配置文件管理利器:配置中心
微服务架构是这几年IT领域的一个高频词汇,越来越多的项目和应用正在以微服务的思想进行重构.相比于单体应用和SOA架构,微服务优势也逐渐凸显,被广大架构师和技术人员引入和推崇.当然,单体应用.SOA.微 ...
- 大促场景下云通信高可用、稳定性实战
简介:为了帮助用户更好地了解和使用云通信的产品,秒懂云通信系统课程还在继续中.12月21日的秒懂云通信,阿里云高级技术专家卢彬彬分享了<安全可靠 稳如泰山+揭秘双11背后阿里云通信黑科技> ...
最新文章
- 一致性哈希(Consistent Hashing)
- 花之吻自己查错误订单的一个小脚本
- 收藏 | 使用合成数据集做目标检测
- heidsql(mysql)安装教程和mysql修改密码
- 2:算法php/go [二分查找 ;二叉树的层序遍历 ;最长无重复子数组]
- 【学习笔记】seckill-秒杀项目--(1)搭建项目
- 免ROOT卸载手机自带软件详细教程
- 使用telnet登陆smtp服务发邮件(带身份验证)
- 吉林大学计算机学数A吗,2020考研:没有A+学科的985你还会去吗?
- 华为交换机RRPP的基本配置
- Java 方法(重载,递归)
- 使用插件Bootstrap Fileinput文件上传
- JavaScript基本语法:JS运算符
- android 系统时间改变颜色吗,安卓手机通知栏时间、日期、通知颜色修改教程
- java的各种排序算法的分析及实现
- Flutter删除缓存
- libxml库之xmlParseMemory和xmlDocDumpFormatMemory函数
- 如何提高采购效率?采购询价的标准流程
- Android集成百度地图-----显示地图、定位、长按显示地址信息
- Navicat Premium 12.1.16.0 安装与激活