初探Soul网关04_01

138 阅读1分钟

前言

说这可能是最后源码训练营的最后一天,提前把作业写了

SPI简述

SPI(Service Provider Interface),正式的解释我就不贴了,反正我看的晕晕乎乎,学习一个东西我们一定要知道它是用来干嘛,这样在半途中,不至于迷失在各种细节。 对于API,我们可以调用它,实现各种功能,一般来说在架构确定的情况下,业务开发人员能调用的API只有一种,比如连接数据库,使用mysql的驱动,开发人员只能调用 mysql的API。

而对于支持多种架构的系统或者语言来说,支持mysql、mongDB、pgSQL、oracle...,是再正常不过的需求,这时,只能调用单一API就远远不够了,能按照需要调用所需要的API,这种模式就是SPI,而这部分内容一般是框架或者语言的开发人员考虑的。

例如:JDBC 的 DriverManager

divide 插件的spi

图:DividePlugin 插件的入口

图:spi机制拿到LoadBalance对象

图:获得 ExtensionLoader 对象

ExtensionLoader 是Soul实现spi的核心对象 图:拿到最终的 RandomLoadBalacne 的对象