这两天在做大数据方面的项目看到关于job作业调度的设计,扣了两天了,感触良多,记下来做个反省。
这是一个精简版的图,其中还有一些没有划到,其实到这里目前对我来说已经足够了。
看完图之后进行分析,我只抛砖。
ps:任何面向对象的都遵循的设计方法。
- 接口job 只是一个接口,提供job的最直接的操作,也是job本身的操作;
- jobContext提供给job的上下文环境可以跟job是联系关系,更确切的说是聚合关系,jobcontext有明确的责任范围,给job提供外围的服务;
- AbstractJob 抽象job类 ,准确的说是包装了job和jobContext,提供了更便捷的方法;
- ProcessJob抽象osJob类,是操作系统级别的进程抽象类,提供了环境变量、配置文件、目录等信息基本上具备了执行的外围条件
- ShellJob、HiveJob、JavaJob、MapReduceJob、HadoopShellJob 通过这么设计就可以直接实现受保护的方法,进而实现所调用过程的设计。
当然调用的时候还会用的调度器Schedule来完善自动、手动调度job的内容等。
不过通过以上可以明显发现我们大部分程序设计应该遵循的思想了……
我只抛砖啦……