企业应用中的作业调度

第一章.  企业应用中的作业调度
    ·什么是作业调度
    ·作业调度为什么说是重要的
    ·企业应用中的作业调度
    ·非企业应用中的作业调度
    ·作业调度与工作流
    ·关于作业调度其他可选择方案
1. 什么是作业调度

“作业”,这一技术述语上的概念,又让我们回到了大型机的年代,那时候,用户/程序员提交一叠穿孔卡片或者纸带(上面描述了一个作业)给操作人员,由操作人员帮忙执行那些作业。用户等待作业执行完后,回到主机那边取自己的卡片和打印出来的输出结果。
因为不是每一个作业要求立即被执行,所以作业可以被安排在将来的某个时候执行。比如说,一个系统管理员每天晚上可能有一份要执行的作业列表:
    · 10:00 PM: 运行患者信息文件的上载作业
    · 11:00 PM: 运行销售数据报表生成
    · 11:59 PM: 进行数据库的备份
作业调度通常是指运行一个批量的作业或称之谓批处理。这种批处理作业一般都是放在后台运行并且不需要与用户交互。现在,显著增多的多样性的任务已代替了早先的批量作业。在一个大的组织中每天的每小时跑上百个作业已属普遍。并且作业的规模与复杂性仍在持续的上扬,因此批量作业和作业调度器也就随需应生。
2. 作业调度为什么说是重要的
俗话说,“时间就是金钱。”,过高的资源投入到枯燥的任务中无疑是金钱和资源的浪费。随着业务流程复杂性的提升,自动化流程也更能显现出它的有益之处来。图 1.1 说明了这一问题。

图1.1 任务规规模越大、越复杂、越频繁的被执行,那么能从自动化中获益也越大

人之所以称之为人,国为我们犯错误的频度远高于电脑。把一系列任务自动安置到一个作业中,然后再为这个作业创建一个调度器,到时这个作业就会自动执行了。相对于人的手工处理,我们可以减少大多数的出错机会。
作业调度器的另一个优点体现在伸缩性。我们也许能一个小时中手工完成10或20个作业,但是随着每小时处理作业数量的增加,我们就更难杜绝不在作业中引入错误。但如果借助于作业调度,只会受到硬件资源的影响了。
所以我们能着实的说通过作业调度那样自动化处理相对于手工来说,至少为我们提供了以下三个优点:
    ·资源使用效率更高
    ·更少的出错机率
    ·更高的伸缩性

3. 企业应用中的作业调度

“企业应用”一词,如今经常会被我们无意识间提及,然而似乎现在还没有对它一个准确的定义。但对于在本书中这一词的意义,我们只要建立起这样一个概念:作为某一组织的一部份而存在的软件系统或程序。这个系统可以是一个大型机上的、或者是一个C/S结构的、或者就是一个J2EE应用。真实世界中的例子就是,作业调度器能在那个系统上大量的使用。以下的几个场景,尽管没有详尽的进行描绘,也涉及到了现今应用软件常常遇到的场景。
场景 #1: 邮件提醒和告警
许多网站(不管是商业的还是别的)允许用户提供用户名和密码注册一个帐户。出于安全考虑,一个好的做法是让用户密码每隔一段时间过期失效,比如说90天的周期。这种情况下,你可以创建一个作业,让它每天午夜运行一次,并且向离过期时间不到三天的所有用户发邮件提醒。这里可以恰到好处的用到作业调度器。图 1.2 描绘了密码这个提醒作业。

图 1.2  密码过期的作业每晚发送邮件给密码很快会过期的用户


除了发过期的密码信息,网站还可以发送其他的告警或提醒(可不是垃圾邮件哦)。一个作业调度器还能够用在类似的其他方面。
场景 #2: 执行文件传输操作
许多商家需要和他们的供应商或客户作信息集成。一种集成的方式就是进行数据文件的交换。可以采用实时的方式,例如SOAP协议,但是许多时候却不需要实时性,代之以异步的方式,譬如用FTP协议来发出或取所要的文件。
下图描绘了一个劳工补偿局每天早上收到一些包含患者及事故信息的文件。公司可以雇一个人每天早上手工的检出FTP服务器上的文件。作为另一个更好的选择就是可以写一个作业,让它每天早上扫描FTP服务器,如果有文件的话,把文件内容处理后插入到患者数据库中去。让作业调度器代劳后,这个职员再也不用手工去上FTP检查文件,而可以为公司做更多别的更有意义的事情。图1.3 描绘了文件传输的操作。

图 1.3. 文件传输的作业检查FTP站点,把患者信息文件处理到数据库中。


场景 #3: 创建销售报表

公司经营由盈亏账目所驱动,其中一个很重要的事情就是经营管理者和财务人员需要拿到最终收入和毛利数据进行分析。抽取销售报表数据可能非常的慢并且很耗资源,因为这通常需要联合多个表从中查询出上千条记录。一个更好的解决途径是在晚上计帐和计价结束后,运行一个作业,让它去生成一些临时表或视图为报表程序所用。创建临时表或视图的方式,使报表生成更具动态特性,而且用户也用不着平白去等待报表的生成,一些报表工具,如水晶报表 XI(Crystal Reports XI) 本身就包含了作业调度器(见图1.4)。

图 1.4. 销售数据报表程序执行为销售团队产生收入和毛利信息

4. 非企业应用中的作业调度
Quartz 对于许多非企业环境的应用也是很有帮助的。例如,假定你有一个独立的应用程序,事件是基于时钟而不是鼠标的点击激发的。这时候你就可以把Quartz构建到这个应用程序中来,并且安排事件能周期性的被触发。
另一例子是,你也许正想查询数据库并发送邮件,而邮件接受者正是基于这些数据得到的。(译者注:真有些搞不明白)
5. 作业调度与工作流

作业调度不是工作流,理解这一点很重的要。它们常被同时应用于一个方案中,但它们是两个截然不同的解决办法,并且都可孤立使用。一个作业通常由几个步骤组成。我们回过头来看前面提到的那个密码过期的作业,实质上它是由三个步骤所组成。
1. 获取到密码将要过期的用户列表
2. 为列表中的用户各自发送一个邮件
3. 更新记录,下次就能知道哪些邮件发送过

这个作业可以使用工作流的优点,作业的每一部份恰好对应着工作流的每一个步骤。这并非意味着离开了工作流,作业调度会有些糟。这是普通的下一步、下一步简单操作。只要作业调度框架与第三方工作流能轻便的解决问题,就是好的。更多的关于Quartz和工作流的内容将会在第十四章,“使用Quartz和工作流”详解。

6. 关于作业调度其他可选择方案

正如你所知,这本书是讲Quartz的,但是Quartz的可替代方案呢?当我们比较作业调度方案的时候肯定要提到别的同类应用,那么现在就来简单介绍一下它们。
Java SDK Timer 和 TimerTask 类
java.util.Timer和java.util.TimerTask这两个类是自1.3版本才加入到JDK中来的。这两个新类可以实现一个最基本的调度器。也就只能作为我们理想的完整调度器框架的一个小的部件。任何严格意义的作业调度器都提供直接指定执行时间,存储作业信息到多种介绍和使用钩子进行定制及其他更多的功能。单纯靠JDK的那两个类还不足以构建一个真正的作业调度器。JAVA的Timer类也没办法对作业和触发器作相应的组织,使用每任务一个线程,而不是线程池的方式,还有其他不足之处难以成全其实现一个完全意义的作业调度器。
本土方案

从前面提到的Timer和TimerTask类来看,我们很容易低估创建一个灵活的、并且日后可扩展的作业调度器所作出的努力。创建一个作业调度器也不视之为微不足道的活儿。它需要的不仅仅是Java线程方面的专业技术,还需要解决其他更复杂的课题。如果你没有这方面成熟的专业知识,别想着作业调度器能直接随意一份草稿能一蹴而就。

商业解决方案

现在市面上也能见到不少商业的作业调度产品。在本书中,我们不打算花功夫去了解和评估那些商业化产品。表1.1 中列出了当下流行的几个解决方案,你可以通过所给相应的URL获得更详尽的信息。

表 1.1 商业作业调度器

名称
网址

Flux Scheduler
www.fluxcorp.com/

Enterprise Batching Queuing
www.argent.com/p/qe/qe.html

Unicenter AutoSys Job Management 4.5
www.ca.com

BMC Software ControlM
www.bmc.com

Cybermation ESP Espresso 4.2
www.vexus.ca

Argent software The Argent Job Scheduler 4.5A
www.argent.com

Tidal Enterprise Scheduler
www.tidalsoftware.com

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 柔性作业车间调度问题是指在具有某些约束条件的车间,如何合理地安排设备的使用,使得所有作业能够在规定的时间内完成,同时尽量减少生产成本。 MK算例是一种常用于求解此类调度问题的解法。其基本思路是将车间的作业划分为若干个阶段,并按照优先级进行排序。然后,按照一定的规则分配设备,并利用各种约束条件进行求解,可以得到最优的调度方案。 对于柔性作业车间调度问题,需要考虑的约束条件包括设备工作时间,设备切换时间,作业加工时间和作业之间的交错关系等。在进行算法求解时,需要根据这些约束条件进行有效地编码和解码,以实现快速而有效的求解。 总之,柔性作业车间调度问题是一项复杂而重要的生产调度任务,MK算例是一种常用的求解算法。在实践,需要综合考虑各种约束条件,灵活运用调度策略和技巧,以提高生产效率和降低生产成本。 ### 回答2: 柔性作业车间调度是现代工业生产非常重要的一环,它可以有效地提高生产效率、降低成本,并且能够适应生产需求的变化,实现生产的最优化。MK算例是柔性作业车间调度一个常用的算法。 MK算例是一种基于遗传算法的作业车间调度算法。它主要分为两个步骤:首先通过遗传算法的方式对作业序列进行优化,然后再根据优化后的作业序列进行车间调度。在优化作业序列时,MK算例主要考虑每个作业任务的加工时间、加工设备、工件存储区域等因素,通过遗传算法的方式对作业任务进行排列组合,得到最佳的作业序列。在车间调度时,MK算例通过生成作业开始时间的方法,确定每个作业的开工时间、加工时间和完成时间等。同时,MK算例还可以进行异常情况的处理,如设备故障、工艺异常等情况的处理。 MK算例通过遗传算法的方式对车间调度进行优化,可以有效地降低生产成本、提高生产效率,同时还可以适应不同生产环境的需求。在实际应用,MK算例已经被广泛地应用于工业生产的各个方面,并且在大量的案例得到了验证和应用。 ### 回答3: 柔性作业车间调度是指在生产过程,根据客户需求和生产情况,灵活调整车间生产计划,以达到最佳的生产效益和客户满意度。而mk算例则是一个常用的调度算法,也被广泛应用于生产制造。 在柔性作业车间调度mk算例,需要考虑以下几个方面: 首先是任务的分配和调度。车间内有多种不同类型的设备,每个设备可以完成不同的任务。在任务分配需要考虑到设备的类型特性,同时将任务按照其完成时间、优先级等因素进行评估,然后进行优先级调度和任务分配。 其次是设备调度,车间内的设备都是有限的资源,需要对其进行合理的调度。在设备调度需要考虑它们的特性,如加工能力、维修需要等。通过对设备负载的监控和分析,实现对设备的动态调度。 再次是车间作业调度。在车间作业调度需要考虑的是车间内多个任务之间的相互影响。通过调整车间生产计划来防止任务之间的冲突,实现车间内各项任务的协调与统一。 最后是数据的收集和分析。在柔性作业车间调度mk算例,需要对生产过程的各类数据进行收集和分析,以帮助生产管理人员做出更加准确的决策。通过对数据的分析,可以及时发现生产问题,并进行及时的处理。同时也为车间内生产计划的优化提供了有力的支持。 综上所述,柔性作业车间调度mk算例是一种基于计算机算法的生产管理方式,它能够有效地帮助企业提高生产效益和降低生产成本。同时也能够提高车间生产计划的灵活性和符合度,为企业的高效发展提供有力支持。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值