Soul
文章平均质量分 58
敲代码的CHENG城
熬过几个无人知晓的秋冬春夏,撑过去,一切都会顺着你想要的方向走...
展开
-
Soul-源码阅读21-rateLimiter插件
前言采用redis令牌桶算法进行限流。限流插件是网关对流量管控、限制核心的实现。流量配置可以到接口级别、参数级别。使用rateLimiter启动soul-admin,在 soul-admin–> 插件管理–> rate_limiter 将其设置为开启,redis部署模式默认为单机,如果是哨兵(sentinel),集群(cluster)等多节点的,在URL中的配置,请对每个实列使用 ; 分割. 如 192.168.1.1:6379;192.168.1.2:6379。。在b原创 2021-02-05 23:22:56 · 1158 阅读 · 0 评论 -
Soul-源码阅读20-数据同步总结
4种同步方式启动的时候都会初始化数据。websocket bootstrap 启动之后,会发一个初始化的消息(MYSELF)给 admin,然后 amdin 会直接从数据库拉取数据到本地缓存。zookeeper 会先判断 zookeeper 里面有没有数据,没有就去数据查询,缓存到本地,然后更新zookeeper。有数据的话就以zookeeper的数据为准。nacos 和 zookeeper 一样的判断逻辑,没有就去数据查询,缓存到本地,然后更新nacos(需要新建命名空间namespac原创 2021-02-05 08:15:17 · 1165 阅读 · 0 评论 -
Soul-源码阅读19-Http长轮询总结3
Soul-源码阅读19-Http长轮询3继上一节ConfigController# fetchConfigs 从admin 获取响应数据后,bootstrap 更新本地缓存。boostrap刷新数据HttpSyncDataService# doFetchGroupConfigprivate void doFetchGroupConfig(final String server, final ConfigGroupEnum... groups) { // ...... String原创 2021-02-03 08:41:53 · 1158 阅读 · 0 评论 -
Soul-源码阅读18-Http长轮询2
回顾上一篇: admin 启动之后,会每隔5分钟查询一次数据库,把数据刷新到缓存soul-bootstrap端根据上一节yml文件配置的http同步配置方式,实例化httpSyncDataService类。@Configuration@ConditionalOnClass(HttpSyncDataService.class)@ConditionalOnProperty(prefix = "soul.sync.http", name = "url")@Slf4jpublic class Ht原创 2021-02-01 21:41:26 · 114 阅读 · 0 评论 -
Soul-源码阅读17-Http长轮询1
概念zookeeper、websocket 数据同步的机制比较简单,而 http 同步会相对复杂一些。Soul 借鉴了 Apollo、Nacos 的设计思想,取其精华,自己实现了 http 长轮询数据同步功能。注意,这里并非传统的 ajax 长轮询!服务启动启用http同步配置方式,修改admin的application.ymlsoul: database: dialect: mysql init_script: "META-INF/schema.sql" init_原创 2021-01-30 23:01:36 · 80 阅读 · 0 评论 -
Soul-源码阅读16-Nacos同步数据分析4-bootstrap端
soul-bootstrap 如何同步网关数据Nacos数据同步和zookeeper数据同步相似,都是通过监听数据变化来实现。soul-bootstrap 添加了nacos依赖 soul-spring-boot-starter-sync-data-nacos,服务启动后会自动注入NacosSyncDataConfigurationpublic class NacosSyncDataConfiguration { // 实例化一个数据同步服务。 public SyncDataServic原创 2021-01-29 22:53:19 · 1145 阅读 · 1 评论 -
Soul-源码阅读15-Nacos同步数据分析3-admin端
本次分析在0125号萧大佬修复了:当Nacos数据是空的时候,soul-admin不会初始化同步数据到nacos,问题之后。soul-admin 如何同步网关数据这块的数据更新其实类似zookeeper、websocket。soul-admin数据初始化全量更新,在DataSyncConfiguration类的内部类监听NacosListener@Configurationpublic class DataSyncConfiguration {//....... @Configu原创 2021-01-29 22:04:15 · 84 阅读 · 0 评论 -
Soul-源码阅读14-Nacos同步数据分析2
问题回顾解决继续分析昨天boot-strap启动报错NPE的问题,提示:org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'nacosSyncDataService' defined in class path resource [org/dromara/soul/springboot/starter/sync/data/nacos/NacosSyncDataConfigurati原创 2021-01-28 23:57:18 · 450 阅读 · 0 评论 -
Soul-源码阅读13-Nacos同步数据分析1
配置admin 的 pom.xml 已经默认添加了 nacos-client 依赖<dependency> <groupId>com.alibaba.nacos</groupId> <artifactId>nacos-client</artifactId> <version>${nacos-client.version}</version></dependency>adm原创 2021-01-27 23:26:45 · 148 阅读 · 0 评论 -
Soul-源码阅读12-Zookeeper同步数据分析2
继上节分析2soul的各种插件启动基本流程是通过自定义starter启动,然后内部做一系列的依赖注入,zkClient 也不例外。上1节我们知道soul-bootstrap 引入上面这个starter,里面的启动配置类 ZookeeperSyncDataConfiguration,创建了同步数据的syncDataService类,再往spring容器注册了zkClient。其实这里面还有个知识点:ObjectProvider Bean依赖查找注入,然后实例化的zkclient有url、se原创 2021-01-26 23:21:52 · 90 阅读 · 0 评论 -
Soul-源码阅读11-Zookeeper同步数据
ZK同步原理基于 zookeeper 的同步原理很简单,主要是依赖 zookeeper 的 watch 机制,soul-web 会监听配置的节点,soul-admin 在启动的时候,会将数据全量写入 zookeeper,后续数据发生变更时,会增量更新 zookeeper 的节点,与此同时,soul-web 会监听配置信息的节点,一旦有信息变更时,会更新本地缓存。DEMO启动soul-admin配置在application.yml 注释掉websocket的开关,开启zk同步配置。soul:原创 2021-01-25 23:14:56 · 95 阅读 · 0 评论 -
Soul-源码阅读10-Websocket 同步数据
启动admin,与网关。 admin操作,使用websocket同步数据到网关说明数据同步是指将 soul-admin 配置的数据,同步到 soul 集群中的JVM内存里面,是网关高性能的关键。将网关与 admin 建立好 websocket 连接时,admin 会推送一次全量数据,后续如果配置数据发生变更,则将增量数据通过 websocket 主动推送给 soul-web使用websocket同步的时候,特别要注意断线重连,也叫保持心跳。soul使用java-websocket 这个第三...原创 2021-01-24 00:36:57 · 180 阅读 · 0 评论 -
Soul-源码阅读9-divide插件2
回顾前天写的divide插件文章:Soul-源码阅读5-回顾总结插件相关那天做了总结并分析了AbstractSoulPlugin方法(主要是选择器和规则的设定)。今天深入看了divide插件是怎么根据selector和rule进行http请求的代理转发的。DividePlugin看之类DividePlugin 的doExecute()方法根据选择器id获取selector配置的服务地址list, 如果为空会抛出NPE. final List<DivideUpstream&原创 2021-01-22 23:22:28 · 1004 阅读 · 0 评论 -
Soul-源码阅读8-http插件注册简析2
回顾昨天的:Soul-源码阅读7-http插件注册简析简单总结一下:http服务项目里添加了如下依赖,soul-spring-boot-starter-client-springmvc。项目启动后,这个依赖会扫描项目中有@SoulSpringMvcClient注解的controller以及接口方法。<artifactId>soul-spring-boot-starter-client-springmvc</artifactId>注解的时候给这个注解传递的path值,原创 2021-01-22 22:49:06 · 1063 阅读 · 0 评论 -
Soul-源码阅读7-http插件注册简析
SoulClientController- registerSpringMvc启动http-example的服务时(Started SoulTestHttpApplication) ,会来调用这个方法,注册服务到soul-admin。 @PostMapping("/springmvc-register") public String registerSpringMvc(@RequestBody final SpringMvcRegisterDTO springMvcRegisterDTO)原创 2021-01-21 22:53:53 · 361 阅读 · 0 评论 -
Soul-源码阅读6-回顾总结插件相关2
SoulSpringMvcClientSoulSpringMvcClientSpringMvcClientBeanPostProcessor implements BeanPostProcessorSpringMvcClientBeanPostProcessor构造方法public SpringMvcClientBeanPostProcessor(final SoulSpringMvcConfig soulSpringMvcConfig) { ValidateUtils.valida原创 2021-01-20 17:39:35 · 1127 阅读 · 0 评论 -
Soul-源码阅读5-回顾总结插件相关
插件相关divide插件divide插件是网关处理http请求的核心处理插件。divide进行http正向代理,该插件处理所有http类型的请求进行负载均衡的调用。http配置,可以配置多个,设置负载均衡权重,具体的负载均衡策略,在规则中指定。插件和选择器是1对多关系,选择器和规则是1对多的关系。AbstractSoulPlugin测试:http://localhost:9195/http/order/findById?id=222具体分析下 AbstractSoulPl原创 2021-01-19 23:45:03 · 1251 阅读 · 4 评论 -
Soul-源码阅读4-接入sofa应用
今天计划:1.运行examples下面的 sofa-rpc服务2.学习文档,结合sofa插件,发起http请求soul网关,体验sofa代理准备工作启动下mysql和zookeeper启动zk启动soul-admin 和 soul-bootstrap先需要设置 sofa 插件 的注册中心,因为 Soul Bootstrap 服务网关需要从注册中心获取到 sofa 服务的实例列表。进入界面:系统管理 --> 插件管理 找到插件:sofa,点击编辑,将状态修改为开启(是个开关原创 2021-01-18 19:58:21 · 469 阅读 · 0 评论 -
Soul-源码阅读3-接入dubbo应用2(踩坑记录)
异常记录1、本地zk版本和curator版本不兼容导致:如图解决:排插zk的引用:<dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>${curator.version}</version>原创 2021-01-17 17:32:29 · 123 阅读 · 0 评论 -
Soul-源码阅读3-接入dubbo应用
Soul-入门,安装部署单机版 https://blog.csdn.net/tbmingzhao/article/details/112645382准备工作运行 soul-example 目录 的 soul-examples-apache-dubbo-service 工程先需要设置 dubbo 插件 的注册中心,因为 Soul Bootstrap 服务网关需要从注册中心获取到 Dubbo 服务的实例列表。启动zk 或 nacos 注册中心运行服务启动-soul-e..原创 2021-01-17 00:54:15 · 1035 阅读 · 0 评论 -
Soul-源码解析2-接入http应用
在上一节对Soul做了一个概述,安装部署了一个简单的单机版,补充上一节目录结构:soul-admin: soul 插件元数据配置管理服务,内部包含了soul-dashboard交互页面soul-bootstrap: soul 网关启动程序入口今天计划:运行examples下面的 http服务结合divde插件,发起http请求soul网关,体验http代理准备工作启动soul-admin登录 Admin 后台 http://localhost:9095 进入「系统管理 ->原创 2021-01-15 20:16:45 · 647 阅读 · 0 评论 -
Soul-入门,安装部署单机版
1. 概述Soul 是基于 WebFlux 实现的响应式的 API 网关,具有异步、高性能、跨语言等特点。猫大人说:我希望能够有一样东西像灵魂一样,保护您的微服务。在参考了 Kong、Spring Cloud Gateway 等优秀的网关后,站在巨人的肩膀上,Soul 由此诞生!2. 搭建网关环境(github 一键三连 star,watch,fork)https://github.com/dromara/soulFork分支到本地,设置upstream从soul的repo上fork一个分原创 2021-01-15 00:07:24 · 1682 阅读 · 0 评论