Soul 网关源码
文章平均质量分 74
PayneWoo
这个作者很懒,什么都没留下…
展开
-
Soul网关(十九)总结02
Soul总结02Soul 回顾架构收获与展望收获展望Soul 回顾Soul 是一个基于 Netty 的、反应式编程的、支持多种RPC请求类型的、高性能的、插件化的、动态配置的、支持多种流量控制手段的网关。Soul 灵活的配置以及丰富的插件,可以提供很多开箱即用的能力。支持各种语言(http协议),支持 dubbo,springcloud协议。插件化设计思想,插件热插拔,易扩展。灵活的流量筛选,能满足各种流量控制。内置丰富的插件支持,鉴权,限流,熔断,防火墙等等。流量配置动态化,性能极高,网关原创 2021-02-06 03:02:06 · 2501 阅读 · 1 评论 -
Soul网关(十八)----context-path-mapping 插件和 sign 插件
context-path-mapping 插件和 sign 插件context-path-mapping插件使用关键源码sign 插件使用源码分析context-path-mapping插件 context-path-mapping插件用于对请求URI进行重写使用在soul-bootstrap的 pom.xml 文件中添加 context_path 的支持。 <dependency> <groupId>org.dromara</groupId>原创 2021-02-05 01:31:45 · 1428 阅读 · 2 评论 -
Soul网关总结01
Soul网关总结011 插件调用链2 数据同步2.1 Websocket 数据同步https://blog.csdn.net/wu2304211/article/details/1129150592.2 Zookeeper 数据同步2.3 HTTP 长轮询同步数据3 负载均衡4 容错4.1 Hystrix 总结5 限流5.1 RateLimiterPlugin 限流插件5.2 限流总结1 插件调用链总结: 每一个插件都自定了一个 spring boot starter。soul-bootstrap原创 2021-02-03 22:50:24 · 1200 阅读 · 0 评论 -
Soul网关(十六)---- 请求的拦截和重写
waf 插件和 rewrite 插件waf 插件简介使用1)首先在 soul-admin 中开启 waf 插件2)soul-bootstrap 的 pom 文件中添加 waf 插件starter 的依赖3)然后在 soul-admin 的 waf 插件中添加 过滤器 和 规则 对非法请求/异常请求进行拒绝源码分析waf 插件关键源码解读:waf 插件总结rewrite 插件简介使用1)首先在 soul-admin 中开启 rewrite 插件2)soul-bootstrap 的 pom 文件中添加 rewr原创 2021-02-01 20:24:41 · 1454 阅读 · 0 评论 -
Soul网关(十五)---- 请求限流
Soul 中的请求限流Soul 中的请求限流RateLimiterPlugin 限流插件限流方案:令牌桶算法:Soul 中 RateLimiter 插件的使用常用限流算法漏桶算法令牌桶算法对比限流实现关于限流的一些经验总结Soul 中的请求限流RateLimiterPlugin 限流插件限流方案: 限流算法:令牌桶算法 流程图:令牌桶算法:速率:令牌桶填充令牌的速率。等同于:可以匀速处理 QPS=令牌填充速率 的请求。容量:令牌桶可以保存的最大令牌数。等同于:一秒内可以执行的最大请求原创 2021-01-31 00:51:19 · 1271 阅读 · 2 评论 -
Soul网关(十四)---- Soul 中的容错保护(1)
Soul 中的容错保护Soul 中的容错保护HystrixHystrix简介soul 中的 Hystrix 插件Hystrix处理详解:总结Hystrix 的工作原理Soul 中的容错保护HystrixHystrix简介Hystrix 由 Netflix 发布的针对微服务分布式系统的熔断保护中间件。soul 中的 Hystrix 插件在「反应式编程&插件调用链」一文中,已经分析过插件的调用链,请求进来会默认走以下 3 个前置插件,其中就包括 Hystrix 插件HystrixPlugi原创 2021-01-30 01:13:28 · 576 阅读 · 0 评论 -
Soul网关(十三)---- Tars 框架在Soul中的应用
TarsRPC 框架 —— Tars简介Tars 是基于名字服务使用 Tars 协议的高性能 RPC 开发框架,配套一体化的运营管理平台,并通过伸缩调度,实现运维半托管服务。设计思想Tars的设计思路是采用微服务的思想对服务进行治理,同时对整个系统的各个模块进行抽象分层,将各个层次之间相互解耦或者松耦合。整体架构整体架构的拓扑图主要分为2个部分:服务节点与公共框架节点(除了服务节点以外的服务)Tars 框架源码待深入研究 Tars Docs Tars GitHubTars原创 2021-01-29 01:27:20 · 611 阅读 · 2 评论 -
Soul网关(十二)---- 负载均衡客户端 Ribbon 和 RPC 框架 Sofa
Ribbon 和 sofa-rpcSpring Cloud中的客户端负载均衡——RibbonSOFARPC功能特性Bolt 协议基本使用XML架构图模块划分sofa-rpc 框架源码待深入研究Spring Cloud中的客户端负载均衡——RibbonSpring Cloud 生态: Eureka 服务治理 Ribbon 负载均衡 Feign API调用 Hystrix 容错保护 Zuul API网关 Gateway 响应式网关 Config 配置中心 Sleuth 请原创 2021-01-28 00:31:52 · 906 阅读 · 0 评论 -
Soul网关(十一)反应式编程&插件链调用源码分析
Soul网关(十一)Soul 中的反应式编程Soul 插件链调用源码分析Divide 插件源码分析Soul 中的反应式编程soul-bootstrap 引入了 webflux 依赖来实现反应式编程: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux&l原创 2021-01-27 02:19:29 · 319 阅读 · 0 评论 -
Soul网关(十)---- 多soul-admin与多soul-bootstrap的数据同步
演示多个 soul-admin 和 多个 soul-bootstrap 数据同步分别在 9095 端口、9096 端口启动 soul-admin;分别在 9197 端口、9198端口启动 soul-bootstrap;在其中一个 soul-admin 改动divide选择器其中的一个rule:将精确匹配URL 由 /http/order/findById 改为 /http/order/findById111改完之后可以看到另外一个 soul-admin 中此条规则也同步更新了。========原创 2021-01-26 00:02:45 · 662 阅读 · 0 评论 -
Soul网关(九)---- Nacos同步数据
Nacos 数据同步soul-admin 监听数据变化并同步到 nacossoul-admin的Nacos配置类 NacosConfiguration 初始化bean时通过 NacosFactory 创建配置服务。NacosDataChangedListener 监听器会监听配置的变化,并将变化的配置存入本地内存,然后通过 nacos 的配置服务将变化的数据同步到 nacos 中: // 将变化的数据同步到 nacos 中 @SneakyThrows private void publi原创 2021-01-24 01:27:24 · 458 阅读 · 0 评论 -
Soul网关(八) ---- HTTP 长轮询同步数据
Soul网关 ---- HTTP 长轮询同步数据HTTP长轮询机制:soul-bootstrap请求 soul-admin 的配置服务(/configs/listener接口),soul-bootstrap设置了读取超时时间为 90s,意味着soul-bootstrap请求soul-admin 的配置服务(/configs/listener接口)最多会等待 90s,这样便于 soul-admin 及时响应变更数据,从而实现准实时推送。soul-bootstrap 通过HTTP长轮询soul-admi原创 2021-01-23 01:50:50 · 329 阅读 · 0 评论 -
Soul网关(七)---- zookeeper同步数据
开启zookeeper数据同步1.soul-bootstrap引入soul-spring-boot-starter-sync-data-zookeeper依赖: <!--soul data sync start use zookeeper--> <dependency> <groupId>org.dromara</groupId> <artifactId>soul-spring-boot-原创 2021-01-22 01:20:05 · 227 阅读 · 0 评论 -
Soul网关(六)---- Websocket 同步数据
开启数据同步soul-admin 支持在配置文件 application.yml 中指定与网关的数据同步策略(默认采用 websocket)。还支持 http、zookeepersoul: database: dialect: mysql init_script: "META-INF/schema.sql" sync: websocket: enabled: true # zookeeper: # url: localhost:21原创 2021-01-21 01:41:34 · 626 阅读 · 1 评论 -
Soul 网关(五)---- Spring Cloud 插件
Spring Cloud 插件介绍该插件是用来将http协议 转成springCloud协议 的核心。soul会从springCloud的注册中心上面,根据应用名称获取对应的服务真实ip地址,发起http代理调用。Spring Cloud 插件使用1.首先启动 soul-admin2.然后在 soul-bootstrap 的po m文件里添加soul-spring-boot-starter-plugin-springcloud 以及 eureka的依赖、 <dependency&原创 2021-01-20 01:24:18 · 347 阅读 · 0 评论 -
Soul 网关(四)---- Plugin 的初始化流程分析 & Sofa 插件的使用
Plugin 的初始化流程分析 & Sofa 插件的使用Plugin 的初始化流程分析启动 soul-bootstrap 可以看到日志输出了加载的一些 plugin :2021-01-18 22:14:10.685 INFO 71824 --- [ main] o.d.s.w.configuration.SoulConfiguration : load plugin:[global] [org.dromara.soul.plugin.global.GlobalPlug原创 2021-01-19 01:28:48 · 473 阅读 · 3 评论 -
Soul网关(三)---- dubbo 插件
dubbo 插件dubbo插件是将http协议 转换成dubbo协议 的插件,也是网关实现dubbo泛化调用的关键。1.启动 soul-admin、soul-bootstrap2.在soul-admin的插件管理中将 dubbo 插件设置为开启3.在dubbo插件的配置中,配置 zookeeper 地址,这里配置的本地zk{"register":"zookeeper://localhost:2181"} 或者 {"register":"nacos://localhost:8848"}原创 2021-01-17 02:23:54 · 1374 阅读 · 1 评论 -
Soul网关(二)---- divide 插件代理 HTTP 请求
soul-examples-http运行examples下面的 http服务启动 soul-examples-http,默认端口 8188,可以看到启动时的日志:divide 插件divide插件是网关处理 HTTP 请求的核心处理插件。divide插件是进行http正向代理的插件,所有http类型的请求,都是由该插件进行负载均衡的调用。选择器和 规则选择器和规则是soul网关中最灵魂的东西。掌握好它,你可以对任何流量进行管理。通俗易通的解释:一个插件有多个选择器,一个选择器对应多种规则。原创 2021-01-16 01:24:45 · 662 阅读 · 0 评论 -
Soul 网关(一)---- 架构设计简介、soul-admin、soul-bootstrap
Soul 网关(一)Soul 是一个异步的,高性能的,跨语言的,响应式的API网关。今天先来整体了解一下 Soul 的结构。Soul 架构图两大部分:Soul-Admin(Soul 网关管理系统) 和 Soul-Cluster(网关Soul 集群)soul-admin (soul 网关的管理系统)soal-admin 依赖 MySQL,首先我们创建 soul 数据库,创建所需要的表,一共 12 个。然后启动 soul-adminsoul-admin 默认端口 9095 ,访问 http原创 2021-01-15 03:06:35 · 5391 阅读 · 0 评论