`

关于异步操作的汇总

阅读更多
随着互联网用户体验,和性能的要求,异步操作越来越凸显重要性。
所谓异步操作勉强理解为事件发生不在同一时间完成。结合一些自己用到的技术总结一下此类运用。

基于后台:
redis resque

Resque是这样解决这些问题的:
后台任务的角色划分
其实从上面的问题已经可以看出,只靠一个消息队列是无法解决所有问题的,需要新的角色介入。在Resque中,一个后台任务被抽象为由三种角色共同完成:

Job | 任务 : 一个Job就是一个需要在后台完成的任务,比如本文举例的发送邮件,就可以抽象为一个Job。在Resque中一个Job就是一个Class。
Queue | 队列 : 也就是上文的消息队列,在Resque中,队列则是由Redis实现的。Resque还提供了一个简单的队列管理器,可以实现将Job插入/取出队列等功能。
Worker | 执行者 : 负责从队列中取出Job并执行,可以以守护进程的方式运行在后台。
那么基于这个划分,一个后台任务在Resque下的基本流程是这样的:

将一个后台任务编写为一个独立的Class,这个Class就是一个Job。
在需要使用后台程序的地方,系统将Job Class的名称以及所需参数放入队列。
以命令行方式开启一个Worker,并通过参数指定Worker所需要处理的队列。
Worker作为守护进程运行,并且定时检查队列。
当队列中有Job时,Worker取出Job并运行,即实例化Job Class并执行Class中的方法。
至此就可以完整的运行完一个后台任务。

在Resque中,还有一个很重要的设计:一个Worker,可以处理一个队列,也可以处理很多个队列,并且可以通过增加Worker的进程/线程数来加快队列的执行速度。
更多详细见http://www.cnblogs.com/youxin/p/3986580.html

python celery
celery和Resque的设计理念有很大不同,Resque可以理解为将sql实现在类代码中,celery则是直接将要执行的sql记录到数据库表中做调用。

rake+crontab+时间表字段


rufus-scheduler

基于数据库:oracle存储过程+job
0
0
分享到:
评论

相关推荐

    NET2.0对FTP操作(异步上传,下载等)实现汇总

    NET2.0对FTP操作(异步上传,下载等)实现汇总

    angularjs 处理多个异步请求方法汇总

    在实际业务中经常需要等待几个请求完成后再进行下一步操作。但angularjs中$http不支持同步的请求。 解决方法一: 代码如下: $http.get(‘url1’).success(function (d1) {  $http.get(‘url2’).success(function ...

    Redis常见面试题汇总.pdf

    载在内存当中进行操作,定期通过异步操作把数据库数据flush到硬盘上进行保存。因为是 纯内存操作,Redis的性能非常出色,每秒可以处理超过10万次读写操作,是已知性能最快 的Key-Value DB。Redis的出色之 处不仅仅是...

    前端开发常见问题汇总概要总结.docx

    异步编程:理解和处理异步流程控制,如setTimeout、setInterval、Promise、async/await等。 DOM操作性能:频繁操作DOM可能导致页面性能下降,需要合理使用事件委托、DocumentFragment、批量更新DO

    Node.js文件操作方法汇总

    一、同步、异步打开关闭 /** * Created by Administrator on 2016/3/21. */ var fs=require("fs"); //同步读 fs.openSync = function(path, flags, mode) //模块fs.js文件中如上面定义的openSync 函数3个参数 //....

    2023前端vue面试题汇总

    watch 是监听动作,computed 是计算属性 watch 没缓存,只要数据变化就执行。... watch 可以执行异步操作,而 computed 不能 watch 常用于一个数据影响多个数据,computed 则常用于多个数据影响一个数据

    大数据常用数据库汇总.pdf

    ⼤数据常⽤数据库汇总 通常数据库分为关系型数据库和⾮关系型数据库,关系型数据库的优势到现在也是⽆可替代的,⽐如MySQL、SQL Server、Oracle、 DB2、SyBase、Informix、PostgreSQL以及⽐较⼩型的Access等等数据库...

    async-react-future:尝试异步React的高级api

    汇总了每个人使用Async React所做的所有事情,以便于进行演示和实验。 警告:此内容不得用于生产该库可帮助人们尝试所探索Async React。实际观看非暂停演示克隆简单的电影演示克隆-无悬念,无可加载的React电影演示...

    PIC32MX定时器

    对于软件应用程序或实时操作系 统,定时器可用于产生精确的基于时间的周期性中断事件。其他用途包括对外部脉冲进行计数, 或通过使用定时器的门控功能进行外部事件的精确时序测量。 除了个别例外,所有定时器都具有...

    网络工程师考点汇总

    2、ATM采用了异步时分多路复用技术ATDM,ATDM采用排队机制,属于不同源的各个信元在发送到介质上之前,都要被分隔并存入队列中,这样就需要速率的匹配和信元的定界。 3、应用独立:主要表现在时间独立和语义独立两...

    Note-Frontend:前端知识案例汇总--实践很重要!!!

    扩展库1.jquery2.W3C1.HTMLcanvastable2.CSS3.JS Web API1.DOM 操作2.BOM 操作3.事件绑定4.ajax5.扩展库4.HTTP5.存储1.cookie2.session3.token4.localstorage5.sessionStorage6.indexDB6.websocket三.开发环境1.git2...

    nodejs-sandbox:旨在汇总与Node.js和JavaScript相关的概念和实践的存储库

    nodejs-沙箱旨在汇总与Node.js和JavaScript相关的概念和实践的存储库什么是Node.js 它是用于执行旨在面向异步事件JavaScript的平台,允许创建以非常可扩展的方式使用网络资源的应用程序,能够处理无数并发连接,与...

    支付系统数据库设计思考.pdf

    ⽤户⽀付宝⽀付后,⽀付宝回调,如果回调成功,则更新⽀付单信息,异步发起余额⽀付操作,记录⽀付操作流⽔等 6.⽀付宝回掉后,⽀付宝回调成功,如何知晓,该笔主⽀付单绑定了两笔从⽀付单呢,此时判断⽀付宝回调的...

    华为harmonyos公测-HarmonyOS-examples:鸿蒙示例

    HarmonyOS应用开发的各种示例,项目及开发教程汇总,帮助初学者快速掌握HarmonyOS应用开发。 没有人能熄灭满天的星光,每一位开发者,让我们在此汇集,一起点亮整个星空。 记得给仓库点个 Star 哟:winking_face: 一...

    netty-study:netty-study

    一。概念问题 1.1双边和非双边 ...1.3 IO的操作汇总 IO(BIO)同步双向IO NIO异步非双向IO(使用线程池来进行实现) 1.4 IO的概念 BIO适用于连接数量比较小,而且是固定的架构,程序了解起来也比较简单。

    asp.net知识库

    .NET关于string转换的一个小Bug Regular Expressions 完整的在.net后台执行javascript脚本集合 ASP.NET 中的正则表达式 常用的匹配正则表达式和实例 经典正则表达式 delegate vs. event 我是谁?[C#] 表达式计算引擎...

    java-study-code:一个空间,您可以在其中实际地编码与Java开发有关的已学习内容。

    1.基本演示项目 ... 基本概念是将大型任务分解为较小的任务单元,在不同的CPU上并行执行,然后汇总结果。 核心技能是一种称为“偷工减料”的技术。 这是一种删除空闲线程的方法,详细操作如下。 如上图所示

Global site tag (gtag.js) - Google Analytics