前     言

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

之前,我说了,网上蛮多例子都是基于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 有关打印

打印的实现方法学习于网络,为什么打印4个文件,而只有第4个文件会被打印出来,还没研究。

第四部分  运行结果

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

文件内容

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

我代码功底若,写的又比较仓促,就不贴在此处丢脸了。

整合Kafka+Flink 实例(第二部分 设计思路)的更多相关文章

  1. 整合 KAFKA+Flink 实例(第一部分,趟坑记录)

    2017年后,一大波网络喧嚣,说流式处理如何牛叉,如何高大上,抱歉,工作满负荷,没空玩那个: 今年疫情隔离在家,无聊,开始学习 KAFKA+Flink ,目前的打算是用爬虫抓取网页数据,传递到Kafk ...

  2. WebGIS中快速整合管理多源矢量服务以及服务权限控制的一种设计思路

    文章版权由作者李晓晖和博客园共有,若转载请于明显处标明出处:http://www.cnblogs.com/naaoveGIS/ 1.背景 在真实项目中,往往GIS服务数据源被其他多个信息中心或者第三方 ...

  3. iOS开发:代码通用性以及其规范 第二篇(猜想iOS中实现TableView内部设计思路(附代码),以类似的思想实现一个通用的进度条)

    在iOS开发中,经常是要用到UITableView的,我曾经思考过这样一个问题,为什么任何种类的model放到TableView和所需的cell里面,都可以正常显示?而我自己写的很多view却只是能放 ...

  4. 笔记《Java程序性能优化 让你的Java程序更快、更稳定》 第二章 设计调优

    2.1 善用设计模式 23 (1) 1. 设计模式好处: 2.1.1 单例模式 23 (6) 1. 单例模式是一种对象创建模式,用于产生一个对象的具体实例,它可以确保系统中一个类只产生一个实例: 2. ...

  5. EventStore的设计思路

    EventStore的设计思路 最近打算用C#实现一个基于文件的EventStore. 什么是EventStore 关于什么是EventStore,如果还不清楚的朋友可以去了解下CQRS/Event ...

  6. iOS 组件化 —— 路由设计思路分析

    原文 前言 随着用户的需求越来越多,对App的用户体验也变的要求越来越高.为了更好的应对各种需求,开发人员从软件工程的角度,将App架构由原来简单的MVC变成MVVM,VIPER等复杂架构.更换适合业 ...

  7. 基于Docker一键部署大规模Hadoop集群及设计思路

    一.背景: 随着互联网的发展.互联网用户的增加,互联网中的数据也急剧膨胀.每天产生的数据量数以万计,本地文件系统和单机CPU已无法满足存储和计算要求.Hadoop分布式文件系统(HDFS)是海量数据存 ...

  8. 【4】JVM-GC设计思路分析

    Java中将内存的控制交给JVM来实现,方便了JAVA程序猿,当然牺牲了一部分效率,不过总体来看是值得的.那么JVM中是如何设计GC的呢,本文从几个问题入手,然后分析了一下设计思路,如果有理解错误的地 ...

  9. Backbone设计思路和关键源码分析

    一. Backbone的江湖地位: backbone作为一个老牌js框架为大规模前端开发提供了新的开发思路:前端MVC模式,这个模式也是前端开发演变过程中的一个重要里程碑,也为MVVM和Redux等开 ...

随机推荐

  1. 多因素线性回归|adjusted R^2|膨胀系数|非线性回归|Second-order model with 1 independent variable|Interaction model with 2 independent variables|偏相关|fraction[a]|contribution

    多因素线性回归 系数由最小二乘法得到 R^2;adjusted R^2:变量变多之后,r^2自然变大,但是这不是反应客观事实,所以引入了adjusted R^2 使用散点图看独立性,也可以使用软件,c ...

  2. 常用JS图片滚动(无缝、平滑、上下左右滚动)

    常用JS图片滚动(无缝.平滑.上下左右滚动)代码大全 <head><-----></head><body> <!--向下滚动代码开始-->& ...

  3. Ribbon XML Editor 2019.01.23-Setup.zip(支持64位)

    RibbonXMLEditor是一款用于书写和测试customUI XML代码的国产工具,具有XML验证.Office文档压入.回调函数查询等多种功能. 可作为定制Office自定义界面有关程序开发的 ...

  4. aclocal-1.13: command not found

    原因: 将编译好的工程拷贝到系统版本不一样的系统中,再进行编译会出现此类问题. 解决方法: yum install automake autoconf yum install libtool auto ...

  5. 多对多表创建、forms组件、cookie与session

    多对多表的三种创建方式 1.全自动(较为推荐) 优势:不需要你手动创建第三张表 不足:由于第三张表不是你手动创建的,所以表字段是固定的无法扩展 class Book(models.Model): ti ...

  6. IntelliJ的.iml文件及相关的Class Not Found 问题

    .iml 文件是IntelliJ IDEA 自动创建的模块文件,用于Java应用开发,存储一些模块开发相关的信息,比如一个Java组件, 插件组件,Maven组件等等, 还可能会存储一些模块路径信息, ...

  7. 吴裕雄--天生自然python学习笔记:python文档操作表格处理

    表格也是 Word 文件中常用的对象,下面讲解 Win32com 中常用的表格操作命令 . 新建表格的语法为: 在 Word 文件中新建一个表格并插入单元格内容 在 Word 文件中新建一个 3 行 ...

  8. Emgu.CV.CvInvoke的类型初始值设定项引发异常”TypeInitializationException”的问题

    问题如图: 解决方案: 1.记住EmguCV的安装位置:X:\XXX\XXX… 本测试方案中EmguCV的安装位置:D:\Emgu,操作时记得用自己的EmguCV安装路径替换掉D:\Emgu. 2.添 ...

  9. SQL语句简单应用(未完)

    简介:   SQL(structured query language)结构化查询语句,是一种数据库查询和程序设计语言,用于存取数据以及查询.更新和管理关系型数据库系统,同时也是数据库脚本文件的扩展名 ...

  10. 2015-09-15-git配置

    https://help.github.com/articles/set-up-git/ git上传是忽略一些文件 在每个git的项目中有一个.gitignore文件,将忽略的文件或文件夹输入即可. ...