自定义博客皮肤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 技术学习

  • 博客(162)
  • 资源 (2)
  • 收藏
  • 关注

原创 dolphinscheduler服务RPC心跳机制之实现原理与源码解析

在分布式系统中,RPC(远程过程调用)框架需要设计心跳机制的主要原因是为了保持系统的稳定性和高可用性。心跳机制通常用于检测服务端与客户端之间的连接是否仍然有效,并及时处理因网络故障、服务器宕机、长时间无响应等原因导致的连接中断。1.检测连接是否正常网络不稳定:在分布式系统中,网络可能出现瞬时的波动或断开。如果没有心跳机制,客户端和服务端无法知道对方是否仍然在线,可能会误认为连接仍然有效,导致请求发送失败。服务器宕机:服务器可能由于崩溃、重启等原因失去响应。

2024-12-26 18:18:20 467

原创 dolphinscheduler服务RPC负载均衡源码解析(二)基于多种不同算法的负载均衡策略实现源码解析

之前我们就负载均衡的设计专门写了一篇文章来讲述框架中的所有核心设计,这些都是编码实现的i底层基础,大家在看源码时需要在脑海里需要对当前讲的这个东西在框架中所在的位置、所扮演的角色有一个充分的理解,真正翻阅源码的时候就会有条有理,知道他到底是用来解决问题的。很多人说源码看不懂,那是因为一直都是硬看, 不梳理,不思考,不带着实际的问题去看,那就无法理解框架设计的核心,看完一遍没多长时间就忘了。看源码的诀窍就时梳理核心,理出核心组件,找到整个框架的主线流程,看看这些核心组件是怎么在整个业务流程主线当中应用的,慢

2024-12-25 16:23:24 679

原创 dolphinscheduler服务RPC负载均衡源码解析(一)RPC负载均衡的整体设计

1.分布式集群RPC提供者肯定会被部署在多台主机节点上, 那么注册到注册中心的RPC提供者服务肯定会有多个,RPC消费者端服务是如何获取注册中心的RPC提供者服务列表的,源码中是如何实现的?2.既然RPC提供者服务列表,RPC消费者端服务肯定需要从列表中选择一个可用的主机节点来进行远程调用, 这个节点是怎么选择出来的?选择策略都有哪些?3.dolphinscheduler中默认的选择策略是什么?为什么默认用这种策略?

2024-12-24 10:00:00 83

原创 dolphinscheduler服务RPC框架源码解析(一)RPC框架整体设计

RPC框架一般由服务提供者、服务消费者、注册中心和监控中心等服务组成。服务提供者启动后需要监听固定的域名/主机名/IP和端口,并且服务提供者作为一个基础服务,需要接收服务消费者发送过来的消息,后续对消息进行转发,调用目标方法后,向服务消费者响应结果数据。所以,服务提供者需要具备消息的首发功能,这是服务提供者应该具备的最基础的功能,今天这篇文章我们一起来探索一下dolphinscheduler框架中的RPC服务提供者的基础实现。

2024-12-23 14:33:58 113

原创 dolphinscheduler服务注册中心源码解析(三)RPC提供者服务整合注册中心注册服务实现源码

上一篇文章我们就Dolphinscheduler框架中注册中心的实现源码(主要是基于Zookeeper的注册中心插件的实现)进行了讲解说明, 我们知道了注册中心服务其实对应就提供了一个RegistryClient客户端工具类,其他应用服务的项目中如果有RPC提供者服务需要注册到Zookeeper或者其他注册中心, 只需要以来注册中心的工程,然后配置注册插件对应的配置参数信息,然后在在应用服务启动之后,就可以使用RegistryClient来进行服务注册及发现了。

2024-12-23 08:10:50 232

原创 dolphinscheduler服务注册中心源码解析(二)基于zookeeper实现注册中心源码解析

DolphinScheduler的架构遵循分布式设计,其核心包括多个组件,每个组件负责特定的功能,这样可以避免单点故障并提供可扩展性。Zookeeper的高可用性、强一致性、临时节点、事件通知和分布式协调能力,使它成为一个理想的注册中心解决方案。它能够处理服务的注册、发现、健康检查等任务,确保服务在分布式环境中的高可用性和一致性。Zookeeper可以作为注册中心的原因主要与它的特性有关,特别是它的分布式协调能力、高可用性和强一致性。具体原因包括以下几点:今天咱们主要看的就是这个 工程,看看基于Zooke

2024-12-20 14:38:01 337

原创 dolphinscheduler服务注册中心源码解析(一)服务注册与发现整体设计

下一篇文章我们开始讲解dolphinscheduler基于Zookeeper实现注册中心的源码解析。

2024-12-19 09:19:09 77

原创 dolphinscheduler服务RPC框架源码解析(八)RPC提供者服务整合Spring框架实现

通过前面的RPC框架源码系列的文章我们基本已经梳理了一个通用的RPC框架需要具备的核心功能。并通过源码进行这个设计实现流程的整体解析熟悉。本篇文章我们主要说的还是RPC框架如何与Spring框架进行整合。Spring是Java Web领域中最流行且最被广泛使用的框架,如果RPC框架需要使用在真实生产场景中,最好是能够支持与Spring框架框架整合。

2024-12-17 08:07:08 227

原创 dolphinscheduler服务RPC框架源码解析(七)RPC消费者服务整合动态代理直接调用RPC接口返回结果数据的实现

上一篇文章dolphinscheduler服务RPC框架源码解析(六)RPC消费者服务设计实现我们只是进行了RPC消费者服务的构建过程进行了分析, 但是实际生产使用时,不可能让用户去封装请求报文对象,然后再去创建RPC消费者服务对象, 在进行请求发送, 这样肯定是不行的。成熟的RPC框架,必须能直接在本地调用某个接口的方法就实现了远程过程调用,使用门槛要低。使用方无需关注复杂的构建请求协议对象细节,无需关注RPC框架底层远程通信的细节。调用远程方法就像调用本地接口方法一样丝滑和顺畅。

2024-12-16 09:46:07 674

原创 dolphinscheduler服务RPC框架源码解析(六)RPC消费者服务设计实现

之前我们通过几篇文章讲解了Dolphinscheduler中RPC框架服务的一些底层实现设计以及RPC提供者服务端的设计实现, 下面我们继续来看看针对RPC消费者端看看,它又是怎么进行的设计实现。一个完整的RPC框架肯定是既包含提供者服务也包含消费者服务的,这样其他服务在使用我们的框架时只要启动我们的RPC提供者服务,然后再通过我们的RPC消费者服务对外暴露的API方法就可以进行应用层的业务数据交互了。

2024-12-13 18:02:50 963

原创 dolphinscheduler服务RPC框架源码解析(五)RPC提供者服务调用真实方法实现

上一篇文章我们已经看过了RPC提供者服务的核心实现,知道了提供者服务如何创建、初始化、启动以及收发消息的处理流程,那么RPC提供者服务的核心实现到底是怎么实现真实方法调用的呢?那么本篇文章我们主要看看RPC提供者服务调用真实方法的具体实现。本篇文章主要讲解就是RPC服务提供者调用真实方法的设计实现,通过源码我们已经知道他是使用反射技术来进行实现的, 我个人觉得这里只使用反射还是不太灵活的, 一方面RPC框架的扩展性被限制了,另一方面也限制了框架性能优化的可能性。个人间接,不喜勿喷。

2024-12-13 11:59:19 980

原创 dolphinscheduler服务RPC框架源码解析(四)RPC提供者服务的设计实现

RPC服务提供者需要完成解析@RpcService、@RpcMethod注解、接收消息、发送消息、响应结果等功能。而且作为服务提供者,一定要启动并保持正常稳定运行,才能与服务消费者进行通信。

2024-12-13 11:22:10 1056

原创 dolphinscheduler服务RPC框架源码解析(二)RPC核心注解@RpcService和@RpcMethod设计实现

核心注解的扫描和解析一般都是有RPC的服务提供者进行,Dolphinscheduler中的RPC服务提供者是基于Netty的RpcServer。RpcServer启动时,会获取Spring容器中的所有被@RpcService注解的接口的实现类以及接口的方法被@RpcMethod注解修复的服务Bean注册中调用程序, 等待向客户端提供服务。这个注解需要再被@RpcService注解的接口类中定义的方法中进行使用,表明这个方法是一个RPC方法。这个注解的主要作用就是用来标记被它注解的接口是一个RPC服务接口。

2024-12-12 18:17:50 963

原创 dolphinscheduler服务RPC框架源码解析(三)自定义网络传输协议及协议编解码实现

如果让你设计一个网络传输协议, 你想想你会怎么设计?一般情况下,网络传输协议的设计基本都会包含消息头和消息体这两部分一个完整的网络传输协议可以分为消息头和消息体。消息头中主要存放的是一些对应整个消息的定义信息,比如协议的类型、状态、消息id、消息的长度等信息。消息体中主要存放的就是具体数据内容。我们一起来看看dolphinscheduler中RPC框架中自定义的网络传输协议的设计实现。dolphinscheduler 父项目。

2024-12-12 18:17:06 620

原创 dolphinscheduler集群服务一键安装启动实现流程剖析

通过以上分析我们基本梳理清楚了整个dolphinscheduler项目的一键安装启动逻辑, 我们现在在通过一张图正好理一下整个实现流程。关于一键停止集群服务及一件查询集群各个角色服务实例运行状态的实现也都在stop-all.sh/status-all.sh及dolphinscheduler-daemon.sh这三个脚本中, 有兴趣自行研究。写这篇文章的核心目的不仅在于给大家分享如何优秀的开源项目的一键安装部署的实现过程。

2024-12-06 15:56:46 907

原创 Linux系统【RockyLinux9.4】下K8S集群【1.31.0】安装部署指南

公司之前一直使用的是CentOS系统作为测试、开发、生产环境的基础系统镜像,由于最近的CentOS的镜像彻底终止维护之后,我们在为后续项目的基础系统镜像选型进行的调研, 最好是可以平替的进行类似系统的移植, 经过多番对比, 决定使用Rocky Linux系统来完成我们开发测试环境的系统移植,系统镜像的下载、安装、部署都比较简单, 基本跟CentOS发现版都很类似, 这里就不进行详细讲解说明了, 下面我们主要演示在Rocky Linux系统下完成K8S集群开发测试环境搭建的整个过程。

2024-09-09 17:27:37 3937 8

原创 Dolphinscheudler3.1.*搭配Seatunnel2.3.*完成异构数据数据集成

本示例定义了一个SeaTunnel同步任务,通过FakeSource自动生成数据并发送到JDBC Sink。FakeSource一共生成16行数据(row.num=16),每行有两个字段name(string类型)和age(int类型)。最终的目标表为test_table,表中同样会有16行数据。运行此作业之前,你需要在mysql中创建数据库test和表test_table。如果你还没有安装和部署SeaTunnel,你需要按照安装SeaTunnel中的说明安装并部署SeaTunnel。

2024-08-07 16:56:26 1970 2

原创 基于Seatunnel最新2.3.5版本分布式集群安装部署指南(小白版)

因为我这里已经按照了hadoop的集群, 可以直接使用HDFS api 读写文件,存储直接使用默认的HDFS,当然你也可以使用其他的存储类型,具体的参数配置可以参考官网说明。我这里已经安装部署了spark和Flink集群, 所以不需要再进行spark集群的部署配置了,这里直接说明如何完成基于spark/Flink引擎的Seatunnel集群配置。其他这个也很简单, 我们只需要修改seatunnel的环境配置脚本即可,将里面的spark的安装目录路径修改成我们本地的spark安装目录即可。

2024-06-07 16:40:10 4525 8

原创 CentOS7上安装部署Consul服务(小白版)

Consul 是一种开源的服务网格解决方案,由 HashiCorp 公司开发。它为微服务架构提供了服务发现、健康检查、键值存储等功能。服务发现与注册:Consul 提供了服务发现机制,允许服务实例注册自己,并通过 DNS 或 HTTP 接口查询可用的服务。这使得在动态环境中自动发现服务成为可能。健康检查:Consul 具有内置的健康检查功能,可以定期检查服务实例的健康状态。如果服务实例出现故障或不可用,Consul 将自动将其标记为不健康,从服务发现中删除或引入故障转移。分布式一致性。

2024-04-29 18:07:17 2041 3

原创 dolphinscheduler分布式集群部署指南(小白版)

摘自官网:Apache DolphinScheduler 是一个分布式易扩展的可视化DAG工作流任务调度开源系统。适用于企业级场景,提供了一个可视化操作任务、工作流和全生命周期数据处理过程的解决方案。Apache DolphinScheduler 旨在解决复杂的大数据任务依赖关系,并为应用程序提供数据和各种 OPS 编排中的关系。解决数据研发ETL依赖错综复杂,无法监控任务健康状态的问题。

2024-01-17 16:33:22 7577 3

原创 基于SPI的插件式开发实现方案之@AutoService+ServiceLoader介绍及Dolphinscheduler中的实际应用

AutoService是Google开源的用来方便生成符合ServiceLoader规范的开源库,使用非常的简单。官方的介绍是java.util.ServiceLoader 风格的服务提供者的配置/元数据生成器。翻译成中文就是自动服务,这个程序能自动做什么?Java 注释处理器和其他系统使用 java.util.ServiceLoader 来注册使用 META-INF 元数据的已知类型的实现。但是,开发人员很容易忘记更新或正确指定服务描述符。人工维护配置/元数据的过程。

2024-01-12 20:30:27 2118

原创 SpringBoot+Prometheus+Grafana搭建应用监控系统

springboot 2.X 中引入了 micrometer,它可以更方便的对接各种监控系统,包括 Prometheus。

2024-01-09 17:48:01 1168

原创 开源元数据治理平台Datahub部署指南(小白版)

举例, 现在需要管理MySQL数据源的元数据, 需要先集成mysql的数据源插件。

2023-12-22 09:23:00 4757 6

原创 SeaTunnel及SeaTunnel Web部署指南(小白版)

现在你能搜索到的SeaTunnel的安装。部署基本都有坑,官网的文档也是见到到相当于没有,基本很难找到一个适合新手小白第一次上手就能成功安装部署的版本,于是就有了这个部署指南的分享,小主已经把可能遇到的坑都填过了,希望大家都能安安稳稳上路,不掉坑,话不多说,走起~

2023-11-23 13:00:39 26370 91

原创 分布式消息流处理平台kafka(一)-kafka单机、集群环境搭建流程及使用入门

自带了zookeeper服务, 不需要额外搭建zookeeper集群服务,如果不想使用也可以使用自己搭建的zookeeper集群。下面主要介绍如何使用自带了zookeeper服务来搭建zookeeper集群主要就是修改$KAFKA_HOME/config/zookeeper.properties, 如果是自己搭建的zookeeper集群, 修改的就是zoo.cfg配置文件, 修改配置文件如下主要就是配置每台zookeeper节点的dataDir参数和增加集群配置,如下。

2023-07-21 10:42:01 3555

原创 C++实现sqlite单表增删改查的详细步骤

上面代码写完之后,IDE中关于sqlite数据哭的操作会出现大量的错误提示,这里是因为没有在项目中引入sqlite3的相关库文件导致的问题, 下面详细说说怎么怎么把sqlite3的库文件引入到当前项目中。,我这里自定义了安装目录,如果是默认安装,应该就在C盘下, 如果不知道目录在哪里,就找到启动的快捷方式, 鼠标右键,有一个“打开文件在目录”就可以找到安装目录了。链接数据库看看数据, 发现数据也成功写入了, 中文乱码是因为编码的问题, 这里设置一下编码就行了,也很简单。【链接器】-【常规】-【附加库目录】

2023-05-31 06:30:45 1373 1

原创 Datax的使用说明及入门操作案例演示

DataX 实现了包括 MySQL、Oracle、OceanBase、SqlServer、Postgre、HDFS、Hive、ADS、HBase、TableStore(OTS)、MaxCompute(ODPS)、Hologres、DRDS, databend 等各种异构数据源之间高效的数据同步功能。首先需要有两个数据源,一个是原始数据源, 一个是目标数据源, 我智力为了演示方便, 使用的都是MySQL数据库,演示的案列就是。datax的使用是不是还挺简单的呢~,多动手,掌握的就会越来越多。

2023-05-13 00:18:04 3478 1

原创 Mybatis框架源码笔记(十一)之Spring整合mybatis演示与整合原理解析

1.4 项目配置文件1.4.1 数据库连接配置文件1.4.2 Mybatis框架全局配置文件1.4.3 Spring框架配置文件1.4.4 **Mapper.xml文件1.4.6 实体类1.5 测试看看, 之前如果我们单独只用Mybatis框架的时候, 测试代码是怎么写的对比一下spring框架集成Mybatis框架之后对比一下,发现是不是很多操作就被简化了, 整个和都没有了, 那么到底是怎么实现这个操作的简化的呢, 下面我们一起来分析一下这个过程。首先我们看看Spring的配

2023-04-11 14:31:07 547

原创 Mybatis框架源码笔记(十)之Mybatis中的设计模式

有可能只是简单查询, 有可能是批量处理操作, 有可能是可重复使用的操作, 这里我们可以通过模板方法结合策略模式来实现不同的处理逻辑对应处理不同的业务请求类型来实现应用的拓展。这里用BaseExecutor类中的模板方法来说明一下, BaseExecutor方法中定义了SQL的查询和修改的模板方法, 并且在其他当前类中进行了调用, 但是BaseExecutor中没有进行实现,已经详细讲过, 这里不再进行赘述,Mybatis在实现缓存架构的时候使用了装饰者模式, 通过包装和组合的方式实现了强大的缓存功能。

2023-04-08 17:48:26 722

原创 Mybatis框架源码笔记(九)之反射工具类解析

反射在java项目的实践应用中是非常重要的,必须熟练掌握,很多成熟的开源框架中都已经封装了很多非常好的反射工具,我们在进行源码阅读时,可以将这些精华的部分进行搜集整理应用到自己的项目中,只看是学不会的,编程这个东西还是更注重实践,实践的多了,自然你就会自主的去学习和思考了。ObjectWrapper 是对对象的包装的接口,抽象了对象的字段信息、 getter| setter 方法、和上面三个成员的数据类型,它定义了一系列查询对象属性信息的方法,以及更新属性的方法。

2023-04-03 13:26:11 764 1

原创 Mybatis框架源码笔记(八)之Plugin插件原理解析

引用一段官网的译文MyBatis 允许你在映射语句执行过程中的某一点进行拦截调用。这些类中方法的细节可以通过查看每个方法的签名来发现,或者直接查看 MyBatis 发行包中的源代码。如果你想做的不仅仅是监控方法的调用,那么你最好相当了解要重写的方法的行为。因为在试图修改或重写已有方法的行为时,很可能会破坏MyBatis 的核心模块。这些都是更底层的类和方法,所以使用插件的时候要特别当心。自定义插件的实现步骤大致如下:实现Mybatis框架的Interceptor接口。

2023-03-15 16:42:18 708 1

原创 Mybatis框架源码笔记(七)之Mybatis中类型转换模块(TypeHandler)解析

你可以重写已有的类型处理器或创建你自己的类型处理器来处理不支持的或非标准的类型。具体做法为:实现 org.apache.ibatis.type.TypeHandler 接口,或继承一个很便利的类 org.apache.ibatis.type.BaseTypeHandler, 并且可以(可选地)将它映射到一个 JDBC 类型。

2023-03-10 15:56:41 1928

原创 Mybatis框架源码笔记(六)之Mybatis中集成日志框架原理解析

看到这张图片,大家在项目中使用Mybatis框架进行数据库操作的时候可能都在控制台看到过类似的日志打印, 大家有没有去深究一下, 这些功能到底是怎么实现的呢, 下面我主要通过源码分析一下在Mybatis框架在执行JDBC操作的时候是如何完成相关的操作信息和SQL语句从控制台输出的?这里我们聊的是围绕着JDBC相关的操作, 所以我们只分析跟JDBC相关的日志实现。

2023-03-03 19:42:09 1104

原创 Mybatis框架源码笔记(五)之Mybatis框架缓存机制原理解析

配置文件中缓存相关的配置参数解析Myabtis框架中一级缓存和二级缓存默认是开启的缓存默认的作用域是SessionConfiguration初始化的时候会为我们的各种Cache实现类完成别名注册三级缓存一般都是自定义缓存。分布式缓存框架:我们系统为了提高系统并发和性能,一般对系统进行分布式部署(集群部署方式)不适用分布缓存, 缓存的数据在各个服务单独存储,不方便系统开发。

2023-02-27 13:42:42 1025

原创 Mybatis框架源码笔记(四)之Mybatis执行增删改查方法的流程解析

Mybatis框架在执行增伤改的流程基本相同, 很简单,这个大家只要自己写个测试demo跟一下源码,基本就能明白是怎么回事,查询操作略有不同, 这里主要通过查询操作来解析一下整个框架的流程设计实现。

2023-02-22 17:31:36 659

原创 IDEA中如何配置SpringBoot项目多实例不同端口运行

配置结束之后让测试在8010端口进行测试, 我们可以在8009端口继续进行新的业务模块功能开发,匹配不会互相影响。我们在进行新项目开发的时候, 可能做完一个新的模块功能并自测通过之后, 我们希望测试人员能帮我跑一些单元测试用例来进行测试验证, 但是我们又需要在此基础上技术开发新的功能, 这是我们就需要在我们的开发PC上同时运行多实例来保证开发及内部测试的需求,下面就说说怎么在IDEA上实现这个同项目多实例运行。修改运行组名称和运行组中的启动实例。修改复制实例的名称及运行端口。

2023-02-17 13:02:18 5585

原创 SpringBoot项目如何引入外部jar及将外部jar打包到项目发布war包

我们现在是需要把项目打包成war包了,那么打包的时候就不需要内嵌web容器了,需要排除掉。这里需要选择我们的tomcat Server启动。在build下设置项目最终打包的项目名称,如果不设置也是可以的, 默认显示的就是是项目name加上版本号。引入外部jar成功,在自己的项目中如果使用了外部jar的方法修改了项目代码,需要重新进行打包部署。OK,项目中的接口可以正常访问, 引入外部jar包之后,项目打包并部署依然是成功的。个外部的jar包, 我这里使用的是guava-31.1-jre.jar作为演示。

2023-01-31 14:18:49 3787

原创 SpringBoot项目如何引入外部jar及将外部jar打包到项目发布jar包

引入jar包及打包

2022-11-29 11:22:16 7470

原创 Mybatis框架源码笔记(三)之Mybatis接口的全局配置文件及*Mapper.xml文件扫描解析过程分析

Mybatis框架之mapper接口以及接口对应的xml文件的解析流程分析

2022-11-10 14:21:04 2330

原创 Mybatis框架源码笔记(二)之Mybatis核心原理流程分析

Mybatis架构及核心流程介绍

2022-11-03 17:54:34 527

数仓项目实战-网站点击流数据分析项目

离线数仓-网站点击流数据分析项目实战,文档+资料+源码齐全

2024-03-11

前后端分离医院管理系统

基于Springboot+Vue的医院管理系统源码

2024-03-06

python进销存系统源码

使用python3开发的进销存系统

2024-03-06

MSC-Nastran快速参考手册最新版本

MSC_Nastran快速参考手册最新版本

2024-03-06

rabbitmq-server-generic-unix-3.9.8.tar.xz

RabbitMQ安装包

2021-10-29

codeDance.mp4

代码舞视频

2021-09-02

空空如也

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

TA关注的人

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