![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
soul源码
文章平均质量分 85
kennhua
这个作者很懒,什么都没留下…
展开
-
soul网关源码学习19-resilience4j插件解析
soul网关源码学习19-resilience4j插件解析目标:初步了解resilience4j跑通resilience4j插件resilience4j介绍Netflix Hystrix 作为SpringCloud最早支持的一种容错解决方案,已经进入了维护阶段。虽然目前还有大量应用在使用Hystrix 长远来看Hystrix退出历史舞台 仅仅是时间问题。并且SpringCloud和Netflix Hystrix都给出了替代方案 那就是Resilience4j。Resilience4j是受N原创 2021-02-05 22:10:23 · 186 阅读 · 0 评论 -
soul网关源码学习18-sentinel插件解析
soul网关源码学习17-sentinel插件解析目标:跑通sentinel插件,测试熔断功能了解sentinel基本的实现一、启动项目首先,在bootstrap中加入sentinel插件的依赖。 <dependency> <groupId>org.dromara</groupId> <artifactId>soul-spring-boot-starter-plugin-sent原创 2021-02-04 23:08:51 · 442 阅读 · 0 评论 -
soul网关源码学习17-hystrix插件解析(下)
soul网关源码学习17-hystrix插件解析(下)目标:了解hystrix的底层实现实现步骤使用命令模式将所有对外部服务(或依赖关系)的调用包装在HystrixCommand或HystrixObservableCommand对象中,并将该对象放在单独的线程中执行;每个依赖都维护着一个线程池(或信号量),线程池被耗尽则拒绝请求(而不是让请求排队)。记录请求成功,失败,超时和线程拒绝。服务错误百分比超过了阈值,熔断器开关自动打开,一段时间内停止对该服务的所有请求。请求失败,被拒绝,超时原创 2021-02-03 23:15:07 · 289 阅读 · 0 评论 -
soul网关源码学习16-hystrix插件解析(上)
soul网关源码学习16-hystrix插件解析目标:跑通hystrix插件,测试熔断功能了解hystrix基本的实现一、启动项目首先,在bootstrap中加入hystrix插件的依赖。 <dependency> <groupId>org.dromara</groupId> <artifactId>soul-spring-boot-starter-plugin-hystrix&原创 2021-02-02 00:02:01 · 140 阅读 · 0 评论 -
soul网关源码学习15-rate_limiter插件解析(下)
soul网关源码学习15-rate_limiter插件解析(下)目标:了解常用的限流算法接着上一讲的内容深入理解令牌桶算法前言分布式环境下应对高并发保证服务有稳定的几种做法,按照个人理解,优先级从高到低分别为缓存、限流、降级、熔断,其实这种说法也不完全准确,因为服务降级、熔断本身也是限流的一种,因为它们本质上也是阻断了流量进来。一、为什么要限流为什么要限流,其实很好理解的一个问题,就是流量过大了呗,造成流量过大的原因有很多,例如以下的几个场景:业务用户量不断攀升各种促销网络爬虫原创 2021-01-31 00:19:12 · 281 阅读 · 1 评论 -
soul网关源码学习14-rate_limiter插件解析(上)
soul网关源码学习14-rate_limiter插件解析目标:跑通rate_limiter插件理解rate_limiter插件底层原理一、运行项目本地启动redis启动admin启动bootstrap启动http-example,用来测试限流插件二、测试限流插件在没用rate_limiter插件的情况下,我们先用jmeter来测试一下10个并发请求的响应情况。可以看到10个请求全部请求成功。接下来引入rate_limiter插件,在管理后台中开启插件,填入re原创 2021-01-30 21:54:12 · 240 阅读 · 0 评论 -
soul网关源码学习13-springcloud插件解析
soul网关源码学习13-springcloud插件解析目标跑通springcloud插件理解springcloud插件底层原理与divide插件进行对比一、运行项目引入依赖springcloud插件支持eureka或者nacos作为注册中心,这里我们使用eureka,引入eureka依赖。 <dependency> <groupId>org.springframework.cloud</groupId>原创 2021-01-28 23:36:15 · 214 阅读 · 1 评论 -
soul网关源码学习12-http代理解析(下)
soul网关源码学习12-http服务注册与探活前言上一讲讲到了http服务启动之后,通过http请求的方式把接口的数据发送到admin,接下来一起来看一下admin拿到数据之后是做了哪些操作的。一、源码解析服务注册这里为了演示新增http服务注册,可以先把数据库里面http相关的数据清掉,或者直接一点把数据库直接删掉(演示需要,实际情况慎重)。从上一讲可以知道http服务启动之后把数据发送到了/springmvc-register接口,那我们可以直接搜到这个接口,打上断点,重启http-ex原创 2021-01-27 23:34:06 · 204 阅读 · 0 评论 -
soul网关源码学习11-http代理解析(上)
soul网关源码学习11-http服务注册前言soul作为一款高性能网关,可以转发各种类型的接口,如http,dubbo,springcloud,sofa等,那么它是通过怎么样的方式来进行转发呢?如何动态的上下线接口呢?如何保证接口一直能处于服务状态呢?下面以http接口为例子,解析一下上面的几个问题。一、启动项目启动admin项目启动bootstrap项目启动http-example项目二、源码解析启动完这三个项目之后思考一下,既然是http接口要接入网关,猜测会有一个把接口注原创 2021-01-27 00:45:59 · 369 阅读 · 0 评论 -
soul网关源码学习10-数据同步总结
soul网关源码学习10-数据同步总结01一、同步方式soul网关后台管理系统与网关之间的数据同步目前有如下四种方式:websocketzookeeperhttp长轮询Nacos二、同步流程websocket启动admin,加载事件分发器DataChangedEventDispatcher实例化DataChangedListener的实现类WebsocketDataChangedListener,开始监听admin数据的变化。根据配置加载websocket服务端Websocket原创 2021-01-26 01:01:57 · 205 阅读 · 0 评论 -
soul网关源码学习09-Nacos数据同步
soul网关源码学习09-Nacos数据同步目标:了解Nacos的原理梳理Nacos同步数据的流程一、Nacos概览Nacos 能帮助我们发现、配置和管理微服务,提供了一组简单易用的特性集,帮助我们快速实现动态服务发现、服务配置、服务元数据及流量管理。关键特性服务发现和服务健康监测动态配置服务动态 DNS 服务服务及其元数据管理持久化默认情况下,Nacos使用嵌入式数据库实现数据的存储。所以,如果启动多个默认配置下的Nacos节点,数据存储是存在一致性问题的。为了解决这个问题原创 2021-01-23 22:16:38 · 237 阅读 · 1 评论 -
soul网关源码学习08-http长轮询数据同步
soul网关源码学习07-http长轮询数据同步目标:梳理http长轮询数据同步流程一、流程分析soul-admin启动的时候会创建一个定时任务,这个任务每隔5分钟全量更新一次缓存的数据。soul-bootstrap启动的时候soul-web会发起一个http请求,从soul-admin拿到全量的数据,然后更新到缓存。soul-bootstrap启动之后会定时的发起http长轮询到soul-admin,如果有数据修改,把全量数据返回,然后更新到缓存。二、启动项目修改soul-adm原创 2021-01-23 10:46:05 · 232 阅读 · 4 评论 -
soul网关源码学习07-zookeeper数据同步
soul网关源码学习07-zookeeper数据同步目标:梳理zookeeper数据同步流程一、启动项目修改soul-admin的同步方式为zookeeper sync:# websocket:# enabled: true zookeeper: url: localhost:2181 sessionTimeout: 5000 connectionTimeout: 2000修改soul-boots原创 2021-01-22 00:48:44 · 181 阅读 · 0 评论 -
soul网关源码学习06-websocket数据同步
soul网关源码学习06-websocket数据同步目标:演示websocket方式数据同步梳理websocket数据同步流程一、演示数据同步soul-admin使用websocket方式进行数据同步,这里打开websocket开关。soul: sync: websocket: enabled: true启动soul-admin、soul-bootstrap、soul-examples-http,打开系统:http://localhost:9095,admin原创 2021-01-21 01:17:53 · 503 阅读 · 1 评论 -
soul网关源码学习05-dubbo插件流程解析
soul网关源码学习05-插件源码解析02目标:梳理dubbo插件的调用过程理解dubbo的泛化调用一、启动项目启动本地mysql数据库和zookeeper启动soul-admin、soul-bootstrap、soul-example-apache-dubbo-service二、源码解析首先,还是按上一次讲的,在SoulWebHandler的handle方法打上断点。public Mono<Void> handle(@NonNull final ServerWebEx原创 2021-01-19 23:37:57 · 128 阅读 · 1 评论 -
soul网关源码学习04-divide插件流程解析
学习soul源码04-插件源码解析目标:梳理soul的插件是如何加载的。梳理发送http请求的时候是如何调用插件链的。一、加载插件从前面的学习可以知道,整个网关项目的入口是soul-bootstrap模块,先看一下里面的代码,简单的三个类和两个配置文件,可以猜想应该是在pom文件引入了其他模块的starter。打开pom.xml,可以看到引入了很多插件的starter,先看一下这个gateway的stater。进入soul-spring-boot-starter-gateway模块,可原创 2021-01-17 11:06:34 · 434 阅读 · 2 评论 -
soul网关源码学习03-dubbo应用示例运行
学习soul源码03-运行dubbo-example目标:运行dubbo-example走一遍熔断、限流插件一、启动项目启动soul-admin,发现有个报错。根据报错信息,找到相应的代码,发现程序会去检查已配置的这些选择器是否连接有效,把已失去连接的从内存移除。private void check(final String selectorName, final List<DivideUpstream> upstreamList) { List<Div原创 2021-01-16 16:19:20 · 119 阅读 · 1 评论 -
soul网关源码学习02-http应用示例运行
学习soul源码02-运行http-example一、启动项目先启动后台管理系统(soul-admin)和网关(soul-bootstrap),然后启动soul-example模块的soul-example-http。二、查看代码查看配置文件application.yml,配置了soul,项目启动时会根据配置注册相应的接口到网关。soul: # Soul 针对 SpringMVC 的配置项,对应 SoulHttpConfig 配置类 http: adminUrl: http://loc原创 2021-01-16 00:31:49 · 257 阅读 · 0 评论 -
soul网关源码学习01-搭建环境运行项目
学习soul源码01-搭建环境运行项目一、看官方文档特性基于WebFlux的响应式API网关异步高性能跨语言功能支持各种语言,无缝集成到 Dubbo、Spring Cloud、Spring Boot 中。Soul 是极其少支持 Dubbo 的 API 网关,通过 Dubbo 泛化调用 实现。支持各种语言(http协议),支持 dubbo,springcloud协议。插件化设计思想,插件热插拔,易扩展。灵活的流量筛选,能满足各种流量控制。内置丰富的插件支持,鉴原创 2021-01-14 23:38:01 · 203 阅读 · 0 评论