【技术er圣诞创意大赏】基于Flink的实时数据平台

news2025/1/14 18:39:43

一、前言

迪拜是否过圣诞节日,迪拜信基督教的人过圣诞,其他一般不过。

圣诞节(Christmas)又称耶诞节、耶稣诞辰,译名为“基督弥撒”,是西方传统节日,起源于基督教,在每年公历12月25日。弥撒是教会的一种礼拜仪式。圣诞节是一个宗教节,因为把它当作耶稣的诞辰来庆祝,故名“耶诞节”。

大部分的天主教教堂都会先在12月24日的平安夜,亦即12月25日凌晨举行子夜弥撒,而一些基督教会则会举行报佳音,然后在12月25日庆祝圣诞节;基督教的另一大分支——东正教的圣诞节庆则在每年的1月7日。

圣诞节也是西方世界以及其他很多地区的公共假日,例如:在亚洲的中国香港和澳门地区、马来西亚、新加坡。古罗马教会在君士坦丁时代(公元年),就逐渐习惯在十二月二十五日庆祝主的诞生。

在这里插入图片描述

二、创意名

基于Flink的数据实时展示平台

三、效果展示

> 提示:可展示本篇文章要实现的圣诞节相关技术创意最终效果。

四、实现步骤

Spark的技术理念是使用微批来模拟流的计算,基于Micro-batch,数据流以时间为单位被切分为一个个批次,通过分布式数据集RDD进行批量处理,是一种伪实时。

而Flink是基于事件驱动的,它是一个面向流的处理框架,Flink基于每个事件一行一行地流式处理,是真正的流式计算.另外他也可以基于流来模拟批进行计算实现批处理,所以他在技术上具有更好的扩展性,未来可能会成为一个统一的大数据处理引擎。

因为他们技术理念的不同,也就导致了性能相关的指标的差别,spark是基于微批的,而且流水线优化做的很好,所以说他的吞入量是最大的,但是付出了延迟的代价,它的延迟是秒级;而Flink是基于事件的,消息逐条处理,而且他的容错机制很轻量级,所以他能在兼顾高吞吐量的同时又有很低的延迟,它的延迟能够达到毫秒级;

SparkStreaming只支持处理时间,折中地使用processingtime来近似地实现eventtime相关的业务。显然,使用processingtime模拟eventtime必然会产生一些误差,特别是在产生数据堆积的时候,误差则更明显,甚至导致计算结果不可用。

Structuredstreaming支持处理时间和事件时间,同时支持watermark机制处理滞后数据
Flink支持三种时间机制:事件时间,注入时间,处理时间,同时支持watermark机制处理迟到的数据,说明Flink在处理乱序大实时数据的时候,优势比较大。

其实和Kafka结合的区别还是跟他们的设计理念有关,SparkStreaming是基于微批处理的,所以他采用DirectDstream的方式根据计算出的每个partition要取数据的Offset范围,拉取一批数据形成Rdd进行批量处理,而且该Rdd和kafka的分区是一一对应的;

Flink是真正的流处理,他是基于事件触发机制进行处理,在KafkaConsumer拉取一批数据以后,Flink将其经过处理之后变成,逐个Record发送的事件触发式的流处理。另外,Flink支持动态发现新增topic或者新增partition,而SparkStreaming和0.8版本的kafka结合是不支持的,后来跟0.10版本的kafka结合的时候,支持了,看了源码;

五、编码实现

server:
  port: 8080
#  port: ${server.port}
spring:
  #数据源
  datasource:
    username: root
    password: 123456
    url: jdbc:mysql://192.168.1.100:3306/datax_web?serverTimezone=Asia/Shanghai&useLegacyDatetimeCode=false&useSSL=false&nullNamePatternMatchesAll=true&useUnicode=true&characterEncoding=UTF-8
#    password: ${DB_PASSWORD:password}
#    username: ${DB_USERNAME:username}
#    url: jdbc:mysql://${DB_HOST:127.0.0.1}:${DB_PORT:3306}/${DB_DATABASE:dataxweb}?serverTimezone=Asia/Shanghai&useLegacyDatetimeCode=false&useSSL=false&nullNamePatternMatchesAll=true&useUnicode=true&characterEncoding=UTF-8
    driver-class-name: com.mysql.jdbc.Driver


    hikari:
      ## 最小空闲连接数量
      minimum-idle: 5
      ## 空闲连接存活最大时间,默认600000(10分钟)
      idle-timeout: 180000
      ## 连接池最大连接数,默认是10
      maximum-pool-size: 10
      ## 数据库连接超时时间,默认30秒,即30000
      connection-timeout: 30000
      connection-test-query: SELECT 1
      ##此属性控制池中连接的最长生命周期,值0表示无限生命周期,默认1800000即30分钟
      max-lifetime: 1800000

  # datax-web email
  mail:
    host: smtp.qq.com
    port: 25
    username: gree2@qq.com
    password: xxxxxxxx
#    username: ${mail.username}
#    password: ${mail.password}
    properties:
      mail:
        smtp:
          auth: true
          starttls:
            enable: true
            required: true
        socketFactory:
          class: javax.net.ssl.SSLSocketFactory


management:
  health:
    mail:
      enabled: false
  server:
    servlet:
      context-path: /actuator

mybatis-plus:
  # mapper.xml文件扫描
  mapper-locations: classpath*:/mybatis-mapper/*Mapper.xml
  # 实体扫描,多个package用逗号或者分号分隔
  #typeAliasesPackage: com.yibo.essyncclient.*.entity
  global-config:
    # 数据库相关配置
    db-config:
      # 主键类型  AUTO:"数据库ID自增", INPUT:"用户输入ID", ID_WORKER:"全局唯一ID (数字类型唯一ID)", UUID:"全局唯一ID UUID";
      id-type: AUTO
      # 字段策略 IGNORED:"忽略判断",NOT_NULL:"非 NULL 判断"),NOT_EMPTY:"非空判断"
      field-strategy: NOT_NULL
      # 驼峰下划线转换
      column-underline: true
      # 逻辑删除
      logic-delete-value: 0
      logic-not-delete-value: 1
      # 数据库类型
      db-type: mysql
    banner: false
  # mybatis原生配置
  configuration:
    map-underscore-to-camel-case: true
    cache-enabled: false
    call-setters-on-nulls: true
    jdbc-type-for-null: 'null'
    type-handlers-package: com.wugui.datax.admin.core.handler

# 配置mybatis-plus打印sql日志
logging:
  level:
    com.wugui.datax.admin.mapper: info
    path: ./data/applogs/admin
#  level:
#    com.wugui.datax.admin.mapper: error
#    path: ${data.path}/applogs/admin



#datax-job, access token
datax:
  job:
    accessToken:
    #i18n (default empty as chinese, "en" as english)
    i18n:
    ## triggerpool max size
    triggerpool:
      fast:
        max: 200
      slow:
        max: 100
      ### log retention days
    logretentiondays: 30

datasource:
  aes:
    key: AD42F6697B035B75

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/110131.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

MySQL字段长度修改 锁表情况分析

前言 最近发现有一个780w左右的表的某个字段长度设置不合理,导致数据无法插入 , 于是计划修改长度。 担心会锁表阻塞业务所以选择晚上执行修改, 结果在晚上发现这个修改是秒生效, 并没有阻塞数据库,于是分析下原因。 …

全国数据治理认证DAMA-CDGA/CDGP(线上班)招生简章

DAMA认证为数据管理专业人士提供职业目标晋升规划,彰显了职业发展里程碑及发展阶梯定义,帮助数据管理从业人士获得企业数字化转型战略下的必备职业能力,促进开展工作实践应用及实际问题解决,形成企业所需的新数字经济下的核心职业…

爆款短视频速成技巧之视频发布篇,短视频介绍文案怎么写(下)

前面几篇我们讨论了短视频定位,怎么写文案脚本,怎么拍摄以及后期剪辑,至此我们一个优质的短视频已经制作完成,今天我们就聊一下下一个环节:短视频的发布 剪辑好的优质短视频怎么发布才能成为爆款视频?短视…

vue实现修改title提示框-默认样式【两种方式】

博主介绍 📢点击下列内容可跳转对应的界面,查看更多精彩内容! 🍎主页:水香木鱼 🍍专栏:后台管理系统 文章目录 简介:这是一篇有关【vue实现修改title提示框-默认样式【两种方式】】…

RV1126笔记六:人脸识别方案<四>

若该文为原创文章,转载请注明原文出处。 一、介绍 人脸识别方案设计逻辑流程图,方案代码分为分为三个业务流程,主体代码负责抓取、合成图像,算法代码负责人脸识别功能。通过摄像头实时采集数据,识别人脸,并提取人脸特征,把特征值和数据库对比后,把名字合合到图像上,…

Spring Boot全局异常处理器(原理及使用详解)

目录 1 什么是全局异常处理器 2 为什么需要全局异常 3 原理和目标 4 ControllerAdvice注解 4.1 Advice(通知) 4.2 ControllerAdvice结合方法型注解ExceptionHandler,用于捕获Controller中抛出的指定类型的异常,从而达到全局不同类型的异…

【Unity】使用 System.Windows.Forms 的问题

因为最近开发需要用到使用 Windows 自带的窗口打开、文件选择等功能,然后兜兜转转需要使用 System.Windows.Forms 这个库。这个库在 WinForm 里是很常见的,但是要在 Unity 里使用,并打包出来还是有些坑的。 我这里使用的 Unity 版本&#xf…

MATLAB算法实战应用案例精讲-【连接分析】PageRank

前言 拉里佩奇 Larry Page和谢尔盖布林 Sergey Brin于1996年在斯坦福大学开发了PageRank算法,此后于1998年基于该算法,共同创立了Google公司。PageRank这个名字一语双关,既源于其算法创始人Larry Page,也源于网页 Web Page。 PageRank算法将网页按重要性进行排序。有了这…

搭建nacos

一、nacos的介绍 开启nacos的作用: 在项目开发过程中我们可以把服务提供者的网络地址(IP,端口号)等编码到代码中, 这种做法存在许多问题: 一旦服务提供者地址变化,就需要手工修改代码一旦是…

Wireshark TS | Packet Challenge 之 DNS 案例分析

前言 来自于 Sharkfest Packet Challenge 中的一个数据包案例,Sharkfest 是 Wireshark 官方组织的一年一度的大会,致力于在 Wireshark 开发人员和用户社区之间分享知识、经验和最佳实践。印象中早期是一年一次,近几年发展成一年两次&#xf…

艾美捷超氧化物歧化酶检测试剂盒参数说明

超氧化物歧化酶是催化超氧化物离子O2-的歧化反应2O2-+2H →O2+H2O2的酶.EC1.15.1.1.是金属酶,已知在金属酶中有真核生物细胞质的深绿色Cu-Zn酶(分子量约3万)、线粒体、细菌红紫色的M…

Debian系列-在新的GNOME下无法启动Qt

Debian系列-在新的GNOME下无法启动Qt 文章目录Debian系列-在新的GNOME下无法启动Qt摘要启动Qt 报错 No protocol specified解决方法1 打开一个新的终端2 echo $DISPLAY3 export DISPLAY更新一下关键字: Debian、 Qt、 xcb、 No protocol specified、 关键字5摘要 …

转行做程序员,哪种编程语言既高薪又适合你?

“你为什么学习这门编程语言”?大多人当初面对选择这个问题的时候,都只是单纯的“听朋友说”或是百度看到了表面,或者是一拍脑门决定的。其实并不了解这个编程语言的特性和市场现状以及这个语言是否适合自己。 这类的情况还是算是好的&#x…

并发编程学习(四):wait()、nitify()

1、wait、notify原理 Owner 线程发现条件不满足,调用wait()方法,即可进入WaitSet,变为WAITING 状态。BLOCKED和WAITING的线程都处于阻塞状态,不占用CPU时间片。BLOCKED线程会在Owner线程释放锁时唤醒。WAITING线程会在Owner线程调…

【数据库】简答题知识点

数据库系统的结构 数据库系统的逻辑结构可以分为用户级、概念级和物理级三个层次。每个层次的数据库都有自身对数据进行逻辑描述的模式,分另称为外模式、概念模式和内模式。 外模式:是与和具体的应用或者项目有关的逻辑表示,用户可以操作的…

【Proteus仿真】【51单片机】自动浇花灌溉系统设计

文章目录一、功能简介二、软件设计三、实验现象联系作者一、功能简介 本项目使用Proteus8仿真51单片机控制器,使用LCD1602液晶、按键、DS18B20、PCF8591 ADC、土壤湿度传感器、水位传感器、蜂鸣器模块等。 系统运行后,LCD1602显示传感器检测的温度、湿…

【Linux操作系统】多线程(一)

文章目录1. 线程概念2. 线程控制2.1 创建线程2.2 线程ID2.3 线程等待2.4 线程终止2.5 线程分离3. 线程同互斥与同步3.1 互斥量3.2 死锁3.3 同步-条件变量3.4 生产者消费者模型3.5 POSIX信号量3.6 基于环形队列的生产消费者模型1. 线程概念 线程:是在进程内部运行的…

解决资源消耗,top的运用记录

第一条命令uptime load average 后面的三个数字,分别代表1分钟、5分钟和15分钟内机器的平均负载 使用top命令解决负载问题 Cpu(s)这一行提供了CPU运行情况信息 这些缩写分别代表了不同含义 (1)us:用户CPU时间 运行非优雅的用户进程所占CPU时间的百…

离线下载NLTK依赖包([WinError 10061] 由于目标计算机积极拒绝,无法连接)的解决方案

大家好,我是爱编程的喵喵。双985硕士毕业,现担任全栈工程师一职,热衷于将数据思维应用到工作与生活中。从事机器学习以及相关的前后端开发工作。曾在阿里云、科大讯飞、CCF等比赛获得多次Top名次。喜欢通过博客创作的方式对所学的知识进行总结与归纳,不仅形成深入且独到的理…

房产管理系统CAD图形管理应用有哪些?

数图互通房产管理 数图互通房产管理系统建设涵盖学校所有房屋资源管理业务以及CAD图纸的管理,对不同类型的房屋实现相应的业务子系统,实现完善、高效、可溯的房屋资源业务管理,保证数据的完整性、一致性和精确性,及业务的。 通过…