整合Kafka+Flink 实例(第二部分 设计思路)

软件发布|下载排行|最新软件

当前位置:首页IT学院IT技术

整合Kafka+Flink 实例(第二部分 设计思路)

alex_2008   2020-03-10 我要评论

前     言

 

拖了蛮久了,一直说要接着上一部分写设计思路以及代码,因为自己技术底子薄弱,加上人又懒,所以一直没能继续,今天补上设计思路及部分代码,后面有时间我会再补充一些应用性的功能,的确有些忙,希望对大家有用;欢迎大家提意见或者拍砖;

之前,我说了,网上蛮多例子都是基于WordCount或者基于展示内存使用率来的,也没什么不对,只是我个人觉得没有太大的实用性;毕竟咱们是码农,凡事讲个应用及场景,脱离场景谈开发都是扯淡;

 

第一部分  场景和设计思路

场景:

通过爬虫从网络获取数据,不停的插入Kafka中,Flink及时获取数据,数据打印出来。时间原因,我没有继续做Flink的复杂处理,例如过滤重复、统计数据等,回头再完善,欢迎大家拍砖;

设计思路:

逻辑上,三个模块,一个是网络爬虫,提供基础数据,一个插入Kafka,一个Flink接受处理;

   

为了爬数据,我花了点时间。

爬新闻数据,没意思;没有什么加工的价值,如果要加工,还要做分词拆解,麻烦;

爬图片数据,更没意思;

后来突然想起来一个数据:股市交易数据;挺好,一个更新快,大多是数字,加工计算还是有点价值的;

话不多说,继续;

1.1 网络爬虫及基础数据

股市交易数据URL如下:

http://vip.stock.finance.sina.com.cn/quotes_service/view/cn_bill_all.php?num=100&page=1&sort=ticktime&asc=0&volume=200000&type=0

 这个网页类似如下:

 

它有几个特点:

(1)       数据条数是不停变化的;

(2)       数据可能会有重复的;

(3)       数据总条数还是有些量的,查询条件变化后,数据总条数可以变得更多;

 

具体大家自己研究吧;

如果我不停的抓取这些数据,不就不用for循环10000次了吗,不再像网上那些WordCount的例子咯。

怎么样不停的抓呢?Quartz啊,每隔几分钟抓一次啊(如果不知道Quartz,请自行补脑)

1.2 插入数据进Kafka

这个部分,有人不停的插入数据就好了,这里几乎不用做啥,甚至可以与上面的合并在一次了;

1.3 Flink处理(打印)数据

这个打印的部分,上一篇就有实现了,不赘述;

  

第二部分 开发环境和代码结构

开发环境 

 

JDK1.8+IDEA+Maven+SpringBoot

Kafka   版本:kafka_2.12-2.4.0  ; 基于Windows

Flink   版本:flink-1.9.1  基于Windows

  

 

第三部分  部分技术点

3.1 有关Quartz

(1)Quartz本身是可以并发的,最初我设计的时候,想通过浏览器发送申请,用于启动或者暂停爬虫抓取,本身技术上实现也不算大,但是我考虑的是,实际应用中,如果多个不同用户发送不同命令,有的人发送开始执行,有的人发送停止执行,而后台其实目前就规定抓一个页面,那么到底该听谁的?难道要做一个每个人启动每个人自己的任务?然后每个人抓的数据只给每个人用?想到这儿,我就暂停了这个部分的实现;

感觉不是太实用;

(2)按照设计,我只考虑一个任务进行执行,所以实际执行过程中,建议把间隔时间调的稍微长点,否则,上一个任务还没有完成,下一个任务又启动了,这样下去只会把服务器给玩宕机了;

(3)我觉得还是需要有个暂停的功能,初步觉得还是用网页参数方式,

(4)单独写一个Quartz的应用没啥意思,我觉得还是把它放到SpringBoot,随着系统一起启动,这样会比较方便;

3.2 有关爬虫

爬虫其实没有太多的技术难度,无非就是用HttpClient进行页面数据解析,唯一的小难点,就是要能够自动翻页,如果不能自动翻页,要它何用?

 

3.3 有关Flink

(1)flink的使用,我就做了打印,实现方法学习于网络,为什么打印4个文件,而只有第4个文件会被打印出来,还没研究。

(2)当我把Kafka停止供应数据时,Flink会出现Reblance的异常,所以这段代码可以考虑再优化;

 

 

第四部分  运行结果

目前,我这里仅仅是打印出来,后续我会找时间再做汇总加工的逻辑;

 

 

文件内容

 

 

注:

我代码功底若,写的又比较仓促,刚刚开始研究Kafka及Flink就不贴在此处丢脸了。

如果需要代码,评论区留下邮件地址。我晚上抽空一并发了。

 

Copyright 2022 版权所有 软件发布 访问手机版

声明:所有软件和文章来自软件开发商或者作者 如有异议 请与本站联系 联系我们