后台自动任务设计和编码总结

资源预估

  • 预估数据量、算法的时间、空间复杂度
  • 依据预估的结果分配合理的资源(内存,CPU),避免资源不够用。

避免数据脏读

自动脚本处理大量数据速度快,尤其有写操作的任务,数据一致性在分布式环境下往往难以保证。这种情况下应该避免数据脏读,比如数据库会有主从复制同步延迟的现象,这时应该强制连接数据库主库。

幂等性

有写操作的脚本,需要考虑脚本执行的幂等性,即在参入相同参数多次运行与运行一次的结果相同。 保证幂等性具体应该考虑一下几点:

  • 逻辑上,检查待处理数据的状态,已经处理过的数据不再处理。
  • 禁止并发运行,不允许运行多个进程同步运行同一任务。如何保证?信号量、Memcache加锁。

参数控制

  • 在设计阶段,应该通过参数控制,限制脚本的操作范围。参数可以是时间,自动脚本周期运行,每次运行,只处理相应周期范围内的数据。
  • 注意默认参数的参数值。

读并发

自动脚本处理速度快,在和其他系统进行交互时,会对其他系统产生大量而密集的请求。

  • 要考虑其他系统的抗并发能力
  • 合理限制单位时间对其他系统的访问次数
  • 尽量将数据集中做批量请求,减少请求次数
  • 在本地做缓存,消除重复的请求。

容错 和 错误处理

  • 容错 自动脚本往往批量处理大量数据,循环处理每条数据。在单次循环中的错误或异常,应该全部捕获,并记下日志,让脚本继续运行。
  • 日志 记录重要操作,包括info、warning、error等级所有日志,形式可以是文本记录或数据库,便于追查和报警。

备灾和数据修复

  • 在不可抗拒因素(断电,其他原因宕机)等引起任务中途突然停止,应该依据日志定位、和追查处理到哪一阶段。修复错误数据。
  • 在保证脚本幂等性的前提下,重复执行脚本可自动处理未完成的工作。

优化

随着业务增长,任务处理数据量越来越大,可能会出现,任务超时,内存不够用的情况,应该及时对自动任务进行优化,优化的方案可以从算法、业务架构上考虑。

原地址: http://www.zuocheng.net/it/?p=218
作程的技术博客

时间: 2024-10-06 13:53:40

后台自动任务设计和编码总结的相关文章

【原创】纯OO:从设计到编码写一个FlappyBird (一)

说起来,自学计算机也有2年多的时间了,自己还没有从设计到编码,完完整整的设计一个基于面向对象的软件的经历..囧 于是,就有了这个系列.首先选用的语言是Java,没别的原因,HeadFirst设计模式是Java写的,而且Java的包管理比较简单,适合小工程.其次选用的题材自然是游戏啦,最近wikioi在等结果的时候就有个FlappyBird的小游戏,当时在想如果小鸟换成墙之父方老师,说不定别有一番趣味:) 从画类图到编写完各个模块,一共花了2天时间,做完了后发现解耦的还行,就跟大家分享分享. 第一

Android中UI线程与后台线程交互设计的5种方法

我想关于这个话题已经有很多前辈讨论过了.今天算是一次学习总结吧. 在android的设计思想中,为了确保用户顺滑的操作体验.一 些耗时的任务不能够在UI线程中运行,像访问网络就属于这类任务.因此我们必须要重新开启一个后台线程运行这些任务.然而,往往这些任务最终又会直接或者 间接的需要访问和控制UI控件.例如访问网络获取数据,然后需要将这些数据处理显示出来.就出现了上面所说的情况.原本这是在正常不过的现象了,但是 android规定除了UI线程外,其他线程都不可以对那些UI控件访问和操控.为了解决

PCB 后台自动系统集成与邮件推送实现

在PCB行业中,工程系统是主要数据生产者,而这些数据不仅仅给自己系统使用呀,我们需要将数据传递到各系统,才达到各系统共同协作的目的. 这里以问答方式对实现方式进行讲解.呵呵呵! 后台自动集成问题解答: 一.工程系统中数据是主动推送还是被动拉取? 工程系统中的数据通常采用是主动推送到各系统中去的(MES,OMS,APS,ADD,ERP,集成平台) 二.工程系统与多少个系统集成,集成关系图是怎么的呢? 目前工程与6个系统有集成关系,集成关系图如下所示. 三.怎么实现后台自动集成的? 当工程MI流程指

Java后台URL转码-Js编码和Java后台解码

方法一 String message = java.net.URLEncoder.encode("[西北局信息中心]采油气接口异常", "utf-8"); 前台传的如果是汉字的话,后台就用URLDecoder解码 1.java.将resultMsg 转为utf-8 (1) resultMsg = URLEncoder.encode(resultMsg, "utf-8"); (2) new String(request.getParameter(&

JSP第九次课:网上商城后台--后台相关页面设计

一.后台head页设计 1.head.jsp主要代码: %@ page language="java" import="java.util.*,mybean.*" pageEncoding="utf-8"%><%Admin admin=(Admin)session.getAttribute("admin");if(admin!=null){%> 当前用户:<%=admin.getName()%>

解决Ecshop因为动态ip问题登录后台自动退出

解决Ecshop因为动态ip问题登录后台自动退出 PHP  铁匠  2年前 (2013-07-21)  1130℃  0评论 修改lib_base.php文件real_ip()函数,添加以下代码即可解决:function real_ip(){    static $realip = NULL; if ($realip !== NULL)    {        return $realip;    }  if(isset($_COOKIE[‘real_ipd’]) && !empty($_

Wordpress后台自动更新相关设置与解答

由于Wordpress后台有很多内容是自动的,除了上文中提到的"版本更新通知"."插件更新通知"和"主题更新通知"以外,还有核心文件更新通知和翻译文件更新(自动),其实在上文的版本更新中心里面有提及相关的关闭通知方式.关闭了通知以后,wordpress博客系统有默认开启更新某些功能和默认关闭某些功能,那么无忧小编今天给大家介绍下如何设置后台自动更新. 遇到新建的Wordpress站点时,有些自动更新是默认关闭的,比如Wordpress程序的版本.

【BLE】蓝牙BLE 后台自动重连

关于ios BLE在后台自动重连的问题 找到一个国外网站是这么描述的 Re: How to make the BTLE APP to auto connect with BTLE device when iPhone4S power on 沿途见识[2] When backgrounding, you can still scan and connect to a LE peripheral.  You can scan for peripherals using scanForPeripher

HBuilder后台保活开发(后台自动运行,定期记录定位数据)

http://ask.dcloud.net.cn/question/28090 后台自动运行,定期记录定位数据 分类:HTML5+ 各位新年好 小弟以前用hbuilder开发过几个项目,现在有一新需求项目,在考虑是否使用它来实现: 需要APP在后台能定期离线监控用户定位数据,使用的是百度地图,我已经知道可以离线获取定位信息,但不知道如何能后台运行(APP不关闭,切换到后台,或者熄屏后它能继续运行),在后台定期(如20分钟)获取用户当前的位置,并记录在本地(如localstorage),然后上线时