自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(38)
  • 收藏
  • 关注

原创 Eureka Server源码分析一——走进Eureka 注册中心

走进Eureka 注册中心1、简介2、源码分析2.1 开启自动配置2.2 注册操作初步分析2.3 与Eureka对接2.3.1 Eureka侧PeerAwareInstanceRegistry注入2.3.2 Spring侧PeerAwareInstanceRegistry注入2.3.3 initEurekaServerContext方法调用3、运行注册中心1、简介Eureka Server,也称为服务注册中心。通过接收Eureka Client发送的注册请求,保存客户端注册信息。同时,将超时未接收到续约

2020-09-10 11:11:06 142

原创 Eureka Client源码分析

Eureka Client源码分析前言一、Eureka Client是什么二、Eureka Client功能1 服务注册1.1 功能介绍1.2 源码分析2 服务续约2.1 功能介绍2.2 源码分析3 心跳检查3.3 功能介绍3.4 源码分析4 更新服务缓存4.1 功能介绍4.2 源码分析5 为什么注册服务很慢三、Demo前言本博文基于1.4.5.RELEASE的spring-cloud-starter-eureka版本进行的Eureka源码分析。Spring Cloud高阶版本相对于低版本,其内部处理和

2020-08-30 12:19:25 165

原创 Could not find KafkaClient entry in the JAAS configuration

最近项目,需要Kafka基于GSSAPI认证模式,进行安全认证。然后通过Kafka官网文档等资料,完成认证操作。但是一个比较诡异的事是,代码在本地环境上,能够成功运行,但是基于Docker进行部署时,出现如下异常。后续,通过排查,发现Docker容器内,该文件存在,拥有对应的操作权限,且配置内容也是正确的。无奈之下,通读一遍JaasContext.defaultContext方法。发现该异常信息,来源于configEntities属性判断处。最后发现,configEntities属性,通过ja

2020-06-23 15:32:59 16021 5

原创 Can‘t open the append-only file: permission deined

Can‘t open the append-only file: permission deined1、前言2、问题原因3、解决方式4、相关配置1、前言最近,基于docker搭建redis集群环境,执行run命令时,没有成功创建docker容器。通过docker logs,发现如下错误信息2、问题原因Redis进行aof持久化时,会创建appendonly.aof文件,当该文件不能以写的方式打开时,就会报上述错误信息。那么,该文件创建后,为什么不能以写的方式打开呢?通过查看挂载目录的权限后,发现

2020-05-18 10:33:00 5317

原创 RedisCommandExecutionException: MOVED 9656 192.168.1.101:7002

io.lettuce.core.RedisCommandExecutionException: MOVED 9656 192.168.1.101:7002最近一个同事,在使用Redis集群进行操作的过程中,遇到如下错误看这个错误信息,感觉挺奇怪。操作代码,使用Spring封装的RedisTemplate,而且操作内容并不复杂。将相关操作通过redis命令,在客服端执行其实,看到这里,想必...

2019-12-29 15:25:24 18019 1

原创 Redis Connection refused: no further information

Redis连接异常 Connection refused: no further information最近使用Lettuce连接Redis时,出现如下异常:初步看到Connection refused异常时,以为是redis集群的IP、端口等信息,填写有误。从代码侧确定时,发现IP、端口等信息,并没有填错。而且,比较奇怪的是,代码侧,连接的是192.168.1.101上面的Redis集群。...

2019-12-19 14:11:01 16888

原创 深入剖析Spring WebFlux:从MethodHandler到反射获取请求信息的源码之旅

WebFlux环境,通过分析WebFlux核心程序,用以得到,如何拦截请求,以获取请求处理信息、请求url变量、响应结果数据。

2024-03-31 12:34:54 854

原创 Reactive Feign源码深度剖析:基于动态代理的Feign接口封装处理全解析

该篇博文,主要通过源码分析方式,介绍Reactive Feign接口,底层封装过程,并借此解答上一篇博文一文读懂Reactive Feign:底层请求调用原理及实现细节提及的部分源码类的串联过程。Feign接口,在Spring环境中,被代理成哪个Bean,进行实际使用。Feign接口代理类,内部封装逻辑。Feign请求,数据流转方式。通过EnableFeignClients注解,开启Reactive Feign功能。

2024-03-30 11:08:10 955

原创 一文读懂Reactive Feign:底层请求调用原理及实现细节

文章目录@[TOC](文章目录)前言概述二、问题原因分析三、问题解决总结前言最近在编写调度框架,构思引入一个类型为"远程服务调用"的调度任务,该任务,主要用于实现远程服务 + 微服务请求调用。任务内容,大体分为两部分,第一部分,通过读取调度配置信息,获取远程服务请求信息后,进行请求调用;另一部分,通过取号服务,获取分布式序号,唯一标识调度结果,并存储。系统基于WebFlux搭建,于是选择Reactive Feign + WebClient,进行服务调用。概述基于该调度任务的定位,自然而然,引入

2024-03-30 00:19:48 1230 1

原创 Spring Cloud Sleuth系列(1) — Sleuth环境搭建以及Feign整合调用分析

Sleuth环境搭建以及Feign整合调用分析

2022-10-20 21:55:44 1127 1

原创 Spring Cloud Gateway获取认证用户信息

Spring Cloud Gateway与Spring Security集成。

2022-09-26 19:37:20 3646 2

原创 Unable to create call adapter for rx.Observable<java.util.Map<java.lang.String, java.lang.Object>>

Unable to create call adapter for rx.Observable异常分析及解决

2022-08-25 11:07:26 1012

原创 Spring Kafka实战(6)—使用自定义实体类传递消息

Spring Kafka实战(6)—如何使用自定义实体类传递消息

2022-01-09 19:31:24 1066

原创 Spring Kafka实战(5)—消息类型转换探讨

Spring Kafka实战(5)—消息类型转换探讨

2022-01-08 23:33:05 1191

原创 Spring Kafka实战(4)—消费者创建以及消息处理

Spring Kafka实战(4)—消费者创建以及消息处理

2022-01-08 23:14:10 872

原创 Spring Kafka实战(3)—message listener创建方式探讨

Spring Kafka实战(3)—message listener创建方式探讨

2022-01-06 23:00:03 1096

原创 Spring Kafka实战(2)—listener消息入参探讨

Spring Kafka实战(2)—listener消息入参探讨

2022-01-04 14:10:14 906

原创 Spring Kafka实战(1) — Kafka集群环境搭建以及AckMode模式探讨

Spring Kafka系列教程Spring Kafka实战(1) — Kafka环境以及AckMode模式探讨

2022-01-03 11:50:12 468

原创 EnableAsync异步任务执行原理分析以及异步任务不生效解决

EnableAsync分析一、EnableAsync介绍二、涉及类分析1.AsyncConfigurationSelector2.ProxyAsyncConfiguration3.AsyncAnnotationBeanPostProcessor4.AsyncAnnotationAdvisor 和AnnotationAsyncExecutionInterceptor三、使用四、异步调用不生效分析及解决总结一、EnableAsync介绍同Configuration注解配合使用,以切面方式,为Spring应

2021-12-18 17:12:11 553 3

原创 基于Docker搭建Redis集群,以及Waiting for the cluster to join等问题分析、解决

基于Docker搭建Redis集群,以及槽位问题分配等问题解决前言一、Redis集群搭建1.拉取镜像2.创建6个Redis节点3.初始化Redis节点二、搭建问题问题1.Waiting for the cluster to join2.开启认证3.开启AOF三、获取镜像详细信息总结前言该篇博文,主要介绍如何基于Docker搭建Redis集群,以及解决Redis集群搭建过程中,"Waiting for the cluster to join"环节阻塞等问题。一、Redis集群搭建1.拉取镜像通过do

2021-09-04 22:36:20 3181 5

原创 模拟FeignClient实现接口代理注册配置

前言在上一篇博文中,介绍了Spring Cloud如何为FeignClient生成代理类,并配置成Bean。该博文将参照FeignClient,实现接口代理并注册配置成Bean。代码目录层次介绍代码整体目录层次如下,参照FeignClient注册体系实现,即通过EnableDefinition引入DefinitionBeanRegister,从而开启标记DefinitionAnno接口的扫描。DefinitionClientFactoryBean,用于收集DefinitionAnno注解的相关信息,并

2021-05-16 09:51:04 477 1

原创 FeignClient代理类创建过程分析

前言基于Feign进行微服务调用时,我们只需要定义一个接口,在加上一些注解,即可。在使用过程中,代码隐式的为我们针对于接口生成了代理类,让我们只需关心业务处理。那么FeignClient代理类是如何生成的呢?本篇博文将进行解答。一、Feign使用日常我们大致通过如下方式,基于FeignClient注解,进行微服务请求。基于FeignClient注解,Spring Cloud会我们生成该接口的代理类,从而基于类似声明式方式,进行服务请求。@FeignClient(name = "quelongjian

2021-05-15 20:48:58 612 1

原创 Hystrix Dashboard监控源码分析

Hystrix Dashboard监控前言一、开启Hystrix Dashboard1、添加依赖2、配置项3、配置类4、成品展示二、Hystrix Dashboard源码分析1、ServletEndpointRegistrar装配2、端点注册3、hystrix.stream端点分析4、hystrix.stream请求分析总结前言本篇博文,从源码层次,分析Hystrix Dashboard如何进行Hystrix监控,进而加深Hystrix Dashboard理解。一、开启Hystrix Dashboar

2021-05-12 22:02:39 345 1

原创 记录Guava版本冲突而出现项目启动失败的问题

系列文章目录该博文主要用于记录由于Guava版本冲突而导致项目启动失败的问题,排查该问题,前后花了一个小时,特此记录,方便后续排坑。文章目录系列文章目录一、问题现状二、问题原因解决措施一、问题现状最近为了方便调用公司某一个请求时,搭建一套Feign + Hystrix环境。环境搭建完成后,启动直接报错。报错信息如下Description:An attempt was made to call the method com.google.common.collect.FluentIterable.

2021-05-03 19:28:16 2116

原创 Feign源码分析(一)、FeignClient创建过程

FeignClient创建过程该博文为Feign源码分析系列博文中的第一篇,主要介绍如下内容Feign所涉及的相关配置类Feign工厂类的创建过程。如何通过Feign工厂类,基于动态代理,创建Feign Client。文章目录FeignClient创建过程前言一、相关配置类介绍FeignRibbonClientAutoConfigurationFeignAutoConfiguration二、FeignClientFactoryBean创建过程分析1.引入库三、Feign Client创建过程分

2020-12-05 21:51:42 715

原创 Ribbon与Eureka整合分析(四)、客户端配置延迟加载和启用饥饿加载

客户端配置延迟加载和启用饥饿加载该博文为Ribbon与Eureka整合分析系列文章中的第四篇,主要介绍客户端所需配置,默认情况下,如何在创建客户端时,才加载配置,以及如何在启动时,加载客户端配置(即饥饿加载)。文章目录客户端配置延迟加载和启用饥饿加载一、客户端配置加载二、客户端饥饿加载总结一、客户端配置加载最近在调试和研究Ribbon源码的时候,发现,客户端所需配置,默认情况下,并不是随着容器启动而加载,而是在使用时(请求经过LoadBalancerInterceptor拦截器处理),才进行加载。之

2020-12-01 17:37:23 510

原创 Ribbon与Eureka整合分析(三)、自定义配置与请求调用

自定义配置与请求调用该博文为Ribbon与Eureka整合分析系列文章中的第三篇,主要介绍如何针对特定客户端,进行独立配置以及如何使用Ribbon完成请求处理。文章目录自定义配置与请求调用一、自定义配置1、默认配置2、如何进行全局配置?3、如何针对指定客户端进行配置?二、请求处理总结一、自定义配置1、默认配置通过前面两篇博文的介绍,可以发现,Ribbon与Eureka整合后,Spring针对于ILoadBalancer、IPing、IRule、ServerList、ServerListFilter

2020-12-01 10:29:08 387

原创 Ribbon与Eureka整合分析(二)、服务过滤与负载均衡算法

服务过滤与负载均衡算法该博文为Ribbon与Eureka整合分析系列文章中的第二篇,主要分析服务过滤以及负载均衡算法。文章目录服务过滤与负载均衡算法一、服务实例过滤二、负载均衡算法总结一、服务实例过滤在上一篇博文,介绍了在DynamicServerListLoadBalancer构造方法中,通过DiscoveryEnabledNIWSServerList从eureka处拉取服务实例。获取服务实例后,紧接着,Ribbon通过ServerListFilter接口,完成服务实例过滤操作。ServerLi

2020-11-30 23:27:45 286

原创 Ribbon与Eureka整合分析(一)、服务实例数据获取以及更新

服务实例数据获取以及更新该文为Ribbon与Eureka整合源码分析系列博文的第一篇,主要解答如下问题:基于哪些配置类,完成整套操作?如何从Eureka处,获取服务实例?拉取的服务实例,如何动态同步其状态?文章目录服务实例数据获取以及更新一、使用哪些配置类?RibbonEurekaAutoConfiguration配置类RibbonAutoConfiguration配置类二、如何从Eureka处获取服务?1.三、如何更新服务实例总结一、使用哪些配置类?RibbonEurekaAutoCon

2020-11-30 16:12:34 1132

原创 抓包分析Websocket连接建立的全过程

Websocket连接建立过程选择协议3次握手协议转换连接订阅消息推送与确认选择协议你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。3次握手协议转换连接订阅消息推送与确认...

2020-11-27 20:46:28 1139

原创 Eureka源码分析一 -- 服务注册

文章目录一、meta-data信息收集二、DiscoveryClient创建。三、服务注册。一、meta-data信息收集When a client registers with Eureka, it provides meta-data about itself — such as host, port, health indicator URL, home page, and other details. Eureka receives heartbeat messages from each i

2020-08-20 13:44:18 231

原创 Eureka源码分析一 -- 自动配置开启

最近通过Spring Cloud官网帮助手册(Greenwich.SR5版本),重温Eureka时,发现一个有趣的现象。在官网描述中,只需引入spring-cloud-starter-netflix-eureka-client依赖,就会自动开启服务注册功能。但在刚开始学习Eureka时,需要在启动类上,通过@EnableDiscoveryClient来开启服务注册功能。于是有了一个疑问,为什么Greenwich.SR5版本的帮助手册,给出的demo,不在使用@EnableDiscoveryClient

2020-08-16 15:10:54 190

原创 Kafka 、Kafka Tools针对于SASL修改

最近公司项目,需要支持Kafka SASL,经过2天的摸索,终于搞定,特此记录。该文从以下5方面,进行介绍环境搭建代码修改监控工具修改命令脚本参数对比常见报错一、环境搭建1、Kafka Server修改在config目录下创建kafka_server_jaas.conf文件,配置如下KafkaServer {org.apache.kafka.common.securit...

2020-03-26 22:22:36 2783 1

原创 java.nio.channels.NotYetConnectedException: null

最近在学习Java AIO操作时,出现如下异常比较奇怪的是,该异常仅仅在两个操作间隔非常短的时候,才会出现。根据调式与排查,发现问题出现在AsynchronousSocketChannel的connect方法调用上。/** * Connects this channel. * * <p> This method initiates an operat...

2020-02-02 21:54:18 4029 1

原创 Jedis客户端testOnBorrow、testOnReturn属性分析

Jedis客户端testOnBorrow、testOnReturn属性分析在上一篇博客,将testOnBorrow和testOnReturn两个属性设置为true,用以解决"Could not get a resource from the pool"异常。通过这篇博客,来介绍这两个属性。一、TestOnBrrow属性属性介绍当该属性为true时,在调用borrowObject方法返...

2020-01-02 09:45:01 12700 4

原创 JedisException: Could not get a resource from the pool

JedisException: Could not get a resource from the pool最近公司代码在使用Redis过程中,经常出现如下异常调试过程中发现,创建的Redis连接,全部被占,尚未归还。由于当前Redis操作是基于Jedis客户端。Jedis在实现上是直连Redis server的,在多线程环境下,是非线程安全的。基于连接池,为每个Jedis实例增加物...

2020-01-02 09:20:00 340 1

原创 Lettuce 同步操作源码分析

Lettuce 同步Get操作源码分析通过Lettuce官网介绍,我们发现Lettuce通过如下方式,进行同步操作RedisAdvancedClusterCommands<String, String> commands = connection.sync();String name = commands.get("name");System.out.println(name)...

2019-12-22 23:45:12 1009 1

原创 Lettuce 异步操作源码分析

1、如何使用2、异步操作代码

2019-12-22 13:40:54 1277 1

空空如也

空空如也

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

TA关注的人

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