4

一个可插拔远程服务框架的诞生

 2 years ago
source link: https://blog.dteam.top/posts/2017-11/%E4%B8%80%E4%B8%AA%E5%8F%AF%E6%8F%92%E6%8B%94%E8%BF%9C%E7%A8%8B%E6%9C%8D%E5%8A%A1%E6%A1%86%E6%9E%B6%E7%9A%84%E8%AF%9E%E7%94%9F.html
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

一个可插拔远程服务框架的诞生

胡键 Posted at — Nov 10, 2017 阅读 108

这些天因为项目的需要基于Vert.xPF4J做了一个简单的插件式远程服务框架dfx。它是一个非常简单的小框架(或者称为微框架也行),其目的很简单:快速地将老旧 Java 类转变成为远程服务,降低这类工作的难度和门槛。

简单到什么程度呢?这么说吧:开发者只要实现一个指定的接口,然后将其打包成一个插件并复制到 dfx 指定的插件目录之下就 ok 了(当然,还需要修改对应的配置文件)。

至于为何选定 Vert.x 为支撑技术,原因在我之前的踩坑记中已经解答。而采用插件的原因则在于:

  • 分工明确。插件开发者只需专注于业务逻辑的开发,不用去为底层各种机制(如断路器,你没看错,dfx 管理下的插件天然就具有断路器功能,而插件开发者根本就没有意识到这一点!即使无意间引入了一个慢插件,也不会殃及其他插件。)烦心。
  • 管理的需要。除了功能的扩展性,插件系统带来的一个附加好处就是有效控制了整个系统的代码。即,开发新功能时不需要将整个系统的代码 clone 得到处都是。从代码安全性上来讲,这无疑是绝佳的选择。同时,这还带来了另一个好处:编译速度的极大改善。要是经历过编译 3 天才得到一个二机制文件,那你应该明白我在说什么,;)。

对于插件系统,我选择的是PF4J,一个小巧的插件实现。

除了简单和断路器支持,dfx 的还支持热更新,只是目前的方式简单粗暴:当发现任意一个变化(conf 和插件目录中 zip 包的变化)时,会重新加载整个服务,即相当于重启。

关于 dfx 的详细使用和插件的开发,可以从它的README得到更多细节。


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK