干货|Kafka在大数据环境中的应用

我们生活在一个数据爆炸的时代,数据的巨量增长给我们的业务处理带来了压力,同时巨量的数据也给我们带来了十分可观的财富。随着大数据将各个行业用户、运营商、服务商的数据整合进大数据环境,或用户取用大数据环境中海量的数据,业务平台间的消息处理将变得尤为复杂。如何高效地采集、使用数据,如何减轻各业务系统的压力,也变得越来越突出。在早期的系统实现时,业务比较简单。即便是数据量、业务量比较大,大数据环境也能做出处理。但是随着接入的系统增多,数据量、业务量增大,大数据环境、业务系统都可出现一定的瓶颈。下面我们看几个场景。

场景一:我们开发过一个设备信息挖掘平台。这个平台需要实时将采集互联网关采集到的路由节点的状态信息存入数据中心。通常一个网关一次需要上报几十甚至几百个变化的路由信息。全区有几万个这种互联网关。当信息采集平台将这些变化的数据信息写入或更新到数据库时候,会给数据库代理非常大的压力,甚至可以直接将数据库搞挂掉。这就对我们的数据采集系统提出了很高的要求。如何稳定高效地把消息更新到数据库这一要求摆了出来。

场景二:数据中心处理过的数据需要实时共享给几个不同的机构。我们常采用的方法是将数据批量存放在数据采集机,分支机构定时来采集;或是分支机构通过JDBC、RPC、http或其他机制实时从数据中心获取数据。这两种方式都存在一定的问题,前者在于实时性不足,还牵涉到数据完整性问题;后者在于,当数据量很大的时候,多个分支机构同时读取数据,会对数据中心的造成很大的压力,也造成很大的资源浪费。

为了解决以上场景提出的问题,我们需要这样一个消息系统:

缓冲能力,系统可以提供一个缓冲区,当有大量数据来临时,系统可以将数据可靠的缓冲起来,供后续模块处理;

订阅、分发能力,系统可以接收消息可靠的缓存下来,也可以将可靠缓存的数据发布给使用者。

这就要我们找一个高吞吐的、能满足订阅发布需求的系统。

Kafka是一个分布式的、高吞吐的、基于发布/订阅的消息系统。利用kafka技术可以在廉价PC Server上搭建起大规模的消息系统。Kafka具有消息持久化、高吞吐、分布式、实时、低耦合、多客户端支持、数据可靠等诸多特点,适合在线和离线的消息处理。

使用kafka解决我们上述提到的问题。

互联网关采集到变化的路由信息,通过kafka的producer将归集后的信息批量传入kafka。Kafka按照接收顺序对归集的信息进行缓存,并加入待消费队列。Kafka的consumer读取队列信息,并一定的处理策略,将获取的信息更新到数据库。完成数据到数据中心的存储。

数据中心的数据需要共享时,kafka的producer先从数据中心读取数据,然后传入kafka缓存并加入待消费队列。各分支结构作为数据消费者,启动消费动作,从kafka队列读取数据,并对获取的数据进行处理。

Kafka生产的代码如下:


  1. public void produce(){      
  2.  
  3.                    //生产消息预处理 
  4.  
  5.         produceInfoProcess();        
  6.  
  7.         pro.send(ProducerRecord,new Callback(){ 
  8.  
  9.                             @Override 
  10.  
  11.                             onCompletion() { 
  12.  
  13.                                      if (metadata == null) { 
  14.  
  15.                                                // 发送失败 
  16.  
  17.                                                failedSend(); 
  18.  
  19.                                      } else { 
  20.  
  21.                                                //发送成功!"  
  22.  
  23.                                                successedSend();      
  24.  
  25.  
  26.                             }                       
  27.  
  28.               });   
  29.  
  30.      }  

消息生产者根据需求,灵活定义produceInfoProcess()方法,对相关数据进行处理。并依据数据发布到kafka的情况,处理回调机制。在数据发送失败时,定义failedSend()方法;当数据发送成功时,定义successedSend()方法。

Kafka消费的代码如下:


  1. public void consumer() { 
  2.  
  3.                        //配置文件 
  4.  
  5.             properties(); 
  6.  
  7.             //获取当前数据的迭代器 
  8.  
  9.             iterator = stream.iterator(); 
  10.  
  11.             while (iterator.hasNext()) { 
  12.  
  13.                 //取出消息 
  14.  
  15.                 MessageAndMetadata<byte[], byte[]> next = iterator.next(); 
  16.  
  17.                 messageProcess(); 
  18.  
  19.                  }       
  20.  
  21.     }  

Kafka消费者会和kafka集群建立一个连接。从kafka读取数据,调用messageProcess()方法,对获取的数据灵活处理。

结论

Kafka的高吞吐能力、缓存机制能有效的解决高峰流量冲击问题。实践表明,在未将kafka引入系统前,当互联网关发送的数据量较大时,往往会挂起关系数据库,数据常常丢失。在引入kafka后,更新程序能够结合能力自主处理消息,不会引起数据丢失,关系型数据库的压力波动不会发生过于显著的变化,不会出现数据库挂起锁死现象。

依靠kafka的订阅分发机制,实现了一次发布,各分支依据需求自主订阅的功能。避免了各分支机构直接向数据中心请求数据,或者数据中心依次批量向分支机构传输数据以致实时性不足的情况。kafka提高了实时性,减轻了数据中心的压力,提高了效率。

本文作者:冯燕青

来源:51CTO

时间: 2024-10-15 22:37:29

干货|Kafka在大数据环境中的应用的相关文章

在云中搭建一个大数据环境需要考虑的十大因素

大数据作为 IT 领域的一个概念已经被很多人所认同.正如 IT 领域的许多方面一样,新技术最初由大型企业先使用,然后在整个使用曲线的晚期,中小型企业才开始使用它.大数据似乎也经历了相同的过程. 随着大数据在真实世界中不断发展,它逐渐被应用于不那么大的数据元素.大部分标准认为较小的数据集正通过特定于大数据架构的方式被大数据工具处理. 尽管如此,人们一致认为未来会有更多的数据,而不是更少:更多数据源会将数据发送给企业,数据流动速度将有增无减.这就是大数据未来的用武之地.关于这个领域,出现的一个问题是

【独家干货】大数据环境下的医疗产业变革

我们最近两年接触了非常多的行业,这些行业都意识到了需要在大数据环境下做一些行业变革,大家普遍感觉到,在中国的市场里有很多不一样的东西,尤其是在我们现在所说的新常态的环境之下,我们到底该做些什么样的调整,相信医疗行业大家也有同样的感触. 所以我这里首先先给大家看一下,刚刚结束的中央经济工作会议上,对于现在市场环境的判断,我们讲大数据.可穿戴,所有的这些东西,都必须是在这样的经济新常态下考虑这些问题. 这次中央经济工作会议上的很多观点,很多话语,我们感觉是非常接地气的,和我们的日常生活结合非常紧密的

大数据环境下的地税预算执行审计

看起来纷繁复杂的海量数据资料,通过分析,可以发现很多有用的信息,可以告诉我们很多隐藏在数字背后的秘密,并有效提高决策的准确性.淘宝根据购物记录可以推荐买家可能会喜欢的商品,餐厅根据用餐记录可以推荐消费者可能喜欢的菜单.大数据审计分析可以通过对相关领域长年累月形成的数据的分析,挖掘出某种群体行为的特点,提示某种社会现象的潜在规律,为政府制定政策提供关键依据,同时还可以评估政府政策的实施效果,从而帮助政府不断发现问题,改进问题.下面笔者结合自己从事的地税审计业务浅谈在大数据审计分析中的心得体会,以达

DIY Hadoop大数据环境的5大陷阱

文章讲的是DIY Hadoop大数据环境的5大陷阱,虽然Hadoop可以运行在廉价的商品计算机硬件,且用户很容易添加节点,但是它有一些细节是很昂贵的,尤其是你在生产环境中运行Hadoop. 甲骨文公司大数据产品经理Jean-Pierre Dijck称:"IT部门认为'我已经有服务器,我还可以买到便宜的服务器,我也有人员,所以我们不用花多少钱就可以构建自己的Hadoop集群',这当然是一件好事,但是IT部门在部署时会发现这里会有很多他们没有预料到的额外开销." Dijcks列举了IT领导

XFS:大数据环境下Linux文件系统的未来

本文讲的是XFS:大数据环境下Linux文件系统的未来,Linux有好多种件系统,但往往最受关注的是其中两种:ext4和btrfs.XFS开发者Dave Chinner近日声称,他认为更多的用户应当考虑XFS.他谈到了为了解决XFS中最严重的可扩展性问题所做的工作,还谈到了他认为将来的发展走向.如果他说的一点都没错,接下来几年我们在XFS方面有望看到更多的动静. XFS经常被认为是适合拥有海量数据的用户的文件系统.Dave表示,XFS非常适合扮演这个角色;它对许多工作负载而言向来表现不俗.以前往

Spark架构在大数据环境的核心位置找到用武之地

Webtrends公司的IT团队在Apache Spark这款处理引擎还是一项学术研究项目的时候就已经开始使用它并沿用至今.但当Webtrends在2014年年中部署了一套基于Hadoop的大数据环境来对分析应用程序进行增强的时候,Spark架构便成了一个有限的角色:有关数据索引的聚合细节有助于用户发现相关信息.现在,一切都已改变,而且该公司正在花大力气学习Spark并作为其大数据平台升级版本的一部分. Webtrends从网站,移动设备和物联网收集用户活动数据提供给企业客户用于分析,它将Spa

大数据环境下的意图搜索技术!

尽管大数据已呈爆炸式增长,以致带动不少相关技术的衍生与发展.但是,不少人还是对大数据技术的作用感到云里雾里.今天,就跟随 大圣众包威客平台 一起看看大数据的其中一项重要技术--意图搜索技术. 一.大数据环境下的意图搜索技术的利弊 我们都知道,在大数据时代,任何在网络行为中留下的"蛛丝马迹"都以数据的形式被隐藏在大数据中,并通过应用物联网.大数据.人工智能等技术,构建成网络空间中的行为事件.思想事件等模型. 显然地,这种模式最大的风险是,它将面临信息安全问题.因为,在实体空间和虚拟空间中

大数据环境下金数据们的轻态数据服务还有机会

大数据是近几年IT业界中非常火热的一个词汇,由于当前主流的一些软件工具并不能满足人们对于巨量数据的挖掘.收集.整理.分析的需求的缘故,国内外都出现了不少根据这个痛点而进行突破的大数据服务企业. 当IT数据领域主流的发展目标都致力在大数据服务上的时候,那些针对中小团队甚至个人的数据服务是否又还是拥有较大的市场继续挖掘呢? 国庆放假期间,偶然间在微信朋友圈中打开了一位微信好友分享过来的问卷调查链接.问卷调查的内容没有太多复杂的选项,很多需要你选择的地方都是一个相对比较广泛领域中少数的几个选择.虽然我

大数据环境下的网络安全挑战分析

文章讲的是大数据环境下的网络安全挑战分析, 大数据架构和平台算是新事物,而且还在以一种非凡的速度不断发展着.商业和开源的开发团队几乎每月都在发布其平台的新功能.当今的大数据集群将会与将来我们看到的数据集群有极大不同.适应这种新困难的安全工具也将发生变化.在采用大数据的生命周期中,业界仍处于早期阶段,但公司越早开始应对大数据的安全问题,任务就越容易.如果安全成为大数据集群发展过程中的一种重要需求,集群就不容易被黑客破坏.此外,公司也能够避免把不成熟的安全功能放在关键的生产环境中. “大数据”一词常