zoukankan      html  css  js  c++  java
  • 整合Kafka+Flink 实例(第二部分 设计思路)

    前     言

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

    之前,我说了,网上蛮多例子都是基于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就不贴在此处丢脸了。

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

  • 相关阅读:
    分层图最短路(DP思想) BZOJ2662 [BeiJing wc2012]冻结
    动态规划 BZOJ1925 地精部落
    线性DP SPOJ Mobile Service
    线性DP codevs2185 最长公共上升子序列
    数位DP POJ3208 Apocalypse Someday
    线性DP POJ3666 Making the Grade
    杨氏矩阵 线性DP? POJ2279 Mr.Young's Picture Permutations
    tarjan强连通分量 洛谷P1262 间谍网络
    树链剖分 BZOJ3589 动态树
    二分图 BZOJ4554 [Tjoi2016&Heoi2016]游戏
  • 原文地址:https://www.cnblogs.com/alexgl2008/p/12452587.html
Copyright © 2011-2022 走看看