批处理技术对Web开发者的价值

批处理技术对Web开发者的价值


作者:Justin James
翻译:PurpleEndurer
分类:应用程序开发,网站开发
标签:网站,批处理,网络应用程序,云计算,编程语言,软件开发,软件/网络开发


  进入互联网时代以来的最大转变之一,就是应用程序迁移到实时数据处理。许多开发人员从来没有用批处理模式写过东东,这得感谢教学方面的改变,以及在商业世界中的体验。尽管如此,批次处理技术仍然应该在开发者的开发工具包中占有用武之地。

  什么是批处理?
  批处理是当你的代码被设计为对自上次运行以来的累积做迭代输入,它也被设计为定期运行。例如,银行将记录整个交易数据,然后在夜间用批处理后将发到客户帐户上。这与实时处理相反,实时处理中的计算是直接对输入作出响应的。
  我第一次了解批处理是在高中,当时我们在学习用COBOL来做。时至今日,在许多批处理方案中仍有大量的COBOL应用程序,其中包括银行的日末处理(end-of-day processing),保险公司以及其他类似的大数据环境。但将批处理限定于主机类的程序则于理不合,例如,一个包含周期性帐单处理部分或者定期报告制度的服务需要一个批处理系统。

  使用批处理的优势

  批处理拥有一些超过实时处理的优势,包括以下方面:


  ▲ 交易可以进行得更快,因为它们不必在前台处理;取而代之的是,只需要提供足够的数据,批量处理任务就能找到所需的数据。
  ▲ 如果你的公司每天有一段时间相对不那么忙,你的批处理可以在这段时间里充分利用闲置的基础设施运行,从而减少在处理高峰负荷期间对它的要求。
  ▲ 批处理很适合加入到以虚拟化和云环境中,在这种环境中资源可缩放或根据需要转移负荷,这可以节省大量用于硬件和能源的资金。
  ▲ 在应用程序因系统需要与用户交互而占用大量资源的情况下,把处理部分从系统中分离出来进行批处理的作用是巨大的;这儿可以再次联想到云和虚拟化环境。


  为何失宠?
  如果批处理的作用是如此大,为什么会慢慢消失呢?Web的发展有很大关系,但在企业普遍变脸也是一个重要因素。主要原因如下:

  ▲ Web应用程序无法自行启动,它们需要有一个触发器来启动,这使得调度批处理的想法难以想见。
  ▲ Web应用程序预计将只通过文件拷贝来布署,这就断绝了使用操作系统级调度的想法。
  ▲ Web应用程序都应该执行小型、个别量的工作,并在几秒钟内返回结果;利用用户操作来触发任何形式的批处理都非易事。
  ▲ 公司基本上都从事全球业务,没有“隔夜”或停机时间很少。
  ▲ 用户期望即时结果或交易立即反映。



  各种方法


  尽管已经有相当长一段时间没用COBOL编程了,但我写过使用定期批处理的应用程序。当工作转向Web应用程序时,我曾尝试过两种方法。
  第一种方法是Web应用程序有一部分执行批处理,并安排一个任务应其请求而检索页面。虽然这个方法可以工作,并且让你的代码库中的其它部分变得轻松悠闲,但我觉得这像一个电影场景中有太多的运动部份,特别是在它成为长期运行的任务的时候。

  我试过的另一种方法是写一个完全独立的应用程序来供系统调度。我更喜欢这种方法,但它只能在批处理任务可以访问主应用程序的逻辑(一般是通过一个共享库)时才能工作。
  也有其他选择,例如,数据库有安排调度任务的能力,如果你的处理可以完全包含数据库中,这可能会是你很棒的选择。一些开发框架和系统(如OutSystems敏捷平台,我最近才使用了许多)已内建了批任务的概念,这省了不少事。也有一种可能是你的系统连续运行(作为一个守护进程或者服务),并使用一个应用程序级的定时器视需要触发处理。
  不过,在你着手做时,需要确保你的方法按需调度,并能在布署后良好地运转。(完)

http://blogs.techrepublic.com.com/programming-and-development/?p=2727

你可能感兴趣的:(Web,应用服务器,敏捷开发,网络应用,企业应用)