- 博客(19)
- 资源 (1)
- 收藏
- 关注
原创 Soul网关源码阅读(十六)—— SPI插件
SPI 概念SPI(Service Provider Interface),是一种模块间相互引用的机制,可以用来启用框架和替换组件,一般的流程是服务的提供者在classpath指定配置实现类的全名,由调用方读取和加载使用,调用方无需修改代码,通常以jar包的形式引入需要使用的实现,Dubbo,Soul等项目使用了SPI机制,但给使用者提供了更丰富便捷的选择,可以由用户安优先级,名称等方式选择使用那个实现。SPI 标准流程:定义标准接口编写不同的实现,配置classpath目录指定位置使用方加载使
2021-02-06 14:21:51
238
原创 Soul网关源码阅读(十五) RateLimit插件使用
文章目录RateLimiter原理使用步骤启动Ratelimiter插件为RateLimiter插件添加selector和rule启动soul网关添加对应配置接口测试源码分析RateLimiterPluginConfiguration配置类RedisRateLimiterRateLimiter原理使用步骤启动Ratelimiter插件启动admin后台,在后台服务中插件管理打开ratelimit插件,需要配置redis连接信息,rateLimit使用的令牌桶基于redis。为RateLimit
2021-02-03 23:06:36
291
原创 Hystrix源码分析
Hystrix源码分析Hystrix 版的 Hello World在pom.xml文件里引入Hystrix依赖的类 <dependencies> <dependency> <groupId>com.netflix.hystrix</groupId> <artifactId>hystrix-core</artifactId> <versio
2021-02-02 16:44:39
712
原创 Soul网关源码阅读(十四)—— Hystrix插件详解
Soul网关源码阅读(十四)—— Hystrix插件详解文章目录Soul网关源码阅读(十四)—— Hystrix插件详解概要服务熔断、降级的场景Hystrix原理soul-plugin-hystrix实战总结概要上一篇介绍了hystrix插件的使用方法,这一篇我们来详细介绍一下hystrix的原理及使用方法,并实现一个简单的demo。服务熔断、降级的场景微服务架构下,客户端发起一个业务请求,通常情况下会在后端进行多次服务之间的调用。试想,如果后端服务的调用顺序为A->B->C,如果C
2021-01-31 19:12:49
1271
4
原创 Soul网关源码阅读(十三)—— hystrix插件使用
启动admin服务启动http的测试demo服务,确保基于divide插件的seletor数据被注册到admin。在admin服务打开hystrix配置开关admin服务配置hystrix插件配置规则这一篇我们介绍了hystrix插件的使用,下一篇我们详细讨论hystrix源码及原理。...
2021-01-30 17:10:44
137
原创 Soul网关源码阅读(十二)—— http长轮询技术细节
在第十篇中我们大概分析了一下,使用http长轮训的方式进行数据同步。这一篇主要分析一下,其中的技术细节。废话不多说直接上源码。背景是HttpSyncDataService是进行数据同步的实现类,在初始化构造函数的时候调用了对象方法start()。我们就先从start方法开始,探讨一下值得分析的技术点。代码片段1——start方法private void start() { // It could be initialized multiple times, so you need
2021-01-29 02:39:03
281
1
原创 Mysql利用索引进行order by排序优化
Mysql利用索引进行order by排序优化背景在mysql数据库中,我们一般都会设计一个id作为一张表的主键,mysql也会默认为我们的id主键建立索引,在innnodb中我们称之为聚合索引。总之,mysql为id主键创建索引这件事情我们是清楚的。一般管理系统中,我们查询数据的时候,会根据业务需要对数据进行排序,于是需要我们sql语句中用到order by。我们来看一下下面这个sql语句,其中event_time设置了索引,id为主键。select * from dac_log where ev
2021-01-28 15:21:40
439
原创 使用Shardingsphere-jdbc 5.0.0-alpha进行分库分表
文章目录背景使用步骤1. 创建数据库schemas2. 添加依赖3. 添加配置踩过的坑需要注意的点背景分库官网已经有响应配置案列,但是分表没有详细的文档,这里给基于单数据源的按时间分片的demo。使用步骤1. 创建数据库schemas创建数据库:demo_ds_0在demo_ds_0下创建12个log表,表名格式t_log_2021012. 添加依赖在我们的springboot项目里引入以下依赖:<dependency> <groupId>org.apach
2021-01-28 10:25:27
3050
8
原创 Soul网关源码阅读(十一)—— divide插件原理
分别启动 soul-admin、soul-bootstrap、soul-examples-http 三个模块,然后发起 GET 请求:http://localhost:9195/http/order/findById?id=007,得到下面关键日志。o.d.soul.plugin.base.AbstractSoulPlugin : divide selector success match , selector name :/httpo.d.soul.plugin.base.AbstractSoulP
2021-01-28 00:40:15
198
原创 Soul网关源码阅读(十)—— 数据同步之Http
Soul网关源码阅读(十)—— 数据同步之Http文章目录Soul网关源码阅读(十)—— 数据同步之Http概要图解概要上一篇介绍了websocket的数据同步流程,这一篇我们来研究一下基于http协议的数据同步方式。来看看soul网关是如何通过http拉进行数据同步的。图解开启soul网关http的配置查看HttpSyncDataService的逻辑构造函数初始化了同步的处理类,http配置,一个okHttpClient,就开启start方法,核心在start方法publi
2021-01-26 23:29:47
197
1
原创 Soul网关源码阅读(九)—— 数据同步之WebSocket
Soul网关源码阅读(九)—— 数据同步之WebSocket文章目录Soul网关源码阅读(九)—— 数据同步之WebSocket概要流程图详细解析1. WebsocketSyncDataConfiguration2. WebsocketSyncDataService4. DataChangedEventDispatcher5. WebsocketDataChangedListener6. SoulWebsocketClient总结语概要之前我们简单介绍了soul网关是通过admin进行数据同步的,这一
2021-01-26 01:04:47
142
原创 Soul网关源码阅读(八)—— WebFlux过滤器
文章目录概要WebFlux过滤器定义路由端点定义拦截器WebFilterHandlerFilterFuntionn测试Soul网关中的那些过滤器结束语概要上一篇我们分析了从客户端发起http请求到我们soul网关,网关是如何通过WebClientPlugin插件来进行转发的,这一篇我们继续深入讨论一下这过程中网关具体还干了其他什么事情,或者说可以干什么事情。有时候一个http请求进来,我们需要对它做特殊处理,对在请求或者响应中添加一些业务逻辑(类似SpringMvc中filter和intercepto
2021-01-24 01:17:57
752
原创 Soul网关源码阅读(七)—— http请求转发流程分析
文章目录概要基础知识Soul网关http转发流程分析SoulConfigurationSoulWebHandlerSchedulerhandle方法skip方法WebClientPluginWebClientResponsePlugin思考总结概要上一篇我们介绍了如何使用WebFlux快速的搭建一个请求转发的demo,了解一些基本的概念。这一篇我们来分析soul网关的设计思路,了解soul网关是如何做到将多个插件加载到webflux并进行请求转发的。我们以最简单的divide插件来进行http请求的分析
2021-01-23 00:29:30
625
2
原创 Soul网关源码阅读(六)—— Soul网关之WebFlux
Soul网关源码阅读(六)—— Soul网关之WebFlux概要上一篇我们学习了Soul网关是如何进行请求转发的,通过分析源码我们知道,soul网关是利用了WebFlux服务框架,使其具备异步、非阻塞的特性。究竟什么是WebFlux呢?这一篇我们的思路是:自己动手实现一个基于WebFlux进行请求转发的demo,模拟服务器网关请求转发的功能,以此来熟悉其中的WebFlux的核心概念及设计思路。WebFlux简介WebFlux 模块的名称是 spring-webflux,名称中的 Flux 来源于
2021-01-21 01:28:44
809
1
原创 Soul网关源码阅读(五)—— Soul网关初探
Soul网关源码阅读(五)—— Soul网关初探概述之前我们大概分析了数据同步的逻辑,知道了后端服务是怎么将api信息注册到admin,再由admin同步到soul网关的。这一篇我们分析一下soul网关的基本结构,并大概介绍一下soul网关如何接受请求并且转发的。因为我们的soul网关是并没有将提供的接口信息写死在配置文件的,所有提供的接口api都是通过admin同步过来,并动态加载到服务的。所以这里我们主要需要思考一个问题:从admin同步过来的后端服务的接口api,是如何注册到soul网关
2021-01-20 01:46:33
312
2
原创 Soul网关源码阅读(四)—— sofa插件详解
Soul网关源码阅读(四)—— sofa插件详解概述经过divide插件和dubbo插件篇的讲解,soul网关的核心概念和大体运行机制已经熟悉的差不多了。我们知道了,更换插件对于soul网关来说无非不就是更换soul网关到后端服务的通信协议,剩下的逻辑都是共同的。因此这篇文章在介绍sofa插件使用方式的同时,我们还会接着上一篇dubbo篇,续集往下深入,梳理一下soul-admin与soul-bootstrap服务进行数据同步的具体细节。实践操作启动admin服务。在bootstrap服
2021-01-18 21:18:33
310
原创 Soul网关源码学习(三)——Dubbo插件详解
Soul网关源码学习(三)——Dubbo插件详解概述前一篇我们介绍了基于http的divide插件的使用方法,以及soul网关的使用流程。这一篇我们介绍一下基于Dubbo插件的使用及原理,同样的,在开始之前,我们还是先来思考几个设计问题,抱着疑问去学习会事半功倍。还是简单来梳理一下调用流程:和divide插件的功能类似,我们的dubbo插件也是负责soul网关与后端服务的通信,只不过将之前的http协议换成dubbo协议。上一篇我们了解到,soul网关与后端服务的通信,是通过后端服务注册到adm
2021-01-17 03:22:16
510
原创 Soul源码学习(二)——http服务调用详解
概述我们知道soul网关支持多种协议的,其中http协议应该是最基本也是平时使用最多的协议。开始实践之前,我们可以梳理一下网关的基本功能,需要考虑什么问题呢?先梳理一下加入网关后的调用流程:客户端http请求->网关->后端服务。可以看到,网关是一个服务器,可以接受请求和转发请求。经过网关的请求,需要对url进行解析,判断其是否满足转发到后端服务的条件如果后端服务有多个,需要考虑负责均衡策略。网关调用后端服务,那么必定要知道后端服务的地址,有两种方式将后端地址配置在网关服务
2021-01-15 22:34:18
1127
1
原创 Soul源码学习(一)——soul原理及环境搭建
Soul源码学习(一)——soul原理及环境搭建概述Soul 是基于 WebFlux实现的响应式的 API 网关,具有异步、高性能、跨语言等特点。作者:我希望能够有一样东西像灵魂一样,保护您的微服务。在参考了 Kong、Spring Cloud Gateway等优秀的网关后,站在巨人的肩膀上,Soul 由此诞生!目前 Soul 功能列表如下:支持各种语言,无缝集成到 Dubbo、Spring Cloud、Spring Boot 中。丰富的插件支持,鉴权,限流,熔断,防火墙等等。网关多种规
2021-01-14 23:26:47
1432
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人