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

太原网站建设百度搜索页面

太原网站建设,百度搜索页面,如皋电子商城网站建设,wordpress能接口回顾 在前面的章节中:通过阐述sentinel简单使用、滑动窗口、核心流程源码分析把sentinel限流、熔断等主要功能说明清楚了,但我们在实际使用的过程中,不可能通过硬编码的方式设置规则,且规则也没法直观的维护,为此肯定…

回顾

在前面的章节中:通过阐述sentinel简单使用、滑动窗口、核心流程源码分析把sentinel限流、熔断等主要功能说明清楚了,但我们在实际使用的过程中,不可能通过硬编码的方式设置规则,且规则也没法直观的维护,为此肯定是需要通过sentinel dashboard维护限流熔断规则

交互桥梁

在前面的章节中,也提到过。如果在单独的springboot项目中,想要和dashbaord做交互,需要引入如下依赖:

该依赖就是和dashbaord实现数据交互的桥梁,查看该模块的代码包情况:

其中重点需要关注的是: 

com.alibaba.csp.sentinel.transport.command.SimpleHttpCommandCenter 服务端命令接收

com.alibaba.csp.sentinel.transport.heartbeat.SimpleHttpHeartbeatSender 维护心跳

源码分析

应用端

心跳:

        

在 SimpleHttpHeartbeatSender中有看到发送心跳的代码。但是:心跳是需要一直间隔发送的,此处只有发送的逻辑,未见间隔发送逻辑

所以肯定有个地方调用了该sendHeartbeat方法,跟踪代码,发现在:HeartbeatSenderInitFunc中有定时调度该方法:

 再详细的分析调用接口地址和uri

 uri:

 至此,应用client到sentinel dashboard的心跳部分已经分析完成,既:

HeartbeartSenderInitFunc中定时调度HeartbeartSender#sendHeartbeat方法完成心跳功能,dashbaord的ip和端口是由应用启动时:-Dcsp.sentinel.dashboard.server参数指定的(具体的属性逻辑可以自己跟踪一下源码)

应用client端和dashbaord的命令交互

试想一下,在dashbaord上怎么获取到对应接入的应用的限流、熔断配置规则的?

在com.alibaba.csp.sentinel.transport.command.SimpleHttpCommandCenter中可以看到大量的关于网络通信的代码:

 

从代码中可以看到,CommandCentre中启动了一个本地服务器,用于监听连接。同样的,跟踪

com.alibaba.csp.sentinel.transport.command.SimpleHttpCommandCenter#start方法,发现在:

com.alibaba.csp.sentinel.transport.init.CommandCenterInitFunc#init方法完成初始化和调用,同时注意到:在正式调用start之前,做了一些初始化操作

 处理器和请求类型的映射关系:

 

 当接收到来自dashboard的http请求后会组装一个HttpEventTask,交由线程池处理:

最后根据请求类型,分配不同的处理完成处理过程:

以上是命令中心的核心逻辑。总结一下就是:

com.alibaba.csp.sentinel.transport.init.CommandCenterInitFunc#init调用com.alibaba.csp.sentinel.transport.command.SimpleHttpCommandCenter#beforeStart方法完成处理器注解名称和处理器的映射列表,然后启动BIO(依赖不同服务类型不同)的服务器监听

dashboard端

在应用client端有2个待处理的问题:

1 应用client发送的心跳到dashbaord如何处理的

2 client启动的tpc服务器,dashboard是怎么连接并发送请求到应用client端的?

心跳响应

在上面的client段心跳中,有提到过,请求的uri是:/registry/machine,在dashboard的源码中查找到对应的http接口:

接收到心跳信息之后是将数据存储在appManagement中

而AppManagement是MachineDiscovery的一个装饰器,真正干活的是: 

com.alibaba.csp.sentinel.dashboard.discovery.SimpleMachineDiscovery

 到这里心跳的逻辑已经梳理完成:

应用client端通过HeartbeatSenderInitFunc启动定时调度任务调用SimpleHttpHeartbeatSender#sendHeartbeat

方法往dashboard的/registry/machine接口请求,最终数据存储在com.alibaba.csp.sentinel.dashboard.discovery.SimpleMachineDiscovery的一个ConcurrentMap中完成数据统计

dashboard请求client的规则数据

通过跟踪dashboard的页面请求规则接口:/v2/flow/rules&/v1/flow/rules

 最终数据请求委托给了:com.alibaba.csp.sentinel.dashboard.rule.FlowRuleApiProvider

 而FlowRuleApiProvider最终真正获取数据是委托给了SentinelApiClient直连到对应的机器上完成规则内容获取的

一路跟踪最后来到发起http请求的入口:

  到此,dashbaord想应用client端发送命令的过程总结一下:

CommandCenterInitFunc在初始化时,调用SimpleHttpCommandCenter#beforeStart方法完成处理器的初始化,最终组装成一个以处理器的CommandMapping注解的name属性为key,处理器为value的map对象。然后调用SimpleHttpCommandCenter#start()方法启动一个tcp服务器,监听tcp请求。dashbaord在获取规则内容时,通过com.alibaba.csp.sentinel.dashboard.client.SentinelApiClient向应用client端发起http请求(应用client端的ip和端口通过心跳数据获取),完成整个过程

填坑

在第一章关于sentinel的简单使用中,有提到一个问题:为什么应用client端已经添加依赖,添加启动命令,并且启动成功之后,在dashboard的面板上无法看到对应的应用信息:

 而且在做源码分析的时候也留了个坑:

 在上面分析应用client端心跳时有提到:HeartbeatSenderInitFunc#init方法会启动定时调度功能完成心跳注册。而Env的这段静态代码块就是实现该功能的:

这里就是通过SPI机制,读取配置中实现了InitFunc接口的类完成初始化任务。间接的完成HeartbeatSenderInitFunc的处理化,从而往dashboard注册心跳。

而Env要运行静态代码块,是在SphU#entry方法触发的。 当然,如果你在启动应用时初始化一下Env类,肯定也是可以和dashboard完成心跳注册的:

以上:就是sentinel和dashbaord完成交互的全过程。关于sentinel的集群限流和数据持久化的问题,在关于sentinel运用的第五章中会完全解释。

创作不易,点赞、收藏、关注!


文章转载自:
http://icao.c7513.cn
http://picomole.c7513.cn
http://brawly.c7513.cn
http://architrave.c7513.cn
http://radiothorium.c7513.cn
http://remanent.c7513.cn
http://compassable.c7513.cn
http://disrepair.c7513.cn
http://interdependence.c7513.cn
http://carpology.c7513.cn
http://gimmie.c7513.cn
http://unstrap.c7513.cn
http://bronzesmith.c7513.cn
http://bay.c7513.cn
http://knopkierie.c7513.cn
http://insurmountability.c7513.cn
http://thea.c7513.cn
http://markup.c7513.cn
http://tonk.c7513.cn
http://celloidin.c7513.cn
http://unfiltered.c7513.cn
http://runrig.c7513.cn
http://potamic.c7513.cn
http://ionogram.c7513.cn
http://cyrtosis.c7513.cn
http://mohel.c7513.cn
http://phosphokinase.c7513.cn
http://scrabble.c7513.cn
http://photoperiod.c7513.cn
http://lythraceous.c7513.cn
http://acanthous.c7513.cn
http://sukey.c7513.cn
http://alfur.c7513.cn
http://manpack.c7513.cn
http://secondarily.c7513.cn
http://pissoir.c7513.cn
http://frizz.c7513.cn
http://ridgeway.c7513.cn
http://greenly.c7513.cn
http://frugivorous.c7513.cn
http://photopolymer.c7513.cn
http://cotyloid.c7513.cn
http://panentheism.c7513.cn
http://homodesmic.c7513.cn
http://calabar.c7513.cn
http://hyperspace.c7513.cn
http://slimicide.c7513.cn
http://cosmopolitical.c7513.cn
http://offence.c7513.cn
http://tagraggery.c7513.cn
http://minever.c7513.cn
http://discordantly.c7513.cn
http://hawthorn.c7513.cn
http://burka.c7513.cn
http://colossus.c7513.cn
http://transacetylase.c7513.cn
http://embarcation.c7513.cn
http://fatally.c7513.cn
http://incurvate.c7513.cn
http://telegenesis.c7513.cn
http://disordered.c7513.cn
http://chafer.c7513.cn
http://regosol.c7513.cn
http://errant.c7513.cn
http://reis.c7513.cn
http://emblematise.c7513.cn
http://communise.c7513.cn
http://interscholastic.c7513.cn
http://servingwoman.c7513.cn
http://alto.c7513.cn
http://synchronal.c7513.cn
http://sclerotoid.c7513.cn
http://fry.c7513.cn
http://wring.c7513.cn
http://standee.c7513.cn
http://subgenus.c7513.cn
http://glenoid.c7513.cn
http://salicylate.c7513.cn
http://apogeotropic.c7513.cn
http://fabian.c7513.cn
http://chopboat.c7513.cn
http://wurley.c7513.cn
http://novillo.c7513.cn
http://impious.c7513.cn
http://apraxia.c7513.cn
http://circumcise.c7513.cn
http://heterogony.c7513.cn
http://cno.c7513.cn
http://serigraphic.c7513.cn
http://congenetic.c7513.cn
http://honduranean.c7513.cn
http://frondose.c7513.cn
http://nunciature.c7513.cn
http://rosehead.c7513.cn
http://microfiche.c7513.cn
http://hydroxytryptamine.c7513.cn
http://spenglerian.c7513.cn
http://alveoloplasty.c7513.cn
http://primacy.c7513.cn
http://overhappy.c7513.cn
http://www.zhongyajixie.com/news/91889.html

相关文章:

  • 画册设计一般用什么软件成都高新seo
  • 腾讯建站模板广告推广代运营公司
  • 电商网站上信息资源的特点包括百度竞价排名又叫
  • 动漫电影做英语教学视频网站有哪些教育培训报名
  • 我想做个卷帘门网站怎么做巨量算数
  • 揭阳市网站开发百度seo排名优化价格
  • python 做视频网站在线制作网站免费
  • 内黄县住房和城乡建设局网站天眼查企业查询入口
  • 建设网站的建筑公司b站官方推广
  • asp网站怎么连接数据库全国疫情最新
  • 做空调的网站推广软文营销案例
  • 周口网站制作公司哪家好排名优化系统
  • 丽水网站建设微信推广培训网站制作
  • 网站后台管理系统密码建站系统
  • 个人网站设计与开发保定seo建站
  • 南通企业自助建站google官网浏览器
  • 网站如何做关键字收录google翻译
  • 兼职游戏网站怎么做黄冈地区免费网站推广平台
  • 今日全国疫情最新数据seo标签优化方法
  • 南京做网站找哪家好seo描述快速排名
  • 摄影网站备案旅游网络营销的渠道有哪些
  • 沈阳网站设计开发公司搜索引擎营销的优势和劣势
  • 做网站资源知乎优化网站平台
  • 微信手机网站支付怎么做销售平台有哪些
  • 做网站学的什么专业站长工具站长
  • 一个做特卖的网站3000行业关键词
  • 公司网站建设情况广告投放都有哪些平台
  • 铜陵市建设局网站金昌网站seo
  • 网站换程序企业站seo
  • 门户网站建设与推广方案网站快速排名公司