
源码解析篇
文章平均质量分 90
源码解析
拽着尾巴的鱼儿
The harder you work, the luckier you are
展开
-
源码篇--Nacos服务--中章(8):Nacos服务端感知客户端实例变更(集群数据校验)-4
本文对Nacos 集群节点间实例数据校验过程进行介绍,服务端版本 3.0.13。本文对集群内节点间的心跳监测,以及实例信息的检查和同步做介绍。原创 2024-04-29 14:27:26 · 738 阅读 · 0 评论 -
源码篇--Nacos服务--中章(8):Nacos服务端感知客户端实例变更-3
Nacos 集群中的节点通过distro 协议,grpc 通信互相同步节点中的实例信息;本文对服务端实例同步的3种场景进行介绍;服务端版本 3.0.13。本文对Nacos 集群内实例注册的感知,对实例的注册;Nacos 集群节点启动,实例信息的同步进行介绍。原创 2024-04-29 14:26:41 · 1009 阅读 · 0 评论 -
源码篇--Nacos服务--中章(8):Nacos服务端感知客户端注册-2
当客户端的实例注册到nacos 集群中某一台节点后,此时需要给集群中其它的节点推送节点注册实例信息,从而保证数据的最终一致性协议。集群的节点之间通过建立grpc 连接实现消息的发送,本文对服务端nacos 集群间节点grpc 连接建立,进行介绍,服务端版本 3.0.13。本文对集群内节点之间通过建立grpc 连接过程进行介绍。原创 2024-04-29 14:25:09 · 502 阅读 · 0 评论 -
源码篇--Nacos服务--中章(8):Nacos服务端感知客户端注册-1
本文对Nacos 服务端对客户端的注册实例请求过程进行阐述,服务端版本 3.0.13。本文对Nacos 服务端对客户端的注册实例请求过程进行阐述。原创 2024-04-29 14:24:23 · 475 阅读 · 0 评论 -
源码篇--Nacos服务--中章(7):Nacos客户端重连的4中场景
本文对 nacos 客户端的重新连接nacos 服务端的4中场景进行介绍,环境:客户端版本2.2.1,客户端将springboot 3.0.13。本文对Nacos客户端重连的4中场景和服务端的处理进行介绍。原创 2024-04-29 14:22:59 · 1258 阅读 · 0 评论 -
源码篇--Nacos服务--中章(6):Nacos客户端启动-grpc通道建立&客户端服务信息获取(故障转移)细节
在源码篇–Nacos服务–中章(5) 对nacos 客户端的创建及grpc 连接的建立,心跳检查,实例注册进行了介绍;本文对grpc通道建立&客户端服务信息获取(故障转移)细节进行介绍。本文对客户端服务信息获取的故障转移细节,及客户端同服务端的grpc 连接建立进行介绍。原创 2024-04-24 10:21:26 · 1386 阅读 · 0 评论 -
源码篇--Nacos服务--中章(5):Nacos客户端启动-实例注册-grpc连接建立
本文对Nacos 客户端启动时,同服务端建立长连接的过程进行介绍。环境:客户端版本2.2.1,服务端版本 3.0.13;客户端在启动成功之后发布 WebServiceInitializedEvent 事件,nacos 客户端同服务端创建通信通道,发送nacos 服务端的服务检查请求,正常返回后得到通道的id,创建双向流 grpc 的通信存根,发送连接确定建立的请求后;发起客户端实例的注册请求到nacos 服务端进行注册。原创 2024-04-24 10:20:53 · 1257 阅读 · 0 评论 -
源码篇--Nacos服务--中章(4):Nacos服务端启动--事件发布&订阅
本文对Nacos 中事件的发布和订阅进行介绍。Nacos 事件发布&订阅 本身就是一个生产者和消费者的模型,Nacos 将事件分成了两类,常规事件 和 慢事件,常规事件:每种事件类型都对应自己的一个 默认事件发布器对象 队列大小为128,通过set 集合存放消费改事件的消费者;慢事件:都使用共享事件发布器, 队列大小为1024,使用map 集合存放消费改事件的消费者 key: 包名+类名的 topIc, value 为set 集合存放消费改事件的消费者;原创 2024-04-23 09:30:24 · 791 阅读 · 0 评论 -
源码篇--Nacos服务--中章(3):Nacos服务端启动--端口监听
本文对Nacos 服务端的端口监听进行介绍。在 Nacos 中,BaseRpcServer 是一个基础的远程过程调用(RPC)服务器组件,用于处理 Nacos 集群内部节点之间的远程通信和调用。其主要作用包括:提供远程服务调用接口:BaseRpcServer 作为一个 RPC 服务器,提供了远程服务调用的接口,使得集群中的各个节点能够通过网络进行相互调用。通过 BaseRpcServer,节点之间可以实现远程调用服务的功能。原创 2024-04-23 09:29:53 · 1267 阅读 · 0 评论 -
工具篇--Nacos 源码启动 & jmenv.tbsite.net 错误分析
本文对nacos 源码启动 报 Unable to start embedded Tomcat ,报错原因及解决办法进行介绍;如果想直接看结果可以直接到。本文环境 nacos :2.4.0;Nacos 是一个开源的服务发现、配置管理和服务管理平台,旨在帮助开发人员构建和维护微服务架构的应用。Nacos 的功能包括:服务发现和注册、配置管理、动态 DNS 服务以及服务健康监测。服务发现与注册:Nacos 提供了服务发现和注册功能,使得微服务应用能够灵活地注册和发现其他服务实例。原创 2024-03-25 16:22:47 · 6572 阅读 · 1 评论 -
原理篇--一次定时任务的触发执行&结果返回--(终章)
之前的文章我们将xxl-job 服务端和执行端 各个类的工作内容进行了介绍,本篇文章将其串联,介绍一个任务的完整执行。本文对,一次定时任务的触发执行&结果返回的过程进行介绍。原创 2024-03-07 10:36:13 · 1919 阅读 · 0 评论 -
原理篇-- 定时任务xxl-job--任务执行-run(5)
本文对执行器端 job 的运行进行介绍。定时任务xxl-job–任务执行-run() 进行介绍。原创 2024-03-07 10:34:22 · 1499 阅读 · 0 评论 -
原理篇-- 定时任务xxl-job-执行器项目启动过程--执行器注册&任务执行(4)
本文对initEmbedServer 内容进行介绍。本文对执行器注册&任务执行 的源码内容进行介绍。原创 2024-03-06 14:57:10 · 1218 阅读 · 0 评论 -
原理篇-- 定时任务xxl-job-执行器项目启动过程--TriggerCallbackThread 初始化(3)
本文对TriggerCallbackThread 初始的内容进行介绍。本文介绍了TriggerCallbackThread 的初始化工作,对任务的执行结果 回调给服务端,并进行相应的日志记录。原创 2024-03-06 14:56:38 · 1074 阅读 · 0 评论 -
原理篇-- 定时任务xxl-job-执行器项目启动过程--XxlJobExecutor 初始化(2)
本文对XxlJobExecutor 初始化内容进行介绍。本文对XxlJobExecutor 初始化时 执行器的封装以及 日志清理 内容进行介绍。原创 2024-03-05 14:42:27 · 703 阅读 · 0 评论 -
原理篇-- 定时任务xxl-job-执行器项目启动过程(1)
本篇文章对xxl-job 执行器端启动过程进行介绍;本文对xl-job-执行器项目启动过程 进行介绍,其它初始化的工作在后续文章中进行介绍。原创 2024-03-05 14:41:00 · 1362 阅读 · 0 评论 -
原理篇-- 定时任务xxl-job-服务端(admin)项目执行器注册&执行器任务状态回调
在之前的章节中我们可以看到在 JobRegistryHelper 有执行器的注册和移除方法,JobCompleteHelper 有日志回调状态的更新,那么这些方法是何时被触发调用呢。本文对服务端项目执行器注册&执行器任务状态回调 调用时机进行介绍。原创 2024-03-04 14:44:29 · 937 阅读 · 0 评论 -
源码篇--MethodIntrospector.selectMethods 获取类中符合条件的方法
Spring 提供了MethodIntrospector 可以传入类以及筛选条件获取到符合该条件的方法集合,本文通过源码方式介绍其工作的内容。本文对MethodIntrospector.selectMethods 获取类中符合条件的方法源码内容进行介绍。原创 2024-03-04 14:38:52 · 1540 阅读 · 0 评论 -
原理篇-- 定时任务xxl-job-服务端(admin)项目启动过程--JobScheduleHelper初始化 (8)
本文对JobScheduleHelper 的工作内容进行介绍。本文对JobScheduleHelper 的源码内容进行介绍。原创 2024-03-04 14:37:12 · 1283 阅读 · 0 评论 -
原理篇-- 定时任务xxl-job-服务端(admin)项目启动过程--JobLogReportHelper初始化 (7)
本文对JobLogReportHelper 内容进行介绍。本文对JobLogReportHelper 工作内容进行介绍。原创 2024-03-04 14:35:18 · 539 阅读 · 0 评论 -
原理篇-- 定时任务xxl-job-服务端(admin)项目启动过程--JobCompleteHelper初始化 (6)
本文对JobCompleteHelper 工作内容进行介绍。本文对JobCompleteHelper 工作内容进行介绍;原创 2024-03-04 14:30:42 · 632 阅读 · 0 评论 -
原理篇-- 定时任务xxl-job-服务端(admin)项目启动过程--JobFailMonitorHelper初始化 (5)
本文对JobFailMonitorHelper的工作内容进行介绍。本文对 JobFailMonitorHelper的工作内容进行介绍。原创 2024-03-04 14:29:24 · 1184 阅读 · 0 评论 -
原理篇-- 定时任务xxl-job-服务端(admin)项目启动过程--JobRegistryHelper 初始化 (4)
本文对JobRegistryHelper 工作内容进行介绍。由于start() 方法内容较多,故拆为 2.1.1 和 2.1.2 进行介绍本文对 JobRegistryHelper 的工作内容进行介绍。原创 2024-03-04 14:28:51 · 1009 阅读 · 0 评论 -
原理篇-- 定时任务xxl-job-服务端(admin)项目启动过程--JobTriggerPoolHelper 初始化 (3)
本文对 JobTriggerPoolHelper 的工作进行介绍;// 创建日志对象// fast/slow thread pool 快慢线程池创建 区别是线程池最大线程的数量不一样// 快速线程池 的最大线程数量 xxl.job.triggerpool.fast.max 默认值 20010,60L,@Override});// 慢速线程池 的最大线程数量 xxl.job.triggerpool.slow.max 默认值 10010,60L,@Override});原创 2024-03-04 13:19:41 · 1123 阅读 · 0 评论 -
原理篇-- 定时任务xxl-job-服务端(admin)项目启动过程--initI18n() (2)
本文对 XxlJobScheduler init() 方法中的 initI18n() 进行介绍。本文对 initI18n() 方法进行介绍。原创 2024-03-04 13:16:03 · 996 阅读 · 0 评论 -
原理篇-- 定时任务xxl-job-服务端(admin)项目启动过程(1)
我们已经熟悉并使用了xxl-job 进行任务调度,作为服务端的xxl-job 的工作过程是怎样的,本文进行介绍。XxlJobAdminConfig 是 xxl-job-admin 的配置类,用于配置 xxl-job-admin 的相关参数和属性,以实现对 xxl-job-admin 的自定义配置和定制。配置注册中心:通过 XxlJobAdminConfig 可以配置 xxl-job-admin 的注册中心,包括注册中心的地址、端口、用户名、密码等,用于管理 xxl-job 的执行器和任务。配置调度中心。原创 2024-03-01 08:58:41 · 3109 阅读 · 0 评论 -
原理篇-- 定时任务xxl-job-admin的表&任务状态介绍
在 中我们已经知道了如何在项目中使用xxljob ,接下来从xxljob 的原理入手进行介绍,首先看下xxljob-admin 服务端所使用的几张表。本文对xxl-job 服务端涉及的表及其任务状态进行介绍。原创 2024-03-01 08:56:35 · 3707 阅读 · 0 评论 -
源码篇--Redis 内存策略
Redis之所以性能强,最主要的原因就是基于内存存储。然而单节点的Redis其内存大小不宜过大,会影响持久化或主从同步的性能;所以当内存使用达到上限时,就无法存储更多数据了 ,那么 redis 是怎么避免达到内存上限;Redis 内存中会采用各种策略来避免内存达到上限;处了定时任务 去清理已经过期的key ,当redis 内存达到上限 但是所以的key 都是有效时,redis 会通过 key 的淘汰策略 去筛选出一批合理的 key 进行删除 来释放内存。原创 2024-01-30 14:24:49 · 1071 阅读 · 0 评论 -
源码篇--Redis 通信协议
在我们知道redis 的网络模型后,继续看下 redis 的通信协议。Redis 使用 RESP 协议 进行客户端与服务端的通信,通过对数据进行不同的头部标识 来区分数据类型,通过长度来保证读取的完整性。原创 2024-01-30 14:24:28 · 1330 阅读 · 0 评论 -
源码篇--Redis 网络模型
知道了Redis 底层的数据结构,接下来看下 Redis 通信的网络模型。用户空间并不能直接的访问 系统资源,需要发送指令到内核空间,然后内核空间执行指令 从系统获取磁盘,然后将获取到的资源拷贝到用户空间,然后在从用户空间拷贝到用户空间;redis 内部使用IO多路复用,在linux 环境下,通过创建红黑树来监听多个socket 的fd 文件,并将就绪的fd 写入到就绪链表中;这样服务端就可以对就绪链表进行遍历;原创 2024-01-30 14:24:05 · 1617 阅读 · 0 评论 -
源码篇--Redis 底层数据结构
在项目中我们经常使用redis 作为数据库的前置层,从而加快数据的检索速度,而我们经常使用的五种数据接口它们底层是怎么实现的,本篇记录redis 中常见的几种数据结构。本文总结了 redis 底层使用的 7中数据结构,不同的数据结构的特点,来更好的支持数据的存入和读取。原创 2024-01-24 10:49:28 · 1152 阅读 · 0 评论 -
源码篇--Redis 五种数据类型
在源码篇–Redis 底层数据结构章节中介绍了redis 底层的数据结构,而底层的数据结构又是为了数据存储而设计的,那么redis 中我们都可以存入哪些数据类型呢?Redis 会根据不同数据类型底层采用不同的 数据结构进行保存,对于key 和value 来说,都会被封装成为一个redisobject 对象,key 是一个字符串的redisobject 对象其内部主要通过sds实现,value 会根据存储的数据不同而在redisobject 对象内部 使用进行实现;而。原创 2024-01-24 10:48:39 · 1170 阅读 · 0 评论 -
源码篇--Redisson 分布式锁lock的实现
我们知道Redis 缓存可以使用setNx来作为分布式锁,但是我们直接使用setNx 需要考虑锁过期的问题;此时我们可以使用Redisson 的lock 来实现分布式锁,那么lock 内部帮我们做了哪些工作呢。锁过期自动续时的触发条件是tryLock设置的锁到期时间leaseTime == -1;原创 2024-01-24 10:48:15 · 1546 阅读 · 0 评论 -
源码篇--SpringCloud-OpenFeign--http请求的发出
我们已经知道了feign 接口是通过FeignClientFactoryBean 来生成代理类的,那么一个真正的http 请求是如果进行构建的呢?原创 2024-01-12 15:36:21 · 1443 阅读 · 0 评论 -
源码篇--SpringCloud-OpenFeign--代理类的生成
我们知道SpringCloud-OpenFeign 是通过jdk 的动态代理为接口生成代理对象,从而由代理对象完成请求的访问,下面具体看下在Spring 中 是如何完成对接口的代理的;通常在启动类中我们需要添加 @EnableFeignClients 注解来开启feign 接口的扫描;Class<?Class<?Class<?原创 2024-01-12 15:36:04 · 1229 阅读 · 0 评论 -
Spring-MVC 源码分析--DispatcherServlet 请求分发&访问&返回
Spring-MVC 对DispatcherServlet 完成初始化之后,下面看下一个http 请求是如何被分发到不同请求处理handlerMapping。本文主要对DispatcherServlet 的请求分发,请求参数,请求结果的包装返回 在原码层面进行了流程上的分析;原创 2023-12-19 14:58:05 · 379 阅读 · 0 评论 -
Spring-MVC 源码分析--DispatcherServlet 初始化
我们知道一个http 请求到达服务端后是通过DispatcherServlet 进行请求的分发,而分发的逻辑具体就是要找到这个请求合适的HandleMapping 来处理,那么HandleMapping 是什么,它是怎么根据请求路径判断 哪个HandleMapping 来处理请求呢,HandleMapping 分发请求后,怎么完成对方法参数的解析,又是如何将方法的返回值给封装成浏览器需要的对象?原创 2023-12-19 14:57:34 · 95 阅读 · 0 评论 -
Spring- 事务底层源码解析(一步步看总能明白)
在Spring项目中我们通产只需要在启动类上通过@EnableTransactionManagement 开启事务,然后在我们需要增加事务的类/方法上增加@Transactional 注解接口,那么Spring 底层对于事务是如何实现的。可以在自己的业务中,监听一个方法执行时,事务的状态流转信息;@Override// 当前test 方法的事务 被挂起后执行@Override// 当前test 方法的事务 被挂起恢复后执行@Override@Override。原创 2023-12-11 13:55:10 · 820 阅读 · 1 评论 -
Spring-Aop 底层源码解析--Spring中Aspect切面逻辑的实现
在Spring项目中我们可以在启动类上开启切面,并为已经存在的bean 增加@Aspect 声明为切面类,这样就可以为特定bean 中的方法增加对应的逻辑,那么Spring对于@Aspect 是如何支持的呢?可以看到注如了一个AspectJAutoProxyRegistrar 类型的 bean// bean 的注册 ,注册 AnnotationAwareAspectJAutoProxyCreator 类型的bean。原创 2023-12-06 16:37:15 · 520 阅读 · 0 评论 -
Spring-Aop 底层源码解析--Spring 如何通过代理进行Aop
Spring 中所谓的Aop 就是为已经存在的bean ,动态的插入一段代理逻辑,从而实现某些指定的方法进行增强。本文列举了通过 Spring 中的BeanNameAutoProxyCreator ,DefaultPointcutAdvisor 来为bean 进行代理逻辑的实现,并对底层使用的ProxyFactory 工作原理进行介绍。原创 2023-12-06 16:36:54 · 122 阅读 · 0 评论