微服务
文章平均质量分 94
Ethan_199402
这个作者很懒,什么都没留下…
展开
-
logback源码阅读(四) 为什么日志系统初始化了两次?bootstrapContext
bootstrap和application有什么区别原创 2022-07-31 21:41:10 · 603 阅读 · 0 评论 -
Sentinel源码(六)ParamFlowSlot热点参数限流
Sentinel源码(三)slot解析中我们还遗留了最后一个slot,ParamFlowSlot没有讲解,本文着重探究sentinel如果做热点参数限流首先区别于其他的slot,热点参数限流并非在 Sentinel 的 core 模块中实现的,而是在扩展模块中实现的。主要是根据同一资源不同的参数进行限流。之前的限流策略都是针对资源维度的,热点参数限流则将维度细化到资源的某个参数上限流类型热点参数限是流通过对请求的第几个参数以及参数值的流量进行统计,超过阈值触发流控的一种方式sentinel提供两种原创 2022-02-24 13:55:45 · 1004 阅读 · 0 评论 -
Sentinel源码(五)FlowSlot以及限流控制器源码分析
在Sentinel源码(三)slot解析中,我们遗留了FlowSlot的源码还未分析,本文着重分析,如果没有读过之前文章的同学建议先去了解一下,本文对于基本知识不再阐述概要FlowSlot是插槽链的核心:结合从之前的插槽(NodeSelectorSlot、ClusterNodeBuilderSlot 和 StatisticSlot)收集的运行时统计信息,FlowSlot 将使用预先设置的规则来决定是否应该阻止传入的请求。(插槽链相关知识在本文开头有链接)通过本类我们知道:(1)如果触发任何规则,S原创 2022-02-20 22:03:42 · 589 阅读 · 0 评论 -
Sentinel源码(三)slot解析
回顾在Sentinel源码(二)入口方法分析中,我们遗留了插槽链相关的内容,本文将详细解析这块内容关于插槽链:在sentinel-core包下面默认提供了8个插槽连(com.alibaba.csp.sentinel.slotchain.ProcessorSlot)# Sentinel default ProcessorSlotscom.alibaba.csp.sentinel.slots.nodeselector.NodeSelectorSlotcom.alibaba.csp.sentinel.s原创 2022-02-20 12:01:36 · 1058 阅读 · 0 评论 -
Sentinel源码(四)(滑动窗口流量统计)
在Sentinel源码(三)slot解析中,我们讲到:StatisticSlot是专用于实时统计的处理器插槽。进入这个slot时,我们需要单独统计以下信息:ClusterNode:资源ID的集群节点的总统计。OriginNode:来自不同callersorigins的集群节点的统计信息。DefaultNode:特定上下文中特定资源名称的统计信息。所有入口的总和统计。我们知道了entry方法中下面的代码是线程数和流量统计// Request passed, add thread count原创 2022-02-20 11:57:36 · 764 阅读 · 0 评论 -
Sentinel源码(二)入口方法分析
写在前面我们在上篇文中章已经分析了Sentinel是怎么让SentinelResource注解生效的,保留了一个疑问,每个被SentinelResource注解的方法都会在环绕通知中先调用一下如下代码entry = SphU.entry(resourceName, resourceType, entryType, pjp.getArgs()),本篇继续分析这个entry方法,分析这个方法之前,首先要了解这几个概念Resourceresource是sentinel中最重要的一个概念,sentine原创 2022-02-13 21:30:32 · 1178 阅读 · 0 评论 -
Sentinel源码(一)SentinelResourceAspect
本文版本:1.8.0SentinelResourceAspectSentinel是做什么的就不详细介绍了,有需要的请点击注解支持接下来就从SentinelResourceAspect开始探索Sentinel我们知道,只要在方法上加上SentinelResource,就可以配置一些限流熔断策略,那么就要看这个注解被用在源码的什么地方@Aspectpublic class SentinelResourceAspect extends AbstractSentinelAspectSupport {原创 2022-02-10 11:42:02 · 748 阅读 · 0 评论 -
Feign源码之调用流程
我们已经通过Feign源码之FeignClientFactoryBean创建动态代理知道了Feign的动态代理是怎么生成的了,那么现在就可以来看看feign是怎么来调用的回归上篇文章的build方法public Feign build() { SynchronousMethodHandler.Factory synchronousMethodHandlerFactory = new SynchronousMethodHandler.Factory(client, retr原创 2022-01-04 14:43:37 · 803 阅读 · 0 评论 -
Feign源码之FeignClientFactoryBean创建动态代理
在上一篇文章《Feign源码之@EnableFeignClients》通过registerClientConfiguration我们知道了每一个client的configuration都是作为FeignClientSpecification的一个属性,真正被注入的类型是FeignClientSpecification。registerFeignClients方法注册的bean是FeignClientFactoryBean类型,还不是feign最终使用的动态代理对象。本文则一探究竟,这两个类到底有什么原创 2021-12-29 10:17:44 · 1580 阅读 · 0 评论 -
Feign源码之@EnableFeignClients
注解属性先看一下@EnableFeignClients有5个属性@Retention(RetentionPolicy.RUNTIME)@Target(ElementType.TYPE)@Documented@Import(FeignClientsRegistrar.class)public @interface EnableFeignClients { /** * Alias for the {@link #basePackages()} attribute. Allows for mo原创 2021-12-27 11:03:20 · 2134 阅读 · 0 评论 -
ribbon源码之服务列表过滤器以及ZoneAwareLoadBalancer
在LoadBalancer的学习中,我们最后还看到了filter的身影,接下来就在本文一探究竟为什么要了解?因为在运行过程中,并不是每台Server一直都持续可用,另外多台Server很有可能分部在不同的可用区zone,而很多时候我们希望是获取到同区域的机器以加速访问,这些都是交由由ServerListFilter来完成的。回顾一下代码:public void updateListOfServers() { List<T> servers = new ArrayList&原创 2021-12-19 10:07:37 · 802 阅读 · 0 评论 -
Ribbon源码之负载均衡器ILoadBalancer
在前面的文章中已经了解了ribbon的基本配置,各种组件的作用,负载均衡策略以及如何配合注册中心实现服务的注册发现,现在还遗留一个问题,服务的新增和更新ribbon到底是如何来支持的呢?ILoadBalancer定义软件负载均衡器操作接口,动态更新一组服务列表及根据指定算法从现有服务器列表中选择一个服务。public interface ILoadBalancer { /** * Initial list of servers. * This API also serves to add原创 2021-12-16 10:57:16 · 1605 阅读 · 0 评论 -
ribbon源码分析之七种负载均衡策略
源码版本为2.1.0RELEASE书接上文,接下来详细介绍LoadBalancerClientpublic interface LoadBalancerClient extends ServiceInstanceChooser { /** * Executes request using a ServiceInstance from the LoadBalancer for the specified * service. * @param serviceId The service I原创 2021-11-11 16:38:35 · 854 阅读 · 0 评论 -
ribbon源码分析之LoadBalancerAutoConfiguration
在上一博客ribbon源码分析之自定义配置、全局配置中我们已经初步了解了rebbon是如何自动配置如何进行自定义配置@Configuration@Conditional(RibbonAutoConfiguration.RibbonClassesConditions.class)@RibbonClients@AutoConfigureAfter(name = "org.springframework.cloud.netflix.eureka.EurekaClientAutoConfiguration"原创 2021-11-08 14:16:02 · 379 阅读 · 0 评论 -
EnableDiscoveryClient没用了?Zookeeper是怎么和springboot配合做服务注册中心的?
在Spring Cloud源码分析:EnableDiscoveryClient与EnableEurekaClient的区别(Edgware版本)提到:在Spring Cloud的Dalston及其之前的版本中:从2014年的Spring Cloud 1.0.0.RC1版本开始,官方就推荐使用EnableDiscoveryClient来取代EnableEurekaClient;EnableEurekaClient源码中使用了注解EnableDiscoveryClient,因此如果要使用eureka的注原创 2021-08-17 19:24:10 · 1477 阅读 · 0 评论