当前位置: 首页 > news >正文

如何免费创建自己的网站平台如何做pc网站适配

如何免费创建自己的网站平台,如何做pc网站适配,网站如何建设二级域名代理,wordpress添加广告位插件本篇将重点关注 Sentienl 实时数据收集#xff0c;即 Sentienl 具体是如何收集调用信息#xff0c;以此来判断是否需要触发限流或熔断。Sentienl 实时数据收集的入口类为 StatisticSlot。我们先简单来看一下 StatisticSlot 该类的注释#xff0c;来看一下该类的整体定位。St…本篇将重点关注 Sentienl 实时数据收集即 Sentienl 具体是如何收集调用信息以此来判断是否需要触发限流或熔断。Sentienl 实时数据收集的入口类为 StatisticSlot。我们先简单来看一下 StatisticSlot 该类的注释来看一下该类的整体定位。StatisticSlot专用于实时统计的 slot。在进入一个资源时在执行 Sentienl 的处理链条中会进入到该 slot 中需要完成如下计算任务集群维度计算资源的总统计信息用于集群限流后续文章将详细探讨。来自不同调用方/来源的群集节点的统计信息。特定调用上下文环境的统计信息。统计所有入口的统计信息。接下来用源码分析的手段来详细分析 StatisticSlot 的实现原理。 1、源码分析 StatisticSlot1.1 StatisticSlot entry 详解StatisticSlot#entry StatisticSlot#entryStatisticSlot#entryStatisticSlot#entry代码1首先调用 fireEntry先调用 Sentinel Slot Chain 中其他的处理器执行完其他处理器的逻辑例如 FlowSlot、DegradeSlot因为 StatisticSlot 的职责是收集统计信息。代码2如果后续处理器成功执行则将正在执行线程数统计指标加一并将通过的请求数量指标增加对应的值。下文会对 Sentinel Node 体系进行详细的介绍在 Sentinel 中使用 Node 来表示调用链中的某一个节点每个节点关联一个资源资源的实时统计信息就存储在 Node 中故该部分也是调用 DefaultNode 的相关方法来改变线程数等将在下文会向详细介绍。代码3如果上下文环境中保存了调用的源头(调用方)的节点信息不为空则更新该节点的统计数据线程数与通过数量。代码4如果资源的进入类型为 EntryType.IN表示入站流量更新入站全局统计数据(集群范围 ClusterNode)。代码5执行注册的进入Handler可以通过 StatisticSlotCallbackRegistry 的 addEntryCallback 注册相关监听器。代码6如果捕获到 PriorityWaitException 则认为是等待过一定时间但最终还是算通过只需增加线程的个数但无需增加节点通过的数量具体原因我们在详细分析限流部分时会重点讨论也会再次阐述 PriorityWaitException 的含义。代码7如果捕获到 BlockException则主要增加阻塞的数量。代码8如果是系统异常则增加异常数量。我想上面的代码应该不难理解但涉及到统计指标数据的变化都是调用 DefaultNode node 相关的方法从这里也可以看出Node 将是实时统计数据的直接持有者那毋容置疑接下来将重点来学习 Node为了知识体系的完备性我们先来看一下 StatisticSlot 的 exit 方法。1.2 StatisticSlot exit 详解StatisticSlot#exit代码1成功执行则重点关注响应时间其实现亮点如下计算本次响应时间将本次响应时间收集到 Node 中。将当前活跃线程数减一。代码2执行退出时的 callback。可以通过 StatisticSlotCallbackRegistry 的 addExitCallback 方法添加退出回调函数。代码3传播 exit 事件。接下来我们将重点介绍 DefaultNode即 Sentinel 的 Node 体系持有资源的实时调用信息。 2、Sentienl Node 体系2.1 Node 类体系图我们先简单介绍一下上述核心类的作用与核心接口或核心属性的含义。OccupySupport支持抢占未来的时间窗口有点类似借用“未来”的令牌。其核心方法如下1)long tryOccupyNext(long currentTime, int acquireCount, double threshold)尝试抢占未来的令牌返回值为调用该方法的线程应该 sleep 的时间。1、long currentTime当前时间。2、int acquireCount本次需要申请的令牌个数。3、double threshold设置的阔值。2)long waiting()获取当前已申请的未来的令牌的个数。3)void addWaitingRequest(long futureTime, int acquireCount)申请未来时间窗口中的令牌。4)void addOccupiedPass(int acquireCount)增加申请未来令牌通过的个数。5)double occupiedPassQps()当前抢占未来令牌的QPS。Node持有实时统计信息的节点。定义了收集统计信息与获取统计信息的接口上面方法根据方法名称即可得知其含义故这里就不一一罗列了。StatisticNode实现统计信息的默认实现类。DefaultNode用于在特定上下文环境中保存某一个资源的实时统计信息。ClusterNode实现基于集群限流模式的节点将在集群限流模式部分详细介绍。EntranceNode用来表示调用链入口的节点信息。本文将详细介绍 DefaultNode 与 StatisticNode重点阐述调用树与实时统计信息。DefaultNode 是 StatisticNode 的子类我们先从 StatisticNode 开始 Node 体系的探究。3、StatisticNode 详解3.1 核心类图我们对其核心属性进行一一解读 Metric rollingCounterInSecond new ArrayMetric(SampleCountProperty.SAMPLE_COUNT, IntervalProperty.INTERVAL)每秒的实时统计信息使用 ArrayMetric 实现即基于滑动窗口实现正是上篇文章详细介绍的默认1s 采样 2次。即一个统计周期中包含两个滑动窗口。Metric rollingCounterInMinute new ArrayMetric(60, 60 * 1000, false)每分钟实时统计信息同样使用 ArrayMetric 实现即基于滑动窗口实现。每1分钟抽样60次即包含60个滑动窗口每一个窗口的时间间隔为 1s 。LongAdder curThreadNum new LongAdder()当前线程计数器。long lastFetchTime -1上一次获取资源的有效统计数据的时间即调用 Node 的 metrics() 方法的时间。关于 ArrayMetric 滑动窗口设计与实现原理请参考笔者的另一篇博文源码分析 Alibaba sentinel 滑动窗口实现原理(文末附原理图)接下来我们挑选几个具有代表性的方法进行探究。2.2 addPassRequest增加通过请求数量。即将实时调用信息向滑动窗口中进行统计。addPassRequest 即报告成功的通过数量。就是分别调用 秒级、分钟即对应的滑动窗口中添加数量然后限流规则、熔断规则将基于滑动窗口中的值进行计算。2.3 totalRequest获取当前时间戳的总请求数获取分钟级时间窗口中的统计信息。2.4 successQps成功TPS用秒级统计滑动窗口中统计的个数 除以 窗口的间隔得出其 tps即抽样个数越大其统计越精确。温馨提示上面的方法在学习了上文的滑动窗口设计原理后将显得非常简单大家在学习的过程中可以总结出一个规律什么时候时候使用秒级滑动窗口什么时候使用分钟级滑动窗口。2.5 metrics由于 Sentienl 基于滑动窗口来实时收集统计信息并存储在内存中并随着时间的推移旧的滑动窗口将失效故需要提供一个方法及时将所有的统计信息进行汇总输出供监控客户端定时拉取转储都其他客户端例如数据库方便监控数据的可视化这也通常是中间件用于监控指标的监控与采集的通用设计方法。代码1获取当前时间对应的滑动窗口的开始时间可以对比上文计算滑动窗口的算法。代码2获取一分钟内的所有滑动窗口中的统计数据使用 MetricNode 表示。代码3遍历所有节点刷选出不是当前滑动窗口外的所有数据。这里的重点是方法isNodeInTime。这里只刷选出不是当前窗口的数据即 metrics 方法返回的是“过去”的统计数据。接下来我们再来看看 DefaultNode 相关的几个特性方法。4、DefaultNode 详解4.1 类图DefaultNode 是 StatisticNode 的子类其额外增加的属性如下private ResourceWrapper id资源id即 DefaultNode 才真正与资源挂钩可以将 DefaultNode 看出是调用链中的一个节点并且与资源关联。 private volatile Set Node childList子节点结合。以此来维持其调用链。 private ClusterNode clusterNode集群节点同样为 StatisticNode 的子类表示与资源集群相关的环境。接下来我们将来看一下 DefaultNode 的核心方法。4.2 increaseBlockQpsDefaultNode 的此类方法通常是先调用 StatisticNode 的方法然后再调用 clusterNode 的相关方法最终就是使用在对应的滑动窗口中增加或减少计量值。其他方法也比较简单就不再细看了我们可以通过 DefaultNode 的 printDefaultNode 方法来打印该节点的调用链。本文就介绍到这里了本文详细介绍了 Sentinel 实时数据收集的统一入口 StatisticSlot并且介绍了 Seninel Node 体系即调用链中的每一个节点每一个节点对一个资源的实时统计信息。下一篇将开始重点限流是如何实现的即 FlowSlot 的实现技巧。源码分析 Sentinel 系列专栏连载中已发表目录1、Sentinel 限流与熔断初探(技巧篇)2、滑动窗口实现原理(文末附原理图)3、寻找一把 Sentinel 的钥匙4、调用上下文环境实现原理(图文并茂)
http://wiki.neutronadmin.com/news/310197/

相关文章:

  • 网站开发 策划书微信商城怎么找
  • 网站描述怎样写wordpress安装到的数据库名称
  • 响应式企业网站设计与实现wordpress空间服务商
  • 滕州市建设局网站大连的网页设计公司
  • 重庆高端网站设计公司网页图片不能保存怎么破解
  • 如何在手机上开自己的网站网站建设订制版合同模板
  • wordpress多语言企业网站宣传软文推广
  • 商丘网站重型机械网站开发模版
  • 徐州网站制作做网站优化需要多少钱
  • 可信网站收费吗江苏国龙翔建设公司网站
  • 中国建设部网站查询网顺德网页制作公司
  • 网站建设哪家服务周到全托管跨境电商平台有哪些
  • 网站怎么做后台谷德设计网站
  • 关于戒烟网站怎么做手机有些网站打不开怎么解决
  • 网站建设全包需要多少钱做网站 赚钱
  • 洪洞网站建设汕头搜索引擎优化服务
  • 2017网站开发就业前景农产品网络营销推广方案
  • 网站建设推推蛙培训学校网站系统
  • 做网站和做app哪个贵wordpress图片调方法
  • 上海网站建设网页制福田做网站公司怎么选
  • 如何在云服务器上搭建网站哪家公司网站做得好
  • 网站子站建设企业专属空间官网
  • 上海做网站的公司有哪些免费加客源
  • 永康做网站的北京网约车
  • 做网站的宣传语90设计官方
  • 在网站上使用特殊字体ui的设计网站
  • 教做视频的网站搜索引擎及门户网站介绍总结
  • 英文介绍做美食视频网站工服专业制作
  • 网站建设app开发合同范本怎么做微信点击网站打赏看片
  • 如何制作app网站中国建工网校官网