网关
文章平均质量分 80
寒山道杳
合抱之木,生於毫末;九層之台,起於累土;千里之行,始於足下。
展开
-
Soul API网关解析之divide插件(上)
关于divide插件divide插件负载均衡实现divide插件ip端口探活总结关于divide插件divide插件是进行http类型请求处理的插件。所有http类型的请求都是经过divide插件进行负载均衡运行的。在前面文章中有介绍SoulWebHandler, 这里重申一下,当有相应的http请求时,在SoulWebHandler中会处理请求。同时也会根据不同的负载均衡算法,进行相应的转发请求。当然在soul-admin端,也会有相应的任务来检测缓存中是否有下线。divide插件负载均.原创 2021-01-29 18:26:56 · 314 阅读 · 0 评论 -
Soul API网关数据同步ZookeeperSyncData(附)
在前面的文章中介绍了zk的数据同步方式,但是当时只是从soul-bootstrap这个工程的角度去解析的。但是soul-bootstrap的启动也是要依赖于soul-admin的,那么本篇文章就继续从soul-admin工程的角度来看看。关于zk数据同步的方式,从soul-admin的角度来解析的话,它数据同步的答题步骤如下:启动构建ZookeeperDataInit类执行ZookeeperDataInit类中的run方法(源头是SpringApplication.run(…)方法)执行Zooke原创 2021-01-28 21:09:35 · 247 阅读 · 0 评论 -
Soul API网关数据同步之Nacos数据同步(admin端)
前一篇关于nacos的文章,是从bootstarp的角度去说, 那么本篇将从admin端的角度去看看。话不多说,那就开始吧!配置类DataSyncConfiguration这里必须要提一下DataSyncConfiguration这个类,因为在admin端几种数据同步配置类都是在此构建的,如下:@Configurationpublic class DataSyncConfiguration { // 这里通过 @ConditionalOnProperty 注解来控制 @Configuration原创 2021-01-28 21:08:49 · 234 阅读 · 0 评论 -
Soul API网关数据同步之Nacos数据同步
在前面的几篇文章中已经介绍了http、zk、websocket这几种同步数据的方式,也对其中的源码做了些分析。那么本篇文章将开始nacos数据同步的解析了。Nacos数据同步配置还是和前面一样要从配置文件开始,还是soul-admin、soul-bootstrap这两个工程的配置文件。soul-admin.yml:soul: database: dialect: mysql init_script: "META-INF/schema.sql" init_enable: t原创 2021-01-26 19:46:08 · 294 阅读 · 0 评论 -
Soul API网关数据同步之HttpSyncData
前言上一篇文章写了关于WebSocket数据同步,从配置文件到接口定义,再到接口实现,,最后解析了事件的发布与处理。整体的执行逻辑就是这样。那么本篇文章便开始HttpSyncData的解析之旅,那么话不多说,就开始吧!HTTP同步配置这里还是要涉及到soul-admin和soul-bootstrap,首先要在这两个里面开启同步配置,配置如下:soul-admin配置: sync: http: enabled: truesoul-bootstrap配置:soul :原创 2021-01-25 19:31:40 · 325 阅读 · 0 评论 -
Soul API网关数据同步之ZookeeperSyncData
前面介绍了WebSocket同步和Http同步,本篇将开始介绍Zookeeper同步的内容。Zookeeper数据同步配置在启动soul-admin和soul-bootstrap的时候,我们需要把其他的同步方式给关闭掉,然后开启zk的同步方式。soul-admin.yml: soul: sync: zookeeper: url: localhost:2181 sessionTimeout: 5000原创 2021-01-25 19:30:48 · 178 阅读 · 0 评论 -
Soul API网关数据同步之WebSocket
前言前面的一系列文章,先说了几个example的使用,然后说了SoulWebHandler、SoulPlugin、MatchStrage、MatchStrategy;前面几个主要从使用的角度说,后面的基本源于单独的类(接口)来进行源码解析的。那么从本篇文章开始将讲一些系统性的东西,那就从数据同步来开始我们说数据同步的代码分析模块。数据同步源头1、配置文件说到数据同步,我们要先说一下yml配置文件,这里涉及两个地方,一个是soul-admin,另一个是soul-bootstrap,这两个yml的文件原创 2021-01-23 00:44:06 · 317 阅读 · 0 评论 -
Soul API网关源码解析之MatchStrategy
前言前面一篇文章讲到了SoulPlugin和插件选择器,主要是讲了SoulPlugin的定义与实现,以及选择器的匹配,但是并没有把选择器的匹配给写完。那么本篇文章就去这里继续进行解析。和大家进一步进行深入的分析。先看下代码:public class MatchStrategyUtils { /** * Match boolean. * * @param strategy the strategy * @param conditionDat原创 2021-01-21 21:32:26 · 298 阅读 · 2 评论 -
Soul API网关源码解析之SoulPlugin
前言上一篇文章中,我们提到了SoulWebHandler和WebHandler。WebHandler是WeFlux编程的核心接口,而SoulWebHandler是自定义实现的一个Handler。也简单的介绍了SoulWebHandler的作用与构建时机等等。当然在SoulWebHandler里最核心的是handle方法,关于这个方法的调用是在DefaultWebFilterChain.filter中,代码如下:@Overridepublic Mono<Void> filter(Server原创 2021-01-20 19:42:21 · 719 阅读 · 0 评论 -
Soul API 网关源码解析之SoulWebHandler
关于web handler前言1、关于SoulWebHandlerSoul 实际是通过Spring WebFlux来实现的,而在WebFlux中最核心的接口便是WebHandler,它是一个请求处理器,具体处理请求是由它的实现类实现的,它具有多个实现类。如图:但是我在Soul中,它有一个自定义的实现SoulWebHandler,如果是用Gateway网关的话,则要关注DispatcherHandler、FilteringWebHandler。在这里我们只需要关注SoulWebHandler即可,先原创 2021-01-19 20:27:13 · 411 阅读 · 0 评论 -
Soul API 网关源码学习《四》
整合sofa插件,接入网关一、启动服务作为RPC框架,sofa和dubbo在插件接入上有着一定的相似性。那么我们还是和前面的案例一样,先启动服务,启动服务的顺序是:soul-adminsoul-bootstrapsoul-examples-sofa不过在启动服务前,我们先看看配置文件:1、soul-examples-sofa pom 依赖<dependency> <groupId>org.dromara</groupId> <ar原创 2021-01-18 22:54:12 · 167 阅读 · 0 评论 -
Soul API 网关源码学习《三》
前一篇文章,我们通过 soul-examples-http 实例的启动初始化和调用的接口调用的流程过程进行了简单的介绍。本篇文章将会介绍与dubbo整合的使用(关于Spring Boot 整合 Dubbo,童鞋们可以自己去网上找示例看看)。示例代码及运行1、示例展示在看示例之前,先简单说下流程,首先在soul 网关 admin系统中的插件管理中打开插件,如下图:然后我们来看下,dubbo代码的示例,如图:上图中的“soul-examples-dubbo-api“是dubbo的api端,上面的一个原创 2021-01-18 22:52:36 · 241 阅读 · 0 评论 -
Soul API 网关源码学习《二》
基于examples下面的 http服务进行源码解析前言上一篇文章Soul API 网关源码解析《一》 中简单介绍了一下网关的含义,同时介绍了两种微服务开发常用的网关:Zuul 1.x(毕竟Zuul 2.x难产了)和Gateway。简单的阐述了一下两种网关的执行流程,以及Zuul 1.x网关被Gateway取代的原因。在介绍了这些之后,又介绍了一下Soul API 网关,这是一款是基于WebFlux实现的响应式的 API 网关,具有异步、高性能、跨语言等特点。其优点我们在后面的源码解析中再慢慢阐述。本原创 2021-01-18 22:50:13 · 274 阅读 · 0 评论 -
Soul API 网关源码学习《一》
Soul API 网关源码解析 01一、初识网关“网关”一个对开发人员众所周知的词语,那么什么是网关呢?在维基百科中的定义是:“网关是程序或者系统之间的连接点,扮演者程序和系统之间的门户,允许它们之间通过通讯协议交换信息,它们可能是同构和异构的系统”。其实,简而言之网关就是一种外部网络和内部服务之间的关卡,它可以最先得到外部的请求。当然从软硬件角度来看,网关可分为软件网关和硬件网关,硬件网关也就是我们所熟知的 LVS 和 F5,但是一般来说这不是我们所需要了解的,软件网关则有:Nginx、CGI、KO原创 2021-01-15 11:08:41 · 678 阅读 · 0 评论