之前的笔记里面介绍过soul网关的dubbo插件,它是靠dubbo的泛化调用来实现将http协议转成dubbo协议。
这次来看下soul网关的sofa插件,首先把soul-admin、sofa示例项目、soul-bootstrap依次启动起来,看下效果。
在soul-admin里面开启sofa插件
soul-examples-sofa
示例项目启动之后,在soul-admin管理后台就可以看到sofa插件里面已经有了selector和rule。
启动soul-bootstrap,启动之前确保pom.xml里面有以下依赖:
<dependency>
<groupId>com.alipay.sofa</groupId>
<artifactId>sofa-rpc-all</artifactId>
<version>${sofa.rpc.version}</version>
</dependency>
<dependency>
<groupId>org.dromara</groupId>
<artifactId>soul-spring-boot-starter-plugin-sofa</artifactId>
<version>${project.version}</version>
</dependency>
试一下调用请求
我们去看一下SofaPlugin
里面的具体实现,看到SofaPlugin
是继承自AbstractSoulPlugin
的,那我们直接去找它的doExecute
方法。可以看到里面的逻辑和dubbo插件差不多。
那我们再去看下sofa插件里面的SofaProxyService.genericInvoker
方法的具体逻辑。
这……大致瞄了一眼,看上去跟dubbo插件使用泛化调用差不多。
去sofa的官网看了一下,原来sofa是出自蚂蚁金服,sofa中的RPC部分源于阿里内部的HSF,而HSF当前是pk掉了dubbo 1.x的。
看一下sofa官方上关于泛化调用与dubbo的泛化调用的比较,dubbo的泛化调用需要服务提供方也支持泛化,而sofa则不需要服务提供方对泛化调用做出任何改变,这是sofa泛化区别于其他RPC泛化的关键。
今天对soul网关sofa插件的学习就到这里了,有时间的话会研究一下泛化调用的原理。