自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

IT大狮兄的博客

热爱学习,挚爱分享,乐于助人的大狮兄

  • 博客(12)
  • 收藏
  • 关注

原创 SPI机制原理及实战

不知道大家在工作中有没有遇见这种类似的场景,一个复杂的业务需求有多种不同的实现场景,每种实现场景由不同的业务方来决定。举一个简单的例子:分布式场景下,需要一个共享的存储系统来实现资源的分布式共享,共享的存储系统我们可以选择Hadoop/S3/阿里的OSS/腾讯的COS等等。对于toB的公司,为了兼容更多的客户,不得不去兼容各种各样类似于共享文件系统这样的技术。这时候如果我们可以做出一个可插拔、可扩展的产品,就可以面对技术更新迭代快的问题。SPI提供了一个很好的模式,值得我们去学习。

2023-03-21 09:56:14 2052 1

原创 SLF4J进阶使用--MDC

作为后端开发,相信大家每天都会时不时的和日志打交道,日志不仅是我们排查bug的重要手段,同时也可以作为监控、分析场景下的重要依据。SLF4J作为当下日志框架标准,相信大家都已经很熟悉了。如果大家搞不清楚slf4j、log4j2、logpack的关系,可以看我的这一篇文章:不知道大家在工作中有没有遇到下面的场景:多线程的任务调度中,我同时跑了多个任务让线程池去执行,但其中一个任务失败了,我想针对性的查看这个任务的日志来排查问题,也就是日志链路追踪问题。

2023-03-20 07:00:00 2760

原创 log4j2、logback、slf4j傻傻分不清楚

log4j2、logback、slf4j都是和日志相关的。在我们实际的工作中,毋庸置疑的是我们都会涉及到。但是大家有没有想过它们之间的关系呢?

2023-03-17 10:10:53 2885

原创 相对冷门却很高效的idea配置

Intellij Idea作为当下最为流行的后端程序开发编辑器,深受广大程序员喜爱。因为它不仅可扩展的插件很多,而且内置的一些功能十分强大,善用这些功能可以让你的工作如鱼得水,如虎添翼,最重要的是远离996。以上Idea配置相比较其他一些常用的配置虽然冷门,但是绝对对你的工作效率有很好的帮助。如果你还没有配置,赶紧体验使用吧。

2023-03-15 22:16:34 519

原创 Lombok--知其然知其所以然

作为一个合格的java程序员,相信大家对lombok并不陌生。网上关于是否应该使用lombok的问题一直都存在,但这并不影响它是一个高效的java插件,本篇文章也并不会涉及讨论是否应该使用的问题。以上是官网的介绍,一句话概括:lombok是一个高效、功能丰富的java库。java开发存在很多第三方的插件,我们不仅仅要会用,而且应该要知道它的原理,知道它是怎样帮助我们的。这样对插件的使用才会得心应手。借此篇文章希望能够帮助到大家,让大家对lombok插件有更深的理解。

2023-03-14 21:42:02 1796

原创 构建工具之Maven的使用(二)

一、前言上篇文章构建工具之maven的使用(一)讲了关于maven配置的一些技巧,通过对maven相关的配置达到我们想要的目的。今天这篇就讲一些关于命令行的命令技巧,通过敲命令来使用maven提供的一些功能。大狮兄想说的是今天讲的有些内容通过idea的maven插件操作同样能达到目的,但大狮兄习惯了各种敲键盘,所以今天的命令行技巧都是手敲命令的。放开双手,让它尽情的在键盘上翩翩起舞吧!二、命令行技巧1. 构建jar包到本地仓库命令行技巧开发中我们会自定义开发或修改某些jar包,同时其他工程会依赖这个

2021-08-20 08:02:26 79

原创 构建工具之Maven的使用(一)

一、前言对于开发一个Java项目,上线之前会通过编译,测试,打包,部署这几个构建过程,如果文件较少,我们可以使用java–>javac–>jar这些命令去完成上述的构建流程。但是当工程越来越大,文件越来越多。Java原生的命令就显得捉襟见肘,力不存心了。Maven基于POM管理jar包依赖,通过自身的生命周期实现项目的构建流程。具体构建原理可自行百度/谷歌。本文主要为大家分享一些比较实用的maven使用技巧。二、配置技巧1. 多办公环境开发配置技巧在公司办公时,依赖包加载会用公司的私服;

2021-08-17 07:55:37 162

原创 如何远程调试自定义开发的Flume应用

一、前言Flume作为当下最流行的大数据采集组件之一。其本身拥有分布式/高可靠/高可用等优点,但相比较于Flink/Spark/Kafka等大数据组件,其对于本地调试的功能支持度并不高,如果我们没有掌握Flume的远程调试要领,就只能不停的进行打日志,部署,打日志,部署这样低效的工作,而这对于程序员来说无异于折磨。所以今天小编就和大家一起来探究Flume的远程调试方法。二、环境准备flink官网下载上传服务器并解压。开发自定义Source,这里以简单的读取mysql表数据为demo,部分代码

2021-08-16 07:18:24 315 2

原创 ElasticSearch版本控制--java实现

一、前言最近工作中有这样一个ElasticSearch(以下简称ES)写入的场景,Flink处理完数据实时写入ES。现在需要将一批历史数据通过Flink加载到到ES,有两个点需要保证:对于历史数据,ES已有文档,则舍弃旧数据,ES没有则插入历史数据。对于新数据,能对现有的ES数据进行更新。参考ElasticSearch进阶篇(一)–版本控制,可以使用ES的版本实现该需求的开发。二、代码实现及验证代码实现请求写数据时加入version和version_type参数,主要代码如下:Index

2021-08-12 08:22:57 1505

原创 ElasticSearch进阶篇(一)--版本控制

一、前言ElasticSearch(以下简称ES)的数据写入支持高并发,高并发就会带来很普遍的数据一致性问题。常见的解决方法就是加锁。同样,ES为了保证高并发写的数据一致性问题,加入了类似于锁的实现方法–版本控制。锁从其中的一个角度可分为乐观锁和悲观锁。对于同一个数据的并发操作,悲观锁认为自己在使用数据的时候一定会有别的线程过来修改数据,因此在获取数据的时候会先加锁,确保数据不会被别的线程修改。而乐观锁则认为自己在使用数据时不会有别的线程来修改数据,所以不会添加锁,只是在更新或者提交数据的时候去判断之前

2021-08-11 15:21:40 455

原创 Flink EOS--整合MySQL验证2PC

​一、前言假设当前Flink应用已实现EOS(即 Exactly-Once Semantics)语义,现在需要增加Flink处理数据持久化到MySQL,前提条件不能打破Flink EOS的生态。官方提供的flink-connector-jdbc并没有提供事务和checkpoint的相关操作,自定义sink需要考虑和CheckPoint复杂的配合。参考Flink EOS如何防止外部系统乱入,可自定义实现TwoPhaseCommitSinkFunction类,完成MySQL外部系统组件的完美嵌入。本次模拟

2021-08-09 20:52:27 610

原创 Flink EOS如何防止外部系统乱入--两阶段提交源码

一、前言根据维基百科的定义,两阶段提交(Two-phase Commit,简称2PC)是巨人们用来解决分布式系统架构下的所有节点在进行事务提交时保持一致性问题而设计的一种算法,也可称之为协议。在Flink 1.4版本中,社区将两阶段提交协议中的公共逻辑进行提取和封装,发布了可供用户自定义实现特定方法来达到flink EOS特点的TwoPhaseCommitSinkFunction。本文基于Flink 1.12.4,和大家一起拜读Flink两阶段提交的源码。二、2PC简介1. 定义根据维基百科的

2021-08-08 23:19:08 156

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除