- 博客(31)
- 收藏
- 关注
原创 Flink Watermark
Watermark 是什么在基于 event time 的实时计算中,我们常常会碰到 乱序数据 的场景。在理想情况下,我们以为我们的数据流会是这样的:但实际上受网络波动等影响,大多数情况下是这样的:在这种乱序的场景下,数据丢失是必然的。假设我们有一个大小为 [0, 5) 的窗口(单位为秒),当上述 event time 为 5 的元素输入时,该窗口会触发计算并关闭,导致后续流入的元素(2、3、4)找不到对应窗口而丢失。为了解决这种乱序数据带来的数据丢失问题,Flink 提供了 Watermar
2021-08-24 16:17:50
269
原创 Flink Window
众所周知,Flink 是流处理计算框架,专为流式数据而生。流式数据有一个特点,即无界性。在很多场景中,这种无界性会使很多计算指标失去了意义,如结果统计、大小排序等。Window(窗口)的出现,正是为了解决无界性的问题。它可以将无界数据按照某种规则划分成有界数据,并在之上完成业务计算。本文将重点介绍 Flink 的 Window API,以帮助读者了解 Flink Window 的概念及使用方式。???? 在 Flink 1.13 版本中,常用的 Window 基本都是基于时间的 TimeWindow
2021-08-24 16:07:03
70
原创 Flink DataStream API
Flink 根据抽象程度分层,提供了三种不同的 API。每一种 API 在简洁性和表达力上有着不同的侧重,并且针对不同的应用场景。DataStream API 是 Flink 中用于编写流处理作业的 API,为许多通用的流处理操作提供了处理原语。它支持 Java 和 Scala 语言,预先定义了例如 map()、reduce()、aggregate() 等函数。在 DataStream API 中,Flink 应用程序同样包含以下步骤:获取 execution environment定义数据
2021-08-10 10:49:32
301
原创 Java 多模块持续集成(Maven 示例)
一、为什么要用 Jenkins?目前,我们在持续集成上使用的是 GitLab 自带的 gitlab-ci。它支持自动化完成代码编译、镜像构建与镜像推送,减少开发人员在项目构建上的时间开销。但是,gitlab-ci 有一个明显的缺陷:在遇到多模块项目时(如基于 SpringBoot 搭建的微服务项目),它显得有些无力。具体表现为,gitlab-ci 不支持多管道,每当项目中某个模块的代码有新的提交,gitlab-ci 都会触发全项目的自动构建,而无法仅针对产生变动的子模块进行构建。当项目规模较大时,这种构
2021-07-30 14:10:30
548
原创 Flink 快速入门
什么是 FlinkApache Flink 是一个分布式计算框架,它能够对有界和无界的数据流进行高效的处理。有界数据:即批数据(离线数据),具有已定义的起止位置,属于静态数据集无界数据:即流式数据(实时数据),无已定义的结束位置,属于动态数据集Flink 特点在官方的介绍中,Flink 具有以下优势:Deploy Applications Anywhere:Flink 集成了所有常见的集群资源管理器,例如 Hadoop YARN、Apache Mesos 和 Kubernetes,也可以
2021-07-14 13:50:24
158
1
原创 使用 log4j 输出日志到 Kafka
一、背景介绍使用 log4j 自带的 appender,我们可以将日志打印到控制台,也可以将日志打印到本地文件。更深入使用的话,我们可以将日志进行隔离,根据日志级别输出到不同的文件,或者,我们还可以根据日期对日志进行滚动存储。这些原生功能看起来都很不错,但总感觉缺了点什么。假设我们部署了具有 10 个节点的集群,使用 log4j 记录日志到节点的本地文件。某一天,运维反馈集群有异常,需要找出故障点。此时,我们只能对 10 个节点的日志文件进行逐一排查,找出其中的 ERROR 日志。这看起来十分僵硬。若
2021-04-19 17:34:39
2214
原创 Zstd 压缩性能分析
About ZstdZstd,全称 Zstandard,是 Facebook 于 2016 年开源的新无损压缩算法。与 zlib、lz4、xz 等当前流行的压缩算法不同,Zstd 寻求一种压缩性能与压缩率通吃的方案,而实际上它也确实做到了。在由官方所列出的表格中,可以看到,Zstd 不仅具备优秀的压缩性能,在压缩率上也有非常亮眼的表现。[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RXOO1Z8l-1596090419061)(https://engineering.fb
2020-07-30 14:29:14
6458
原创 基于 GitLab+SonarQube 搭建自动化代码检测平台
一、背景介绍目前,成熟的代码检测工具有很多,如 SpotBugs(前身为 FindBugs)、PMD、Checkstyle 等,我们可以在本地开发环境,非常便捷地利用这些工具实现代码的扫描与检测。这看上去好像很不错,但实际上,采用这种代码检测方式,我们面临着两个问题:代码提交前需要手动运行检测工具检测结果仅对自己可见那么,有没有什么方案可以规避这些问题呢?答案当然是有的。我们可以基于 GitLab 和 SonarQube 搭建自动化代码检测平台,并通过该平台实现以下功能:每次提交
2020-06-21 00:19:17
8360
3
原创 基于 Docker 部署 Flume 应用
前言本文目的在于通过 flume、zookeeper、kafka、docker 搭建基本的日志采集系统,实现日志的采集并将数据发送至 Kafka。搭建前,需确保已安装以下组件:JDK 8FlumeZookeeperKafkaDocker同时需确保已掌握以下技能:能在本地部署并成功启动 Flume,且了解 Flume 的核心概念 source、channel、sink能基本使用 Zookeeper,了解节点的创建、更新、查看与删除能基本使用 Kafka,了解 topic 的概念,实
2020-06-17 20:35:41
3006
原创 记一次ActiveMQ的异常排查
一、异常背景做一个小项目时,选择使用 ActiveMQ 作为中间件,负责项目内各组件的通信。刚部署时,整个项目运行正常。运行 N 天后,发现 ActiveMQ 出乎意料地自动重启,进而导致队列中未来得及消费的数据丢失。刚开始,以为是配置文件 activemq.xml 的问题,但是仔细核查后,发现没有什么明显的错误配置。然后,怀疑是否是 ActiveMQ 版本的问题,因此另选了一台测试机器进行...
2020-01-13 16:06:11
1519
1
原创 SpringBoot 多线程池实现方案
文章目录一、需求场景二、需要的核心注解三、自定义线程池配置3.1 所需依赖3.2 定义基类 AsyncConstants3.3 定义各线程池配置类PrimaryAsyncConstantsSecondaryAsyncConstants3.4 定义配置文件四、多线程池实现4.1 生成 Executor 对象4.2 声明异步方法4.3 调用示例一、需求场景通常情况,在小项目中,业务单一,单个线程池...
2019-07-26 17:52:13
4090
原创 SpringBoot 实现 MongoDB 多数据源配置
文章目录一、需求背景二、实现步骤1. 添加依赖2. 修改配置文件3. 重建数据源配置类AbstractMongoConfigurePrimaryMongoConfigureSecondaryMongoConfigure4. 创建实体类与接口UserUserRepository5. 调用示例一、需求背景MongoDB 是一个基于分布式存储的数据库,具备开源、高性能等特点,是当前 NoSQL 数...
2019-07-18 19:07:32
1091
原创 Cloudera 离线安装指南
一、版本号system:CentOS 6Cloudera Manager:5.7.0CDH:5.7.0二、环境准备MySQL 5.6Java 8python 2.6三、安装步骤1. 进行集群角色划分,指定 server 与 agent在 Cloudera Manager 中,包含两种角色,server 与 agent,两者间关系如下:server 负责管理集群内主机...
2019-07-12 13:52:38
165
原创 Clickhouse 入门教程(二)—— Java 连接示例
文章目录一、JDBC 驱动二、代码示例2.1 create table2.2 batch insert2.3 select query2.4 drop table三、解决 Connection refuse 的问题一、JDBC 驱动clickhouse 有两种 JDBC 驱动实现。官方驱动:<dependency> <groupId>ru.yandex.cl...
2019-04-25 14:30:57
30333
4
原创 Clickhouse 入门教程(一)—— 安装与启动
文章目录一、Clickhouse 简介二、Clickhouse 安装2.1 系统要求2.2 安装方式2.2.1 rpm 包下载2.2.2 rpm 包安装三、Clickhouse 启动与验证一、Clickhouse 简介Clickhouse 是一个开源的面向联机分析处理(OLAP, On-Line Analytical Processing)的列式存储数据库管理系统。Clickhouse 的优...
2019-04-10 20:29:25
19315
原创 显式关闭线程池的正确姿势
一、shutdown提到 Java 线程池的关闭,绝大多数人第一时间想到的是 ExecutorService 的 shutdown 方法。关于 shutdown 方法,注释上是这么说明的。/** * Initiates an orderly shutdown in which previously submitted * tasks are executed, but no new ta...
2019-02-13 15:42:39
545
原创 Java 移位运算符
Java 中有三种移位运算符,分别是:<<:左移运算符>>:带符号右移>>>:无符号右移那么这个移位运算符该怎么理解呢?顾名思义,移位移位,就是移动位置。那么问题来了,既然是移动位置,那么移位运算符移动的是谁的位置,怎么移?我们写个程序测试一下。public class Main { public static void main(...
2019-01-24 15:01:11
109
原创 MySQL 数据文件迁移至新硬盘
文章目录一、SSD 初始化1.1 查看 SSD 信息1.2 分区1.3 格式化1.4 挂载与自动挂载二、迁移MySQL数据文件2.1 停止服务2.2 迁移数据文件目录2.3 修改目录权限2.4 新建软链接2.5 重启服务最近项目遇到 MySQL 的效率瓶颈,尝试从配置及代码层面进行优化,但是并没有取得比较显著的效果,于是打算将MySQL迁移至固态硬盘,以解决效率瓶颈问题。在迁移前,有两个要求:...
2019-01-18 17:18:44
2978
1
原创 使用Java编码方式集成通用Mapper(非Spring项目)
文章目录前言一、添加依赖二、创建 SqlSessionFactory三、获取 SqlSession四、获取 Mapper五、使用示例附:代码清单1.mybatis-conf.xml2.MySqlSessionFactory3.MapperFactory前言在单表操作上,通用 Mapper 已经展现出了它强大的作用。在通用 Mapper 的帮助下,开发人员无需编写繁琐的 xml 文件,即可实现...
2018-12-13 15:34:08
1007
1
原创 Solr入门学习(三)—— 认识 schema
Server : Ubuntu 16.04Java Version : 1.8Solr Version : 7.4.0前言在 《Solr入门学习(一) —— Solr 的安装、启动与关闭》 一文中,有提到每个集合都需要指定一个 configSet,且这个 configSet 至少要包含两个主要的配置文件: schema 文件和 solrconfig.xml 文件。其中的 schema 文...
2018-10-22 20:34:28
413
原创 Solr入门学习(二)—— Solr 的基本查询
Server : Ubuntu 16.04Java Version : 1.8Solr Version : 7.4.0数据准备Solr 刚刚安装后,是没有任何数据的,所以此时我们无法进行任何查询。幸运的是,官方为用户提供了存储工具以及样本数据,方便新手在 Solr 中快速添加数据。首先,我们先看一下存储工具和样本数据分别位于哪个位置。存储工具:/{solr_home}/b...
2018-09-03 20:13:53
10618
1
原创 Solr入门学习(一)—— Solr 的安装、启动与关闭
Server : Ubuntu 16.04Java Version : 1.8Solr Version : 7.4.0Solr 下载与安装首先,到 http://lucene.apache.org/solr/downloads.html 获取 Solr 的下载地址,然后使用 wget 命令下载到服务器上。wget http://mirror.bit.edu.cn/apach...
2018-08-13 15:45:00
6529
原创 HttpClient 4.5 重定向到中文URL出现乱码的解决方案
一、问题描述:遇到某个 URL A,请求时发现会重定向到某个包含了中文字符的 URL B。原以为只要 HttpClient 开启了自动重定向的功能,下载 A 指向的页面轻而易举,结果却出乎意料。HttpClient 在获取重定向后的 URL B 时出现了中文乱码,导致下载失败,具体报错信息见下图:二、解决方案问题的核心在于 ConnectionConfig 对象的 Charse...
2018-07-30 19:16:17
1628
1
原创 整合Spring+SpringMVC+MyBatis详细指南
整合Spring+SpringMVC+MyBatis详细指南最近刚好写完一个ssm项目,趁着现在知识点记得还算比较清晰,赶紧写一篇小文章记录一下如何整合Spring+SpringMVC+MyBatis。需要注意的是,本教程是基于注解的方式整合ssm框架的。
2017-08-12 22:06:33
580
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人