
微服务
文章平均质量分 87
上班水博客
这个作者很懒,什么都没留下…
展开
-
Sentinel源码分析(五) - 熔断降级
@Author:zxw@Email:502513206@qq.com目录Sentinel源码分析(一) - 初识SentinelSentinel源码分析(二) - Entry构建Sentinel源码分析(三) - 调用链路Sentinel源码分析(四) - 限流规则1.前言在通过了流控插槽后,接下来则是断路器的插槽了。同样的,通过Sentinel的控制台看下断路器的配置有哪些Sentinel 提供以下几种熔断策略:慢调用比例 (SLOW_REQUEST_RATIO):选择以慢原创 2022-02-07 11:38:56 · 1579 阅读 · 4 评论 -
Sentinel源码分析(四) - 限流规则
@Author:zxw@Email:502513206@qq.com目录Sentinel源码分析(一) - 初识SentinelSentinel源码分析(二) - Entry构建Sentinel源码分析(三) - 调用链路1.前言通过上篇文章已经知道FlowSlot节点是用来处理我们流控的实现,以下为添加规则的示例代码private static void initFlowRules() { List<FlowRule> rules = new Array原创 2022-02-07 11:35:17 · 1395 阅读 · 0 评论 -
Sentinel源码分析(三) - 调用链路
@Author:zxw@Email:502513206@qq.com目录Sentinel源码分析(一) - 初识SentinelSentinel源码分析(二) - Entry构建1.前言之前已经分析过Entry的构造流程,我们知道Sentinel关于规则和流控的所有逻辑都在其内部的ProcessorSlotChain调用链路上,首先看看接口提供的方法有哪些。对于链表结构我们清楚,就是不断获取下一个节点,然后进行方法调用。这里该接口提供了两个方法分别为入口entry和出口exit。对于出口原创 2022-02-07 11:33:11 · 1526 阅读 · 0 评论 -
Sentinel源码分析(二) - Entry构建
@Author:zxw@Email:502513206@qq.com目录Sentinel源码分析(一) -初识Sentinel1.前言上篇文章已经讲了资源类CtEntry中的具体属性,那接下来通过一段代码看下Sentinel在初始化Entry的过程中做了哪些操作。public static void main(String[] args) { initFlowRules(); while (true) { Entry entry =原创 2022-02-07 11:31:12 · 583 阅读 · 0 评论 -
Sentinel源码分析(一) - 初识Sentinel
@Author:zxw@Email:502513206@qq.com1.前言再研究Sentinel源码之前,先对Sentinel的理念进行了解。对于网络请求调用可以想象以下两个问题当服务A请求服务B时,服务B响应不及时,导致服务A的线程全部hang死在请求服务B?当服务收到大量网络请求,应用无法支撑时如何解决?以上会导致服务的稳定性降低从而引发系统的崩溃,这对于线上业务来说是不可接受,那么一般的解决方案如下:请求超时:设置请求超时时间请求资源隔离:通过线程池和信号量断路器:当请求异原创 2022-02-07 11:29:34 · 1378 阅读 · 0 评论 -
Feign源码分析(五) - spring对Feign的扩展
@Author:zxw@Email:502513206@qq.com目录Feign源码分析(一) - 初探FeignFeign源码分析(二) - builder构建Feign源码分析(三) - Client调用Feign源码分析(四) - 自定义扩展点1.前言在上一篇文章中已经分析了Feign有哪些常见的扩展点供我们使用,其中比较关键的几个点有如下对Client的封装,整合ribbon和hytrixcontract解析接口注解2.扩展2.1 Client通过之前的分析了原创 2022-01-31 18:38:16 · 414 阅读 · 0 评论 -
Feign源码分析(四) - 自定义扩展点
@Author:zxw@Email:502513206@qq.com目录Feign源码分析(一) - 初探FeignFeign源码分析(二) - builder构建Feign源码分析(三) - Client调用1.模块对于Feign的整体流程已经分析完了,接下来就看看有哪些我们可以自定义的扩展点。首先回顾下Feign中有哪些配置模块。像之前FeignBuilder里还有Options,Retryer等,下面只列了我们主要使用的自定义配置。1.1 Client对于Client只有一原创 2022-01-30 22:47:45 · 996 阅读 · 0 评论 -
Feign源码分析(三) - Client调用
@Author:zxw@Email:502513206@qq.com目录Feign源码分析(一) - 初探FeignFeign源码分析(二) - builder构建1.前言通过前面的文章,已经分析清除了Feign代理类的生成流程。接下来就是看远程调用发起的流程Feign是如何实现的,代码还是跟之前一样,通过connect方法获取到代理对象后,直接调用Feign接口repo@RequestLine("GET /api/v5/repos/{owner}/{repo}/stargazers?原创 2022-01-30 20:30:19 · 1100 阅读 · 0 评论 -
Feign源码分析(二) - builder构建
@Author:zxw@Email:502513206@qq.com目录Feign源码分析(一) - 初探Feign1.前言通过上篇文章,我们得知了Feign类中主要的元数据,接下来就看下Feign是如何为我们生成代理类的。可以看到调用target方法时,传入了Class参数Gitee.Class,那么Feign是通过接口代理的方式来生成实现类的,interface Gitee { @RequestLine("GET /api/v5/repos/{owner}/{repo}原创 2022-01-30 20:28:29 · 2293 阅读 · 0 评论 -
Feign源码分析(一) - 初探Feign
@Author:zxw@Email:502513206@qq.com1.前言在springcloud的微服务体系中,有这么一个框架Feign能够提供我们调用远程服务就像调用本地服务一样,我们先抛开spring对Feign的封装,而是直接从Feign入手来看看Feign的内部组成与调用逻辑是怎么样的,那么就从如下我写的一个访问Gitee调用的代码入手看Feign。static Gitee connect() { final Decoder decoder = new Gson原创 2022-01-30 20:24:30 · 1154 阅读 · 0 评论 -
Sentinel源码解析 - 限流算法种类简介
@author:zxw@email:502513206@qq.com@ Jishou University1.前言限流可以说是高并发中比较重要的一个问题了,面试的时候也经常有关此类的问题,刚好最近在学习限流算法时,苦于找不到好的实现,想起以前用过的sentinel框架里面就有限流的功能,所以顺道来学习下sentinel中限流的实现。2.源码解析我们先来看看Sentinel怎么配置限流策略,在FlowRule对象中,通过配置controlBehavior属性就可以指定限流策略了,默认使用默认的限原创 2021-01-16 10:21:38 · 744 阅读 · 2 评论 -
Seata整合nacos
author:zxwemail:502513206@qq.com@ Jishou University1.前言之前一直使用的是seata+eureka的方式来使用,最近自己在家的时候忽然想用nacos来试试,毕竟之前没怎么用过。使用后发现和eureka的用法还是差别蛮大的,折腾了一天才把项目跑起来,以此来记录下使用方法。2.使用在使用前当然得先下载相关的包,这边说下我使用的版本nacos:https://gitee.com/mirrors/Nacos?_from=gitee_search 我原创 2020-12-06 13:38:25 · 1449 阅读 · 1 评论 -
seata启动教程
author:zxwemail:502513206@qq.com@ Jishou University1.前言最近在学习seata框架的使用,但是花了很久时间才把项目搭起来,主要是第一次使用要踩挺多坑的。比如在我们的业务项目要在resource目录下添加file.config和registry.conf两个配置文件,作为第一次使用的萌新确实很难发现,官网上也没有详细的教程,还有一个最主要的错误就是Could not found property service.vgroup_mapping..原创 2020-10-20 14:30:18 · 5595 阅读 · 0 评论 -
spring-scheduled源码解析
@author:zxw@email:502513206@qq.com@ Jishou University1.前言最近在学习xxl-job的源码,其实对于xxl-job的使用方式并不太喜欢,所以看了源码后想自己扩展第三方包对xxl-job进行扩展,不过没有想到的比较好的实现方法,先是参考了eureka的扩展,不过感觉eureka的那套属于服务注册那类好像用在xxl-job的扩展上并不太合适,所以又想到了之前使用的spring提供的定时任务注解@Scheduled,于是顺便看看源码学习下spri.原创 2020-09-21 17:02:37 · 574 阅读 · 0 评论 -
xxl-job源码解析系列 - 执行器分析
@author:zxw@email:502513206@qq.com@ Jishou Universityxxl-job:https://www.xuxueli.com/xxl-job1.前言我们知道xxl-job中有两个概念,分别为执行器和调度器而这两个是解耦合,先让我们看看执行器相关的源码2.源码分析先简单说下项目中使用xxl-job的流程,引入xxl-core包,然后配置一个XxlJobConfiguration的配置类,注入相关xxl的信息。@Component@Slf4.原创 2020-09-21 11:38:17 · 690 阅读 · 0 评论 -
xxl-job源码解析系列 - 源码构建
@author:zxw@email:502513206@qq.com@ Jishou Universityxxl-job:https://www.xuxueli.com/xxl-job1.前言最近项目上使用到了xxl-job这个分布式任务调度的框架,所以也借此机会了解下该项目的使用原理。对于任何一个框架和开源项目都是建立在实际需求上而开发和使用。毕竟开发还是要创造价值为主,而不是什么炫酷就用什么。包括像alibaba最近比较火爆的开源项目nacos,sentinel等,其都是为了解决某些.原创 2020-09-11 09:50:12 · 242 阅读 · 0 评论 -
eureka源码系列 - 设计模式在eureka中的使用
eureka源码系列 - 设计模式@author:zxw@email:502513206@qq.com@ Jishou University1.前言看了eureka的源码后,在eureka中也运用了一些设计模式,就让我们学习下设计模式在项目中的实际运用2.Builder模式在eureka中,实例的信息保存在InstanceInfo对象中,而InstanceInfo和EurekaRegistration都是通过Builder模式构造出来的,实例代码如下InstanceInfo publi原创 2020-09-07 15:38:26 · 509 阅读 · 0 评论 -
Nacos源码分析系列 - 服务续租
Nacos源码分析系列 - 服务检测author:zxwemail:502513206@qq.com@ Jishou University@Nacos:https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html1.前言之前分析了nacos的服务注册流程,接下来看看nacos的心跳检测机制。2.面试题nacos默认每隔多久发送一次心跳检测?// 5000毫秒DEFAULT_HEART_BEAT_INTERVAL = Time原创 2020-08-27 15:08:13 · 419 阅读 · 0 评论 -
Nacos源码分析系列 - 服务注册
Nacos源码分析系列 - 服务注册Author:zxwSchool:吉首大学email:502513206@qq.com@Nacos:https://nacos.io/zh-cn/docs/quick-start-spring-cloud.html1.前言nacos官方有集成好的nacos-server包,copy下来只需要运行其中的startup.bat文件即可启动注册中心,但是这边我们从源码的角度入手注册中心,所以将源码包拷贝下来,通过手动启动的方式启动nacos注册中心。首先获取到原创 2020-08-26 17:35:55 · 446 阅读 · 0 评论 -
eureka源码系列 - 注册中心
eureka源码系列 - 注册中心@Author:zxw@email:502513206@qq.com@school:吉首大学1.前言之前分析过eureka client的相关源码,不过看了一番代码后,还是觉得从eureka server上入手会比较好,这样某些地方也能理的比较顺,兜兜转转一圈后,现在从eureka server的启动源码进行一个分析。2.源码解析按照惯例,从注解入手@EnableEurekaServer,其中注入了一个EurekaServerMarkerConfigurat原创 2020-08-22 15:35:16 · 251 阅读 · 0 评论 -
eureka源码系列 - 服务下线
eureka源码系列 - 服务下线@Author:zxw@email:502513206@qq.com@school:吉首大学1.前言在eureka中服务既然有上线的概念当然就有下线的概念,服务下线分为两种方式,一种是通过api调用手动下线,另一种是直接关闭eureka服务,然后eureka检测不到响应后会自动下线2.强行中止程序主要是通过DiscoveryClient中的定义好的eurekaTransport中取出对应的client发起远程调用PeerReplicationResourc原创 2020-08-21 11:11:06 · 321 阅读 · 0 评论 -
eureka源码系列 - 续租流程
eureka源码系列 - 续租流程@Author:zxw@email:502513206@qq.com@school:吉首大学1.前言在eureka中有3个定时任务,分别为心跳检测heartbeatExecutor,注册表拉取cacheRefreshExecutor,实例信息更新instanceInfoReplicator。2.拉取注册中心服务起点是由CacheRefreshThread线程进行调用DiscoveryClient.refreshRegistry()该方法的主要作用就是在拉取注原创 2020-08-19 16:55:58 · 301 阅读 · 0 评论 -
eureka源码系列 - 配置类
eureka源码系列 - 配置类@Author:zxw@email:502513205@qq.com@school:吉首大学此文为该鸭子上架,不建议观看,后续有时间在对文章总结优化1.前言对于我们刚学习eureka入门教程的同学来说,最常做的就是在配置文件上填写eureka相关参数信息,然后配合一个注解就成功启动了eureka服务,所以了解eureka的配置文件相关参数以及默认值也是非常重要的,就让我们一起打开源码看看2.面试题最近我在面试一家公司的时候,因为简历上有写springcl原创 2020-08-11 11:42:12 · 224 阅读 · 0 评论 -
eureka源码系列 - 启动过程
eureka源码系列 - 启动过程@Author:zxw@email:502513205@qq.com@school:吉首大学此文为该鸭子上架,不建议观看,后续有时间在对文章总结优化1.前言最近更换了公司,所使用的技术也到了微服务这块,目前所采用的架构为springcloud微服务全家桶,所以也深入研究下springcloud相关组件的源码。今天讲的为eureka的启动过程2.源码解析刚开始看源码其实也挺懵逼的,不知道从何处看起,从网上搜的学习资料也零零散散,并不太适合自己去看。但是想原创 2020-08-11 10:27:56 · 670 阅读 · 0 评论 -
java - 自己动手实现负载均衡算法
ribbon-负载均衡算法@Author:zxw@email:502513205@qq.com@school:吉首大学1. 前言 最近在学习ribbon时了解到有一个负载均衡的机制,代码如下,相信很多人都使用过。@LoadBalanced@Beanpublic RestTemplate restTemplate(){ return new RestTemplate();}2.轮询算法轮询算法的重点还是在于保持顺序性,在源码中保持顺序的方法是使用一个atomicInteg原创 2020-07-24 22:43:06 · 444 阅读 · 0 评论