初探Soul网关week01_07

302 阅读1分钟

前言

昨晚是新🏠的第一晚,十分钟从公司到家的感觉真是爽爆了,但是昨晚看代码不是很顺利

今天又是6点起床的一天

请求转发

使用Soul的功能的功能时有一个疑问,访问目标明明是8189端口的服务,但是实际的请求是发向了9195端口,这中间经历了什么?先从程序的入口开始找起

Soul的核心功能是通过插件实现的,找到 divide 插件,打断点,debug

图:断点执行情况

在Soul这个项目内,能触碰的最底层代码在上图红色箭头3的位置。Mono.defer() (响应式编程的内容)暂时还看不懂,不过不影响接下来的分析

图:红色箭头3的具体内容

在红色箭头3处, return plugin.execute(exchange, this); 执行插件,因为Soul的核心功能跟插件直接相关,所以重点关注插件的来源,可以看到excute方法中plugins的来源只有DefaultSoulPluginChain的构造函数,而DefaultSoulPluginChain构造函数中plugins的来源只有SoulWebHandler的成员变量

plugins变量大概的关系: excute方法 --> DefaultSoulPluginChain的构造函数 -->SoulWebHandler的成员变量 --> bootstrap(网关) 初始化时spring IOC 装配加载

图:初始化 SoulConfiguration 中 SoulWebHandler

请求入口的结论