- 博客(26)
- 收藏
- 关注
原创 springboot2.2.9整合kafka之KafkaListener实现原理
前置知识需要了解KafkaListenerEndpointRegistry类的start方法的运行时机AbstractApplicationContext#finishRefresh。//进入ConcurrentMessageListenerContainer父类AbstractMessageListenerContainer#start。DefaultListableBeanFactory#preInstantiateSingletons方法最下面。
2024-01-27 15:23:18
1116
原创 Eureka-Server源码核心代码入口
先从注册表获取该服务的实例列表(gMap),再从gMap中通过实例的id 获取具体的 要续约的实例。在AbstractInstanceRegistry的postInit方法中,定义EvictionTask定时任务,构建定时器启动该任务,执行任务中剔除方法 evict()。这个值在Eureka中被定义为85%,一旦触发自我保护机制,Eureka会尝试保护其服务注册表中的信息,不再删除服务注册表中的数据。可以看出,其实服务续约的操作非常简单,它的本质就是修改服务的最后的更新时间。当该条件成立时,认为服务过期。
2023-12-26 21:24:57
1042
原创 Eureka-Client源码核心代码入口
DiscoveryClient这个类用来和Eureka-server互相协作,看一下它的注释,它可以完成服务注册,服务续约,服务下线,获取服务列表等工作。Jersey是一个Restful请求服务的框架,与常用的springmvc类似,后面会讲到在Eureka-server拦截请求的时候也用到了Jersy。当eureka-client关闭时,不会立刻关闭,需要先发请求给eureka-server,告知自己要下线了。查看父类DiscoveryClient构造器最终到达位置(带 @Inject注解的构造器)
2023-12-26 21:01:19
459
原创 Kibana操作ElasticSearch
PUT请求覆盖(不常用),PUT表示修改,不会修改id的值。GET /索引名称/类型名称/id值。新增文档_不带id(随机生成id)PUT /索引名称/类型/1。id不存在,则会新增这条数据。POST /索引名称/类型。b、创建索引指定字段类型。id存在,则修改这条数据。DELETE 索引名称。a、创建索引默认配置。PUT /索引名称。
2023-12-23 17:39:18
1383
1
原创 Google Aviator表达式引擎
Aviator是一个用于动态表达式求值的高性能、轻量级Java引擎。轻量级和高性能: Aviator的设计目标之一是轻量级和高性能。它的大小很小,加上依赖包也很小,这有助于将其轻松集成到各种Java应用程序中。与某些重量级的脚本语言(如Groovy)相比,Aviator非常紧凑,因此适用于对性能要求较高的应用程序。编译执行方式: Aviator与许多其他表达式引擎的不同之处在于,它不是通过解释表达式来执行,而是将表达式编译成Java字节码,然后将其交给Java虚拟机(JVM)执行。
2023-12-23 10:15:03
1790
1
原创 Spring源码之AbstractApplicationContext#refresh中invokeBeanFactoryPostProcessors方法调用
/调用BeanFactory后置处理器。
2023-12-18 17:38:15
425
1
原创 Spring Bean实例化流程生命周期(持续更新中)
/ Instantiate the bean. 实例化 beanif (mbd.isSingleton()) {//如果是单例//主要1:1、创建bean的实例 实例化方法,把bean实例化创建实例(属性还没有赋值)并且包装成BeanWrapper对象//拿到创建的实例Class<?if (!try {//主要2:收集类中的注解。
2023-12-16 16:49:13
356
1
原创 100、Async注解源码分析
是一个ImportSelector实现类,selectImports方法返回的字符串数组都会放入spring容易中生成bean。对应ImportSelector接口的使用可以自己写demo。此注解的解析主要是在。AsyncExecutionInterceptor的invoke方法。
2023-12-15 09:55:02
432
原创 10、Spring源码分析之AOP(持续更新中)
Component**@Aspect** //告诉spring当前是一个AOP程序类//Pointcut 切点 范围 集合 service下所有实例//Advice 增强逻辑 1、实现Advice接口 2、实现MethodInterceptor。
2023-12-14 17:36:35
336
1
原创 2、Spring源码之AbstractApplicationContext#refresh中obtainFreshBeanFactory()方法调用(持续更新中)
/获取工厂类//刷新工厂//返回创建结果//refreshBeanFactory方法本类中只是定义没有实现,子类实现//子类:AbstractRefreshableApplicationContext#refreshBeanFactory//判断工厂是否存在//是否已经存在,存在则清除BeanFactory和里面的实例//销毁Bean(里面有bean生命周期的销毁方法调用)//关闭掉//设置beanFactory等于nulltry {
2023-12-14 15:17:04
399
1
原创 1、Spring上下文之ClassPathXmlApplicationContext(持续更新中)
【代码】1、Spring上下文之ClassPathXmlApplicationContext。
2023-12-13 19:12:34
592
1
原创 20种 Redis 的妙用场景
你做的项目,用Redis干了些啥?大部分人的回答都会是:缓存;他能实现的功能并不仅限于缓存,而是可以运用到各种业务场景中,开发出既简洁、又高效的系统;结构类型结构存储的值结构的读写能力String字符串可以是字符串、整数或浮点数对整个字符串或字符串的一部分进行操作;对整数或浮点数进行自增或自减操作;List列表一个链表,链表上的每个节点都包含一个字符串对链表的两端进行push和pop操作,读取单个或多个元素;根据值查找或删除元素;
2023-03-22 13:03:47
750
原创 Eureka原理源码分析
Eureka Server之间通过复制的方式完成数据的同步,Eureka还提供了客户端缓存机制,即使所有的Eureka Server都挂掉,客户端依然可以利用缓存中的信息消费其他服务的API。综上,Eureka通过心跳检查、客户端缓存等机制,确保了系统的高可用性、灵活性和可伸缩性。Eureka Server提供服务注册服务,各个节点启动后,会在Eureka Server中进行注册,这样EurekaServer中的服务注册表中将会存储所有可用服务节点的信息,服务节点的信息可以在界面中直观的看到。
2023-03-16 21:22:52
150
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人