
微服务入门到入土
文章平均质量分 93
微服务系列
秃秃爱健身
熟读JDK、SSM、SpringCloud生态源码,对源码有独特的见解,可以写出让大多数人看懂的源码分析文章。
展开
-
Java生态/Redis中如何使用Lua脚本
mac上安装lualua语法简介Java中如何使用Lua脚本Redis中如何使用lua脚本原创 2023-03-06 21:32:23 · 13713 阅读 · 88 评论 -
从SpringBoot生命周期来看服务注册到Eureka/Nacos的时机
从SpringBoot生命周期来看服务注册到Eureka、Nacos的时机WebServerInitializedEvent、SmartLifecycle原创 2023-02-28 08:44:49 · 4544 阅读 · 42 评论 -
Seata json decode exception, Cannot construct instance of `java.time.LocalDateTime` 报错原因/解决方案最全汇总版
com.fasterxml.jackson.databind.exc.InvalidDefinitionException: Cannot construct instance of `java.time.LocalDateTime` (no Creators, like default constructor, exist): cannot deserialize from Object value (no delegate- or property-based Creator)原创 2022-08-05 19:48:51 · 4444 阅读 · 17 评论 -
Seata Failed to get available servers: endpoint format should like ip:port 报错原因/解决方案汇总版(看完本文必解决问题)
seata问题原因/解决方案汇总(看完本篇必解决) [eoutChecker_2_1] i.s.c.r.netty.NettyClientChannelManager : Failed to get available servers: endpoint format should like ip:portjava.lang.IllegalArgumentException: endpoint format should like ip:port.........原创 2022-08-05 06:39:46 · 17673 阅读 · 22 评论 -
can not get cluster name in registry config ‘service.vgroupMapping.xx‘, please make sure registry
一、前言最近在公司遇到分布式事务嵌套子事务的问题,用的也是seata,于是就准备自己研究一下seata。在搭建项目的过程中,发现一直无法将服务注册到Seata服务中,报错如下:can not get cluster name in registry config ‘service.vgroupMapping.my-tx-group’, please make sure registry config correct从日志来看,每10s疯狂报错:我们下面从两种模式:file和nacos进行介绍;原创 2021-12-05 10:55:52 · 42659 阅读 · 6 评论 -
手撕漏桶&令牌桶限流算法(Java版)
手撕漏桶限流算法、手撕令牌桶限流算法原创 2022-08-17 07:00:00 · 2762 阅读 · 8 评论 -
【云原生】服务限流熔断概述、常见限流算法
服务雪崩是什么?服务熔断降级的解决方案?为什么要限流?常见限流算法:固定窗口算法、滑动窗口算法、漏桶算法、令牌桶算法;几种限流算法的对比?原创 2022-08-07 22:30:59 · 1460 阅读 · 2 评论 -
【微服务】17 Cloud 2020.0.X版本开始OpenFeign底层不再使用Ribbon
藁本的OpenFeign底层不再使用Ribbon了原创 2022-07-24 21:29:12 · 3710 阅读 · 63 评论 -
【微服务】16 图文源码剖析OpenFeign处理请求流程
1、源码剖析OpenFeign的动态代理如何接收和处理请求?2、OpenFeign的LoadBalancerFeignClient的工作流程?3、OpenFeign如何与Ribbon、Eureka整合到一起?4、OpenFeign如何负载均衡选择出一个Server?5、OpenFeign最终发送的请求地址如何拼接出来?6、OpenFeign如何将返回的JSON字符串解码为JavaBean?.........原创 2022-07-10 08:45:35 · 3892 阅读 · 48 评论 -
nested exception is feign.RetryableException: Incomplete output stream executing POST http://
nested exception is feign.RetryableException: Incomplete output stream executing POST http://原创 2022-07-09 17:25:55 · 3684 阅读 · 1 评论 -
【微服务】15 SpringCloud之深度源码剖析OpenFeign如何为FeignClient生成动态代理类
1、OpenFeign如何为FeignClient生成动态代理类?2、SpringMvcContract组件如何解析FeignClient中标注了SpringMVC注解的方法?原创 2022-07-07 21:16:39 · 2529 阅读 · 21 评论 -
【微服务】14 深度源码剖析OpenFeign如何扫描所有的FeignClient
1、源码剖析SpringCloud之OpenFeign如何扫描出所有的FeignClient?2、@FeignClient注解详解原创 2022-07-07 07:01:49 · 4643 阅读 · 143 评论 -
【微服务】13 源码剖析SpringBoot启动流程中开启OpenFeign的入口
1、源码深度剖析SpringBoot启动流程中开启OpenFeign的入口?2、Spring的ImportBeanDefinitionRegistrar的作用、详解?3、源码剖析SpringBoot中如何使用的ImportBeanDefinitionRegistrar?原创 2022-07-06 12:12:49 · 1418 阅读 · 22 评论 -
【微服务十二】SpringCloud之OpenFeign的核心组件(Encoder、Decoder、Contract)
SpringCloud之OpenFeign核心组件Encoder、Decoder、Contract默认实现原创 2022-07-03 20:21:38 · 2768 阅读 · 1 评论 -
【微服务十一】SpringCloud之OpenFeign的常用配置(超时、数据压缩、日志、重试等)
1、SpringCloud之OpenFeign的常用配置2、OpenFeign超时配置?3、OpenFeign数据压缩配置?4、OpenFeign请求日志配置?原创 2022-07-03 09:11:57 · 7972 阅读 · 23 评论 -
【云原生&微服务十】SpringCloud之OpenFeign实现服务间请求头数据传递(OpenFeign拦截器RequestInterceptor的使用)
1、SpringCloud之OpenFeign实现服务间请求头数据传递?2、OpenFeign拦截器RequestInterceptor的使用?3、使OpenFeign拦截器RequestInterceptor全局/部分生效的四种方式?原创 2022-06-30 08:25:30 · 6401 阅读 · 22 评论 -
【云原生&微服务九】SpringCloud之Feign实现声明式客户端负载均衡详细案例
SpringCloud中集成Feign、Eureka实现声明式客户端负载均衡详细案例、具体到你全程复制粘贴就可以跑起来demo原创 2022-06-28 08:17:06 · 4648 阅读 · 169 评论 -
【微服务七】Ribbon负载均衡策略之BestAvailableRule源码深度剖析
1、Ribbon负载均衡策略BestAvailableRule源码剖析2、Ribbon BestAvailableRule 如何获取实例的并发连接数?3、Ribbon BestAvailableRule中服务实例的并发数是如何维护的?4、Ribbon BestAvailableRule如何判断实例是否被tripped?..................原创 2022-06-21 12:44:57 · 2444 阅读 · 49 评论 -
【云原生&微服务八】Ribbon负载均衡策略之WeightedResponseTimeRule源码剖析(响应时间加权)
1、Ribbon负载均衡策略之WeightedResponseTimeRule源码剖析2、WeightedResponseTimeRule如何计算权重?3、 WeightedResponseTimeRule如何动态更新权重?4、WeightedResponseTimeRule中的权重区间如何算?原创 2022-06-23 08:26:29 · 2422 阅读 · 132 评论 -
【微服务六】Ribbon负载均衡策略之轮询(RoundRobinRule)、重试(RetryRule)
1、Ribbon RoundRobinRule实现方式2、Ribbon RetryRule实现方式原创 2022-06-20 11:49:30 · 1617 阅读 · 4 评论 -
【云原生&微服务五】Ribbon负载均衡策略之随机ThreadLocalRandom
1、RandomRule随机负载均衡算法内部如何实现的?2、RandomRule中为什么不使用Random做随机算法?3、ThreadLocalRandom如何使用?4、ThreadLocalRandom获取随机值的原理?原创 2022-06-20 06:30:00 · 2210 阅读 · 130 评论 -
【云原生&微服务四】SpringCloud之Ribbon和Erueka/服务注册中心的集成细节(获取服务实例列表、动态更新服务实例信息、负载均衡出一个实例、IPing机制判断实例是否存活)
1、Ribbon如何与eureka整合,通过eureka client获取到对应注册表?2、Ribbon如何持续获取最新的服务实例信息?3、默认Ribbon如何选出一个Server?4、Ribbon如何发送一个网络HTTP请求?5、Ribbon如何用IPing机制动态检查服务实例是否存活?.........原创 2022-06-16 07:04:33 · 2207 阅读 · 146 评论 -
【云原生&微服务三】SpringCloud之Ribbon是这样实现负载均衡的(源码剖析@LoadBalanced原理)
1、为什么给RestTemplate类上加上了@LoadBalanced注解就可以使用Ribbon的负载均衡?2、SpringCloud是如何集成Ribbon的?3、Ribbon如何作用到RestTemplate上的?4、如何获取到ILoadBalancer?原创 2022-06-14 06:45:01 · 3746 阅读 · 125 评论 -
【云原生&微服务二】SpringCloud之Ribbon自定义负载均衡策略(含Ribbon核心API)
1、SpringCloud之Ribbon自定义负载均衡策略,2、SpringCloud之Ribbon自定义服务实例心跳检查策略,3、ILoadBalancer、IRule、IPing介绍原创 2022-06-08 07:23:01 · 2826 阅读 · 60 评论 -
【云原生&微服务一】SpringCloud之Ribbon实现负载均衡详细案例(集成Eureka、Ribbon)
SpringCloud之Ribbon实现负载均衡详细案例SpringCloud集成Eureka、Ribbon实现客户端负载均衡原创 2022-06-06 07:57:59 · 3587 阅读 · 111 评论 -
SpringBoot、SpringCloud、SpringCloudAlibaba的版本对应关系
1、查找SpringBoot和SpringCloud版本对应关系2、查找SpringCloud和SpringCloud Alibaba版本对应关系3、查找SpringBoot和SpringCloud Alibaba版本对应关系原创 2022-06-01 08:59:37 · 11224 阅读 · 77 评论 -
使用Dubbo的RpcContext居然那么多坑
使用Dubbo的RpcContext居然那么多坑!Dubbo RpcContext如何使用?Dubbo RpcContext实现原理?原创 2022-04-12 18:44:42 · 5412 阅读 · 1 评论 -
详解如何自定义Dubbo Filter(含dubbo2.7.X及以上版本和2.6.X及以下版本两种写法)
详解如何自定义Dubbo Filter(含dubbo2.7.X及以上版本和2.6.X及以下版本两种写法)原创 2022-04-09 11:49:04 · 3502 阅读 · 0 评论 -
图文详述Eureka的缓存机制/三级缓存
一、三级缓存概要1、三级缓存分别是什么?一级缓存(注册表)ConcurrentHashMap二级缓存(ReadWriteMap)guava#LoadingCache三级缓存(ReadOnlyMap)ConcurrentHashMap注册一个服务实例向注册表中写入服务实例信息,并使得二级缓存失效寻找一个服务从三级缓存中找,如果有则返回,如果没有则去二级缓存拿并更新,如果二级缓存已经失效,触发guava的回调函数从注册表中同步。数据同步定时器每 30s 从二级缓存向三级缓存同步数据二级缓存原创 2022-01-10 19:19:15 · 9057 阅读 · 25 评论 -
Spring ApplicationContext的事件机制是什么?在Nacos中如何应用?
ApplicationContext.publishEvent(事件机制)是Spring提供的解耦的一种方式,采用`观察者设计模式`;我们可以使用 MQ或 线程池 来代替它。> * ApplicationContext中的事件处理是通过`ApplicationEvent`事件类和`ApplicationListener`事件监听器接口提供的;>* 事件机制的3要素:事件发布者(`ApplicationContext`)、事件(`ApplicationEvent`)、事件监听器(`EventListene原创 2022-01-05 18:04:12 · 2076 阅读 · 0 评论 -
图文源码分析Nacos如何实时感知服务提供者实例信息/个数的变更?
一、前言在前面我们分析完了Nacos服务注册、服务发现的原理;当研究完Nacos作为服务配置中心时,是通过定时任务 + 长轮询的方式实现配置信息的准实时动态刷新;突发奇想那么服务实例信息变更,作为服务的消费者如何实时感知?所以有了今天这篇文章。原创 2022-01-06 07:33:35 · 3418 阅读 · 0 评论 -
这样在idea中引入gradle项目/Eureka源码不用踩坑
源码/gradle下载1、下载Eureka源码地址:https://github.com/Netflix/eureka。2、下载Gradle地址:https://services.gradle.org/distributions/。我本机下载的6.9.1版本,大家按需下载,或者直接使用6.9.1版本;1)配置Gradle仓库原创 2021-12-31 17:41:39 · 1407 阅读 · 0 评论 -
sentinel-1.8版本找不到UrlBlockHandler接口,如何自定义错误页面?
一、背景最近在学习springcloud alibaba时候,模拟使用sentinel进行流量管理控制,在自定义错误页面时,网上很多使用老版本sentinel的教程,都是通过继承UrlBlockHandler这个方法来实现。然而我的sentinel版本是1.8,其中找到这个接口。最后发现官方将UrlBlockHandler接口改成了BlockExceptionHandler接口。二、解决方案实现BlockExceptionHandler接口import com.alibaba.csp.sentine原创 2021-07-11 17:13:08 · 899 阅读 · 0 评论 -
Nacos优先使用本地Nacos配置文件验证,源头LocalConfigInfoProcessor.getFailover()
一、前言分析完SpringBoot启动加载Nacos配置的流程,我们注意到它会优先使用LocalConfigInfoProcessor.getFailover()加载Nacos的本地配置文件,文件路径如下:user.home/nacos/config/serverName_nacos/data/config-data-tenant/tenant/group/dataId其中serverName的构成如下:fixed-IP_Port-namespaceId_nacos上述文件路径构成中,类似原创 2021-12-20 19:25:24 · 4377 阅读 · 2 评论 -
图文详述Nacos服务发现源码分析
一、Nacos服务发现流程图相信大家看完下面源码分析,是可以梳理出来的;可以参考:Nacos服务注册源码分析流程图二、找源码入口spring-cloud-commons包中定义了一套服务发现的规范,核心逻辑在DiscoveryClient接口中;集成Spring Cloud实现服务发现的组件都会实现DiscoveryClient接口;nacos-discovery包下的NacosDiscoveryClient类实现DiscoveryClient接口。三、客户端服务发现1、当nacos客户端原创 2021-12-19 20:54:05 · 2726 阅读 · 2 评论 -
图文详述Nacos服务注册源码分析
含泪两万字图文并茂梳理源码原创 2021-12-19 00:10:55 · 2945 阅读 · 4 评论 -
Nacos高可用集群搭建排坑版
一、环境准备1、项目下载/服务配置官方下载地址:https://github.com/alibaba/nacos/releases/download/2.0.3/nacos-server-2.0.3.zip1)解压上述压缩包,进入到conf目录,修改配置(外部MySQL连接),如下:### 端口号server.port=8848### Specify local server's IP,本机启动nacos服务IPnacos.inetutils.ip-address=127.0.0.1##原创 2021-12-13 21:53:02 · 609 阅读 · 0 评论 -
图文详述Nacos配置中心使用:应用间配置共享、扩展配置文件加载优先级、新老版本差异
一、前言项目上使用Nacos做为配置中心,以前使用的是Concul;现在准备详细梳理一下Nacos做为配置中心的配置文件加载优先级问题,因为以前在使用Consul的时候,因为配置文件优先级问题踩过大坑。二、实战1、集成Nacos配置中心1) POM中引入SpringCloud、Spring Cloud Alibaba依赖,记得做好maven版本管理、否则存在版本问题一地鸡毛的场景。<properties> <spring-boot.version>2.3.7.REL原创 2021-12-08 20:22:54 · 6170 阅读 · 8 评论