当前位置: 移动技术网 > IT编程>软件设计>架构 > 简易RPC框架-SPI

简易RPC框架-SPI

2018年05月21日  | 移动技术网IT编程  | 我要评论

案例

我们所熟悉的jbdc是一种用于执行SQL语句的Java API,可以为多种关系数据库提供统一访问,提供了一种基准,据此可以构建更高级的工具和接口。

如上图所示,任意的一个数据库厂商只要去实现jdbc的接口,就可以轻松的对接jbdc从而为应用开发人员所服务。

SPI

上面的jdbc的设计理念叫SPI,它的全名是Service Provider Interface。它的理念是对某类功能进行抽象,确保应用程序依赖抽象而不是具体的某种实现,通过配置服务实现者的方式来达到面向接口编程以及扩展的目的。比如我们项目中需要用到日志组件,有的项目喜欢logback,有的喜欢log4j,有的喜欢common-log等等,如果在项目中直接依赖这些日志接口,那么后续如果需要对日志组件重新选型,对现有项目的影响会非常大,所有后来就有了slfj,它抽象了日志接口但不包含任何的实现,具体实现全部依赖于不同的厂商。

传统的java spi一般做法是在resources/META-INF/services/目录下面创建一个以服务接口命名的文件,该文件内容就是实现该服务接口的具体实现类的完全限定名。当程序加载的时候,就能通过resources/META-INF/services/里的配置文件找到具体的实现类名,并加载实例化。 通过这个机制就能找到服务接口的实现类,而不需要再代码里写死。

java.util.ServiceLoader这个就是java spi中用来加载服务实现类的工具,本文不对它的具体用法做过多介绍。

主题:限流策略如何扩展

本文要讨论的问题是,rpc框架中的限流过滤器扩展问题(可参考之前的文章 :

文中代码是依赖上述项目的,如果有不明白的可下载源码

如对本文有疑问, 点击进行留言回复!!

相关文章:

验证码:
移动技术网