Nutch系统架构的一个亮点就是插件,借鉴这个架构我们可以设计出自己的灵活的系统架构,下面就来解析Nutch的插件系统是怎么回事。
一、 在Nutch的插件体系架构下,有些术语需要解释:
1、扩展点(ExtensionPoint )
扩展点是系统中可以被再次扩展的类或者接口,通过扩展点的定义,可以使得系统的执行过程变得可插入,可任意变化。
2、扩展 ( Extension )
扩展式插件内部的一个属性,一个扩展是针对某个扩展点的一个实现,每个扩展都可以有自己的额外属性,用于在同一个扩展点实现之间进行区分。扩展必须在插件内部进行定义。
3、插件 ( Plugin )
插件实际就是一个虚拟的容器,包含了多个扩展 Extension、依赖插件 RequirePlugins 和自身发布的库Runtime,插件可以被启动或者停止。
Nutch 为了扩展,预留了很多扩展点 ExtenstionPoint,同时提供了这些扩展点的基本实现 Extension,Plugin用来组织这些扩展,这些都通过配置文件进行控制,主要的配置文件包括了多个定义扩展点和插件(扩展)的配置文件,一个控制加载哪些插件的配置文件。体系结构图如下:
二、插件的内部结构 ,如下图:
1. runtime 属性描述了其需要的Jar包和发布的Jar包
2. requires 属性描述了依赖的插件
3. extension-point 描述了本插件宣布可扩展的扩展点
4. extension 属性则描述了扩展点的实现