iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >Kafka集群优化的方法是什么
  • 662
分享到

Kafka集群优化的方法是什么

2023-06-04 23:06:39 662人浏览 八月长安
摘要

这篇文章主要介绍了kafka集群优化的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Kafka集群优化的方法是什么文章都会有所收获,下面我们一起来看看吧。背景个推作为专业的数据智能服务商,已经成功服务

这篇文章主要介绍了kafka集群优化的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Kafka集群优化的方法是什么文章都会有所收获,下面我们一起来看看吧。

背景

个推作为专业的数据智能服务商,已经成功服务了数十万APP,每日的消息下发量达百亿级别,由此产生了海量日志数据。为了应对业务上的各种需求,我们需要采集并集中化日志进行计算,为此个推选用了高可用的、高可靠的、分布式的Flume系统以对海量日志进行采集、聚合和传输。此外,个推也不断对Flume进行迭代升级,以实现自己对日志的特定需求。

原有的异地机房日志汇聚方式,整个流程相对来说比较简单,A机房业务产生的日志通过多种方式写入该机房Kafka集群,然后B机房的Flume通过网络专线实时消费A机房Kafka的日志数据后写入本机房的Kafka集群,所有机房的数据就是通过相同方式在B机房Kakfa集群中集中化管理。如图一所示:

Kafka集群优化的方法是什么

图一:原有异地日志传输模式

但是随着业务量的不断增加,日志数据在逐渐增多的过程中对带宽要求变高,带宽的瓶颈问题日益凸显。按照1G的专线带宽成本2~3w/月来计算,一个异地机房一年仅专线带宽扩容成本就高达30w以上。对此,如何找到一种成本更加低廉且符合当前业务预期的传输方案呢?Avro有快速压缩的二进制数据形式,并能有效节约数据存储空间和网络传输带宽,从而成为优选方案。

优化思路

Avro简介

Avro是一个数据序列化系统。它是hadoop的一个子项目,也是Apache的一个独立的项目,其主要特点如下:

● 丰富的数据结构

● 可压缩、快速的二进制数据类型;

● 可持久化存储的文件类型;

● 远程过程调用(rpc);

● 提供的机制使动态语言可以方便地处理数据。

具体可参考官方网站:Http://avro.apache.org/

Flume Avro方案

Flume的RPC Source是Avro Source,它被设计为高扩展的RPC服务端,能从其他Flume Agent 的Avro Sink或者Flume SDK客户端,接收数据到Flume Agent中,具体流程如图二所示:

Kafka集群优化的方法是什么

图二:Avro Source流程

针对该模式,我们的日志传输方案计划变更为A机房部署Avro Sink用以消费该机房Kafka集群的日志数据,压缩后发送到B机房的Avro Source,然后解压写入B机房的Kafka集群,具体的传输模式如图三所示:

Kafka集群优化的方法是什么

图三:Flume Avro传输模式

可能存在的问题

我们预估可能存在的问题主要有以下三点:

● 当专线故障的时候,数据是否能保证完整性;

● 该模式下CPU和内存等硬件的消耗评估;

● 传输性能问题。

验证情况

针对以上的几个问题,我们做了几项对比实验。

环境准备情况说明:

两台服务器192.168.10.81和192.168.10.82,以及每台服务器上对应一个Kakfa集群,模拟A机房和B机房;

  两个Kafka集群中对应topicA(源端)和topicB(目标端)。在topicA中写入合计大小11G的日志数据用来模拟原始端日志数据。

  192.168.10.82上部署一个Flume,模拟原有传输方式。

 192.168.10.81服务器部署Avro Sink,192.168.10.82部署Avro Source,模拟Flume Avro传输模式。

原有Flume模式验证(非Avro)

 监控Kafka消费情况:

Kafka集群优化的方法是什么

 81流量统计:

Kafka集群优化的方法是什么

  82流量统计:

Kafka集群优化的方法是什么

消费全部消息耗时:20min

消费总日志条数统计:129,748,260

总流量:13.5G

Avro模式验证

 配置说明:

Avro Sink配置:

#kafkasink 是kafkatokafka的sinks的名字,可配多个,空格分开kafkatokafka.sources = kafka_dmc_bulletkafkatokafka.channels = channel_dmc_bulletkafkatokafka.sinks = kafkasink_dmc_bulletkafkatokafka.sources.kafka_dmc_bullet.type = org.apache.flume.source.kafka.KafkaSourcekafkatokafka.sources.kafka_dmc_bullet.channels = channel_dmc_bulletkafkatokafka.sources.kafka_dmc_bullet.ZooKeeperConnect =192.168.10.81:2181kafkatokafka.sources.kafka_dmc_bullet.topic = topicAkafkatokafka.sources.kafka_dmc_bullet.kafka.zookeeper.connection.timeout.ms =150000kafkatokafka.sources.kafka_dmc_bullet.kafka.consumer.timeout.ms =10000kafkatokafka.sources.kafka_dmc_bullet.kafka.group.id = flumeavrokafkatokafka.sources.kafka_dmc_bullet.batchSize =5000#source kafkasink_dmc_bullet的配置,可配置多个sink提高压缩传输效率kafkatokafka.sinks.kafkasink_dmc_bullet.type = org.apache.flume.sink.AvroSinkkafkatokafka.sinks.kafkasink_dmc_bullet.hostname =192.168.10.82kafkatokafka.sinks.kafkasink_dmc_bullet.port =55555//与source的rpc端口一一对应kafkatokafka.sinks.kafkasink_dmc_bullet.compression-type = deflate//压缩模式kafkatokafka.sinks.kafkasink_dmc_bullet.compression-level =6//压缩率1~9kafkatokafka.sinks.kafkasink_dmc_bullet.channel = channel_dmc_bulletkafkatokafka.sinks.kafkasink_dmc_bullet.channel = channel_dmc_bulletkafkatokafka.sinks.kafkasink_dmc_bullet.requiredAcks =1kafkatokafka.sinks.kafkasink_dmc_bullet.batchSize =5000#source kafkasink_dmc_bullet配的channel,只配一个kafkatokafka.channels.channel_dmc_bullet.type = memorykafkatokafka.channels.channel_dmc_bullet.capacity =100000#kafkatokafka.channels.channel_dmc_bullet.byteCapacity = 10000#kafkatokafka.channels.channel_dmc_bullet.byteCapacityBufferPercentage = 10kafkatokafka.channels.channel_dmc_bullet.transactionCapacity =5000kafkatokafka.channels.channel_dmc_bullet.keep-alive =60

Avro Source配置:

#kafkasink 是kafkatokafka的sinks的名字,可配多个,空格分开kafkatokafka.sources = kafka_dmc_bulletkafkatokafka.channels = channel_dmc_bulletkafkatokafka.sinks = kafkasink_dmc_bulletkafkatokafka.sources.kafka_dmc_bullet.type= avrokafkatokafka.sources.kafka_dmc_bullet.channels = channel_dmc_bulletkafkatokafka.sources.kafka_dmc_bullet.bind =0.0.0.0kafkatokafka.sources.kafka_dmc_bullet.port =55555//rpc端口绑定kafkatokafka.sources.kafka_dmc_bullet.compression-type= deflate//压缩模式kafkatokafka.sources.kafka_dmc_bullet.batchSize =100#source kafkasink_dmc_bullet的配置kafkatokafka.sinks.kafkasink_dmc_bullet.type= org.apache.flume.sink.kafka.KafkaSinkkafkatokafka.sinks.kafkasink_dmc_bullet.kafka.partitioner.class = com.gexin.rp.base.kafka.SimplePartitionerkafkatokafka.sinks.kafkasink_dmc_bullet.channel = channel_dmc_bulletkafkatokafka.sinks.kafkasink_dmc_bullet.topic = topicBkafkatokafka.sinks.kafkasink_dmc_bullet.brokerList =192.168.10.82:9091,192.168.10.82:9092,192.168.10.82:9093kafkatokafka.sinks.kafkasink_dmc_bullet.requiredAcks =1kafkatokafka.sinks.kafkasink_dmc_bullet.batchSize =500kafkatokafka.channels.channel_dmc_bullet.type= memorykafkatokafka.channels.channel_dmc_bullet.capacity =100000kafkatokafka.channels.channel_dmc_bullet.transactionCapacity =1000

监控Kafka消费情况

Kafka集群优化的方法是什么

81流量统计:

Kafka集群优化的方法是什么

82流量统计:

Kafka集群优化的方法是什么

消费全部消息耗时:26min

消费总日志条数统计:129,748,260

总流量:1.69G

故障模拟

  模拟专线故障,在A、B两机房不通的情况下,Avro Sink报错如下:

Kafka集群优化的方法是什么

监控Kafka消费情况,发现消费者已停止消费:

Kafka集群优化的方法是什么

故障处理恢复后继续消费剩余日志,经统计,总日志条数为:129,747,255。

结论

  当专线发生故障时,正在网络传输中的通道外数据可能会有少部分丢失,其丢失原因为网络原因,与Avro模式无关;故障后停止消费的数据不会有任何的丢失问题,由于网络原因丢失的数据需要评估其重要性以及是否需要补传。

  流量压缩率达80%以上,同时我们也测试了等级为1~9的压缩率,6跟9非常接近,CPU和内存的使用率与原有传输模式相差不大,带宽的优化效果比较明显。

  传输性能由于压缩的原因适当变弱,单Sink由原先20分钟延长至26分钟,可适当增加Sink的个数来提高传输速率。

生产环境实施结果

Kafka集群优化的方法是什么

实施结果如下:

  由于还有其它业务的带宽占用,总带宽使用率节省了50%以上,现阶段高峰期带宽速率不超过400Mbps;

  每个Sink传输速率的极限大概是3000条每秒,压缩传输速率问题通过增加Sink的方式解决,但会适当增加CPU和内存的损耗。

关于“Kafka集群优化的方法是什么”这篇文章的内容就介绍到这里,感谢各位的阅读!相信大家对“Kafka集群优化的方法是什么”知识都有一定的了解,大家如果还想学习更多知识,欢迎关注编程网精选频道。

--结束END--

本文标题: Kafka集群优化的方法是什么

本文链接: https://www.lsjlt.com/news/240212.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

下载Word文档到电脑,方便收藏和打印~

下载Word文档
猜你喜欢
  • Kafka集群优化的方法是什么
    这篇文章主要介绍了Kafka集群优化的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇Kafka集群优化的方法是什么文章都会有所收获,下面我们一起来看看吧。背景个推作为专业的数据智能服务商,已经成功服务...
    99+
    2023-06-04
  • CDH集群调优的方法是什么
    本文小编为大家详细介绍“CDH集群调优的方法是什么”,内容详细,步骤清晰,细节处理妥当,希望这篇“CDH集群调优的方法是什么”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。DRF和相关参数DRF: Dominant...
    99+
    2023-06-03
  • Kafka集群部署的原理是什么
    Kafka集群部署的原理是通过分布式架构来实现高可用和高吞吐量的消息传输。Kafka采用了分布式发布-订阅消息系统的模式,其中包含以...
    99+
    2023-10-24
    Kafka
  • kafka集群重启的步骤是什么
    重新启动Kafka集群通常需要以下步骤: 停止所有Kafka节点:首先需要停止所有Kafka节点,可以使用命令./bin/kaf...
    99+
    2024-03-15
    kafka
  • spring集成kafka的方法是什么
    Spring集成Kafka的方法如下: 引入依赖:在项目的pom.xml文件中添加spring-kafka依赖。 <dep...
    99+
    2023-10-20
    spring kafka
  • docker搭建kafka集群的方法实现
    目录一、原生Docker命令二、镜像选择三、集群规划四、Zookeeper集群安装五、Kafka集群安装一、原生Docker命令 1. 删除所有dangling数据卷(即无用的Vol...
    99+
    2024-04-02
  • Kafka集群在马蜂窝大数据平台的优化是怎样的
    本篇文章给大家分享的是有关Kafka集群在马蜂窝大数据平台的优化是怎样的,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。  Kafka是当下热门...
    99+
    2024-04-02
  • ubuntu集群搭建的方法是什么
    要搭建Ubuntu集群,可以按照以下步骤进行:1. 安装Ubuntu操作系统:在每个节点上安装Ubuntu操作系统。可以选择最新版本...
    99+
    2023-09-21
    ubuntu
  • tomcat集群部署的方法是什么
    Tomcat集群部署可以通过多种方法实现,以下是常见的几种方法:1.硬件负载均衡器:使用硬件负载均衡器(如F5 Big-IP、Ngi...
    99+
    2023-09-26
    tomcat
  • hadoop集群使用的方法是什么
    Hadoop集群使用的方法通常是通过Hadoop分布式文件系统(HDFS)存储和管理大规模数据,并使用MapReduce编程模型来处...
    99+
    2024-03-05
    hadoop
  • redis集群配置的方法是什么
    在Redis中配置集群需要进行以下步骤: 启动集群模式:首先需要修改Redis的配置文件,将cluster-enabled设置为...
    99+
    2024-04-02
  • mariadb集群搭建的方法是什么
    这篇文章主要介绍了mariadb集群搭建的方法是什么的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇mariadb集群搭建的方法是什么文章都会有所收获,下面我们一起来看看吧。一、Galera ClusterMar...
    99+
    2023-07-05
  • kubernetes集群搭建的方法是什么
    这篇文章主要介绍“kubernetes集群搭建的方法是什么”,在日常操作中,相信很多人在kubernetes集群搭建的方法是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”kubernetes集群搭建的方法...
    99+
    2023-06-27
  • docker集群管理的方法是什么
    Docker集群管理的方法有多种,以下是其中一些常用的方法:1. Docker Swarm:Docker Swarm是Docker官...
    99+
    2023-09-20
    docker
  • mongodb集群设置的方法是什么
    MongoDB集群设置的方法有以下几种:1. 副本集(Replica Set):副本集是一组运行在不同服务器上的MongoDB实例,...
    99+
    2023-08-23
    mongodb
  • mongodb集群搭建的方法是什么
    搭建MongoDB集群有多种方法,以下是其中一种常用的方法:1. 安装MongoDB:首先需要在每个集群节点上安装MongoDB数据...
    99+
    2023-09-06
    mongodb
  • redis集群搭建的方法是什么
    要搭建Redis集群,可以按照以下步骤进行操作:1. 准备多台服务器,每台服务器上都安装Redis。2. 在每台服务器上的Redis...
    99+
    2023-09-09
    redis
  • k8s集群部署的方法是什么
    Kubernetes(简称为k8s)集群的部署方法有多种,可以根据实际需求选择适合的部署方法。以下是一些常见的部署方法:1. 手动部...
    99+
    2023-10-24
    k8s
  • hadoop集群启动的方法是什么
    Hadoop集群可以通过以下步骤启动: 启动Hadoop集群的NameNode(主节点):在主节点上运行start-dfs.sh...
    99+
    2024-03-05
    hadoop
  • weblogic集群部署的方法是什么
    WebLogic集群部署有以下几种方法:1. 手动部署:手动在每个集群节点上安装WebLogic Server,并手动配置集群和节点...
    99+
    2023-10-12
    weblogic
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作