- 博客(14)
- 收藏
- 关注
原创 soul 源码分析 —— 插件解析之ratelimiter插件
说明ratelimiter 是用来限流的使用网关引入:<dependency> <groupId>org.dromara</groupId> <artifactId>soul-spring-boot-starter-plugin-ratelimiter</artifactId> <version>${project.version}</version></dep
2021-02-06 14:54:16
108
原创 soul 源码分析 —— 插件解析之monitor插件
说明monitor插件是网关用来监控自身运行状态(JVM相关),请求的响应迟延,QPS、TPS等相关metrics。设计图使用后台配置:在 monitor 插件中新增以下配置{"metricsName":"prometheus","host":"localhost","port":"9191","async":"true"}port : 为暴露给 prometheus服务来拉取的端口host : 不填写则为soul网关的host.async :“true” 为异步埋点, fals
2021-02-04 23:55:00
373
原创 soul 源码分析 —— 插件解析之sign插件
sign签名认证支持 http服务、dubbo服务、springcloud服务进入主方法:@Override protected Mono<Void> doExecute(final ServerWebExchange exchange, final SoulPluginChain chain, final SelectorData selector, final RuleData rule) { Pair<Boolean, String> result
2021-02-03 18:22:05
163
原创 soul 源码分析 —— 插件解析之resilience4j插件
首先进入到Resilience4J的主方法:protected Mono<Void> doExecute(final ServerWebExchange exchange, final SoulPluginChain chain, final SelectorData selector, final RuleData rule) { final SoulContext soulContext = exchange.getAttribute(Constants.CONTEXT);
2021-02-01 18:26:51
258
原创 soul 源码分析 —— 插件解析之sentinel插件
sentinel流控设置sentinel降级的设置对应soul中sentinel插件的设置流控:是否开启流控(1或0) :是否开启sentinel的流控阈值类型 : QPS 或线程数流控效果 : 快速失效、Warm Up、排队等待单机阈值 : 设置单机阈值数熔断:是否开启熔断(1或0) :是否开启sentinel熔断。熔断降级策略: RT、异常比例、异常数熔断阈值:阈值(RT数值)熔断时间窗口: 降级的时间,单位为 s。熔断URI: 熔断后的降级uriSentinelP
2021-01-30 17:58:22
343
原创 soul 源码分析 —— 插件解析之hystrix插件
hystrix作用资源隔离:包括线程池隔离和信号量隔离,限制调用分布式服务的资源使用,某一个调用的服务出现问题不会影响其他服务调用。降级机制:超时降级、资源不足时(线程或信号量)降级,降级后可以配合降级接口返回托底数据。融断:当失败率达到阀值自动触发降级(如因网络故障/超时造成的失败率高),熔断器触发的快速失败会进行快速恢复。histrix隔离模式Hystrix提供了两种隔离模式:线程池隔离模式、信号量隔离模式。...
2021-01-30 01:23:06
133
原创 soul 源码分析 —— 插件解析之springcloud插件
使用springcloud去请求微服务的时候,一般服务消费方通过http请求服务提供方:现在加入网关后,是通过soul网关(代替消费者)请求服务方。所以,soul网关需要做两件事:.将自己连接到服务中心,获取服务提供者的注册地址.通过springcloud的方式发起远程调用未完待续…...
2021-01-29 07:13:31
139
原创 soul 源码分析 —— 插件解析之dubbo插件
dubbo插件分为:AlibabaDubboPlugin和ApacheDubboPlugin插件这里分析AlibabaDubboPlugin插件dubbo插件请求响应有:BodyParamPlugin:body参数处理AlibabaDubboPlugin:dubbo参数泛化调用DubboResponsePlugin:dubbo处理完后响应返回BodyParamPlugin public Mono<Void> execute(final ServerWebExchange exc
2021-01-28 07:25:36
112
原创 soul 源码分析 —— 插件解析之WebClientPlugin与WebClientResponsePlugin插件
WebClientPlugin与WebClientResponsePlugin插件是系统内置插件WebClientPlugin插件:发送http请求微服务WebClientResponsePlugin插件:返回响应给请求用户WebClientPlugin插件public Mono<Void> execute(final ServerWebExchange exchange, final SoulPluginChain chain) { final SoulContext
2021-01-27 00:07:37
243
原创 soul 源码分析 —— 插件解析之DividePlugin插件
divide 插件是进行 http 服务(除dubbo、springcloud)代理的插件,所有 http 类型的请求,都是由该插件进行负载均衡的调用。经过http请求的选择器、规则处理之后,开始进行divide请求处理。divide插件的作用:1)通过负载均衡策略(hash、random、roundrobin),获取服务主机实例2)构建完整的服务请求路径请求到达DividePlugin的doExecute方法:@Override protected Mono<Void> d
2021-01-25 23:07:01
313
原创 soul 源码分析 —— 插件解析之选择器
选择器定义选择器是什么?soul选择器就是网关的过滤器,所有的网关请求都会经过选择器功能就行路由断言,所有选择器匹配规则都通过后,才能进行下一步的请求。soul网关还有一个规则的概念,规则也是实施网关请求的过滤。匹配规则的设置基本一样。那选择器和规则有什么不同?选择器可以看成是粗粒度的路由断言,比如:/http/**规则可以看成是进一步的路由断言,比如:/http/order/findById可以理解为:选择器相当于是对流量的第一次筛选,规则就是最终的筛选。选择器和规则都必须满足,网关请求才
2021-01-24 10:33:07
342
1
原创 soul 源码分析 —— 插件解析之GlobalPlugin插件
GlobalPlugin插件GlobalPlugin插件是soul所有插件执行前,最先执行的一个插件。作用是构建一个soul的上下文环境。SoulContextsoul的上下文环境,由GlobalPlugin插件来构建public class SoulContext implements Serializable { /** * is module data. */ private String module; /** * is metho
2021-01-23 07:25:25
641
原创 soul 源码分析 —— 插件机制
插件原理图插件就是一个一个的功能模块,比如:monitor:监控请求模块divide:支持http的请求转发dubbo:支持rpc的请求转发sign:请求进来的签名验证hystrix:限流降级插件等等…插件是soul核心处理机制,每当一次请求进来时,Soul 通过责任链模式,依次执行责任链上的所有插件,完成请求的处理。插件的特性:支持热插拨、可扩展插件加载网关启动的时候,插件列表被加载到内存加载到内存的插件为:这些插件是怎么加载的呢?插件默认是在soul-bootstrap中
2021-01-21 12:00:06
474
原创 soul 源码分析 —— 架构设计
soul 源码分析 —— 架构设计架构设计图![在这里插入图片描述](https://img-blog.csdnimg.cn/20210121065815471.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L2NqMjc xMjMw,size_16,color_FFFFFF,t_70)1.用户程序(PHP、JAVA、.NET)发送http请求,
2021-01-21 09:12:02
443
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人