Soul网关
文章平均质量分 86
hellboy0621
怕什么真理无穷,进一寸有一寸的欢喜。
展开
-
【Soul源码阅读】21.插件之大体流程
插件的接口 SoulPlugin 有很多实现,我们先关注以下这些,从名字上能看出来,这些就是 soul-admin 管理页面上插件列表里的代码实现。下面,以DividePlugin 为例,详细看看这优雅的设计。...原创 2021-02-06 03:05:00 · 228 阅读 · 0 评论 -
【Soul源码阅读】20.插件灵魂之选择器和规则
目录1.灵魂2.数据结构3.选择器4.规则1.灵魂这几天一直在看插件相关的功能,一直把核心概念忽略了,那就是所有的插件都有的:selector 和 rule。在看看官网文档https://dromara.org/zh/projects/soul/selector-and-rule/,里面第一句就是:选择器和规则是 soul 网关中最灵魂的东西。掌握好它,你可以对任何流量进行管理。都这么多天过去了,眼睛里净盯着具体对接的协议和同步功能,还有插件的具体使用,就没有关心过.原创 2021-02-05 01:09:49 · 442 阅读 · 0 评论 -
【Soul源码阅读】19.插件之 divide
目录1.启动2.开启 divide 插件3.添加选择器和规则4.验证4.1 负载均衡4.2 IP 端口探活官网文档https://dromara.org/zh/projects/soul/divide-plugin/divide插件是网关处理 http协议请求的核心处理插件。1.启动在网关的 pom.xml 文件中添加 starter 依赖,当然,divide 插件是默认支持的。(application-local.yml) <!--if .原创 2021-02-04 00:27:58 · 333 阅读 · 1 评论 -
【Soul源码阅读】18.插件之 sentinel
目录1.启动2.开启 sentinel 插件3.添加选择器和规则4.验证官网文档 https://dromara.org/zh/projects/soul/sentinel-plugin/sentinel 插件是网关用来对流量进行限流与熔断的可选选择之一。1.启动在网关的 pom.xml 文件中添加 sentinel的支持。 <!-- soul sentinel plugin start--> <dependency>原创 2021-02-01 22:27:56 · 123 阅读 · 0 评论 -
【Soul源码阅读】17.插件之 hystrix
官网文档https://dromara.org/zh/projects/soul/hystrix-plugin/hystrix插件是网关用来对流量进行熔断的核心实现。1.启动在网关的 pom.xml 文件中添加 hystrix starter 依赖 <!-- soul hystrix plugin start--> <dependency> <groupId>org.dromara</g...原创 2021-02-01 21:47:37 · 138 阅读 · 1 评论 -
【Soul源码阅读】16.启动多台admin,多个网关,形成一个集群
目录1.启动多台 soul-admin2.启动多台 soul-bootstrap3.启动多台业务系统4.验证同步4.1 负载均衡4.2 数据同步1.启动多台 soul-admin修改配置文件,把可以开启允许并行执行的复选框。application.ymlserver: port: 9095server: port: 9096启动后状态:2.启动多台 soul-bootstrap跟上面的一样,修改配置文件,打开并行执行的开关。.原创 2021-01-31 04:19:14 · 464 阅读 · 0 评论 -
【Soul源码阅读】15.soul-admin 与 soul-bootstrap 同步机制之 nacos 解析(下)
目录1.准备2.页面操作3.跟踪源码3.1 soul-admin 端3.2 soul-bootstrap 端上一篇讲到使用 nacos 同步策略,在项目启动时的同步机制,今天来看下在页面操作时,是怎么同步的。1.准备按照昨天的帖子(【Soul源码阅读】14.soul-admin 与 soul-bootstrap 同步机制之 nacos 解析(上)),把项目启动起来,soul-admin、soul-bootstrap 和 soul-examples-http 三个项目,当然还有原创 2021-01-30 01:11:14 · 1030 阅读 · 4 评论 -
【Soul源码阅读】14.soul-admin 与 soul-bootstrap 同步机制之 nacos 解析(上)
目录1.准备配套设施2.配置2.1 soul-admin 配置2.2 soul-bootstrap 配置3.启动服务4.源码分析1.准备配套设施启动 MySQL、Nacos。使用 docker 启动 Nacos(详情见官网github https://github.com/nacos-group/nacos-docker)。Clone projectgit clone --depth 1 https://github.com/nacos-group/nacos-原创 2021-01-29 03:18:46 · 346 阅读 · 0 评论 -
【Soul源码阅读】13.soul-admin 与 soul-bootstrap 同步机制之 http 长轮询解析(下)
目录1.前情回顾2.soul-bootstrap 长轮询任务3.soul-admin 中 /configs/listener 接口3.1比对数据是否有变化3.2阻塞并监听变化1.前情回顾书接上文,昨天的文章【Soul源码阅读】12.soul-admin 与 soul-bootstrap 同步机制之 http 长轮询解析(上) 4.2小节的坑(不开 zk 网关不能启动的错误),没研究明白,最后放弃了,把 soul-admin 和 soul-bootstrap 都关掉,把 soul原创 2021-01-28 02:16:27 · 230 阅读 · 0 评论 -
【Soul源码阅读】12.soul-admin 与 soul-bootstrap 同步机制之 http 长轮询解析(上)
1.前情回顾紧接着前两天的 zookeeper,今天来看下 http 长轮询。2.配置数据同步策略官网链接https://dromara.org/zh-cn/docs/soul/user-dataSync.html2.1 soul-admin修改application.yml 配置文件,打开注释的代码:soul: sync: http: enabled: true对应 Bean,默认 enabled 就是 true,只要配置 soul.s...原创 2021-01-27 04:03:19 · 976 阅读 · 3 评论 -
【Soul源码阅读】11.soul-admin 与 soul-bootstrap 同步机制之 zookeeper 解析(下)
目录3.3 启动 soul-bootstrap接上篇【Soul源码阅读】10.soul-admin 与 soul-bootstrap 同步机制之 zookeeper 解析(上)3.3 启动 soul-bootstrap在上篇 2.2 小节中,提到了ZookeeperConfig 配置类,在代码中搜索使用的地方,找到ZookeeperSyncDataConfiguration,源码如下:/** * The type Zookeeper configuration. * * @...原创 2021-01-25 23:53:18 · 229 阅读 · 0 评论 -
【Soul源码阅读】10.soul-admin 与 soul-bootstrap 同步机制之 zookeeper 解析(上)
1.前情回顾紧接着昨天的 websocket,今天来看下 zookeeper。想知道websocket 相关的出门左转【Soul源码阅读】9.soul-admin 与 soul-bootstrap 同步机制之 websocket 解析2.配置因为数据同步方式是双方规定的,必须保持一致,所以修改配置也是 soul-admin 和 soul-bootstrap 都要改。其实配置都是类似的,之前默认是 websocket,需要把 websocket 相关的配置注释掉,打开zookeeper .原创 2021-01-24 03:39:38 · 314 阅读 · 0 评论 -
【Soul源码阅读】9.soul-admin 与 soul-bootstrap 同步机制之 websocket 解析
1.前情回顾在第4篇中,我们分析了 HTTP 用户业务系统接入 Soul 网关后,会调用 soul-admin 的注册接口,把需要网关代理的接口信息全部注册到 soul-admin 上,在最后,会通过 websocket 长连接,将soul-admin 接收到的接口信息同步给 Soul 网关(即 soul-bootstrap),今天就来接着继续分析,数据是怎么同步到 soul-bootstrap 的。不清楚流程的可以出门左转看下第4篇文章【Soul源码阅读】4.HTTP 用户接入 Soul 调用 .原创 2021-01-23 00:44:29 · 971 阅读 · 0 评论 -
【Soul源码阅读】番外1.WebFlux服务器启动流程
WebFlux 服务器启动流程结合 Spring Boot 的启动流程讲解 WebFlux 服务启动流程,首先看一下启动时序图:1.run // SpringApplication.java /** * Static helper that can be used to run a {@link SpringApplication} from the * specified sources using default settings and user supplie...原创 2021-01-22 17:06:34 · 560 阅读 · 5 评论 -
【Soul源码阅读】8. Spring Cloud 用户接入 Soul 网关流程解析
官网文档中有详细的接入流程,地址:https://dromara.org/zh-cn/docs/soul/user-springcloud.html1.前置条件接入前,请正确的启动soul-admin(如有疑问,出门左转【Soul源码阅读】2.单机部署 Soul或官网文档-搭建Soul网关环境)2.引入网关对 Spring Cloud 的插件支持2.1 公共依赖在 soul-bootstrap 的 pom.xml 文件中,找到了被注释掉的3个依赖,打开注释:<!--so...原创 2021-01-21 16:54:17 · 371 阅读 · 1 评论 -
【Soul源码阅读】7. sofa 用户接入 Soul 网关流程解析
官网文档中有详细的接入流程,地址:https://dromara.org/zh-cn/docs/soul/user-sofa.html之前一直没接触过 sofa,官网的介绍如下:SOFARPC is a high-performance, high-extensibility, production-level Java RPC framework. In Ant Financial, SOFARPC has been used for more than ten years and develo原创 2021-01-21 00:33:29 · 449 阅读 · 0 评论 -
【Soul源码阅读】6. Dubbo 用户接入 Soul 网关流程解析
OK,前面几天把 HTTP 用户 接入 Soul 网关大概了解了下,尤其是昨天 debug 到底层,发现里面配置了很多 plugin 插件,默认只开启了一个 divide 插件,用来转发 HTTP 请求的。今天不搞那么复杂的,要劳逸结合嘛,毕竟一口吃个胖子只存在于幻想中,还是一口口慢慢消化吧。来一起看下 dubbo 插件吧。根据官网文档操作这年头,各种帖子层出不穷,甚至还有内容农场,相信你也遇到过很多帖子,内容明明一样,各种错误也是直接 copy,对于需要解决问题的我,真的是恨之入骨。即使原创 2021-01-19 20:00:02 · 346 阅读 · 0 评论 -
【Soul源码阅读】5.GET 请求在 Soul 网关中流转的简单分析
前几天一直在外围转悠,试用了一下默认的 divide 插件,今天来研究下一个请求是如何通过 Soul 网关分发到真实服务节点的。通过浏览器或 postman 发送一个 GET 请求。http://localhost:9195/http/order/findById?id=95selector 和 rule 默认都打开日志了,可以在 SoulBootstrapApplication 的 console 控制台看到如下日志如下:2021-01-18 18:35:05.357 INFO 20836 -原创 2021-01-19 01:38:47 · 292 阅读 · 1 评论 -
【Soul源码阅读】4.HTTP 用户接入 Soul 调用 /soul-client/springmvc-register 接口逻辑分析
今天我们紧接着昨天分析继续,如果想知道昨天分析了点儿啥,出门左转【Soul源码阅读】3.HTTP 用户接入 Soul 流程解析。1. 前情回顾好的,言归正传,昨天分析到我们自己的业务系统,会调用 soul-admin 一个接口,把需要 Soul 网关管理的接口注册,今天就具体看看到底干了点儿啥。先看下调用的接口信息如下:/** * Instantiates a new Soul client bean post processor. * * @param soulSpringMvcC原创 2021-01-17 02:20:23 · 1945 阅读 · 1 评论 -
【Soul源码阅读】3.HTTP 用户接入 Soul 流程解析
昨天只是极简入门,关于网关是怎么感知到我们的应用的,相信小伙伴们一定有疑问,今天先来看下 HTTP 用户如何接入 Soul,以及接入的流程是怎样的。这是官网对于 HTTP 用户的文档,https://dromara.org/zh-cn/docs/soul/user-http.html。官网文档明确指出,Soul 网关使用 divide 插件来处理http请求,我们在 soul-admin 页面中看到,第一个就是 divide 插件,而且是默认开启的。Http请求接入网关,分2种情况,1种是 sp原创 2021-01-16 00:42:29 · 1306 阅读 · 4 评论 -
【Soul源码阅读】2.单机部署 Soul
上一篇中,我们对 Soul 有了一个简单的认识。在学习一项新技术时,我们先按照官网上的 Demo 把环境搭建起来。今天先搭建一个单机版测试环境。1.下载源码soul 的 github 地址:https://github.com/dromara/soul这里有2个选择:如果只是用来阅读 soul 源码,不会改动,不提交 PR的,直接 git clone 的地址。 如果学习源码后,希望参与到 soul 开源项目中,fork 到自己账号下,再 clone 自己账号下的 soul 项目。这.原创 2021-01-14 17:49:45 · 433 阅读 · 0 评论 -
【Soul源码阅读】1.初识 Soul
无论我们学习什么东西之前,都要先搞清楚我们要学习的是什么,就像一些哲学思考先要给出清晰的定义,否则后面的一切都无从谈起。从今天开始,我来和大家一起,学习一款非常优秀的开源网关项目 Soul。Soul 是什么呢?先来看下官网作者的定义:这是一个异步的,高性能的,跨语言的,响应式的API网关。我希望能够有一样东西像灵魂一样,保护您的微服务。参考了Kong,Spring-Cloud-Gateway等优秀的网关后,站在巨人的肩膀上,Soul由此诞生!里面提到了几个关键字,“异步”、“高性能”、“原创 2021-01-14 16:03:34 · 1181 阅读 · 1 评论