延迟执行的,PHP最优解决方案

讲一下我们公司的业务吧。

我们公司是当前市面上最火热,最热辣的O2O。为了解决这一块问题,我们公司针对附近3.5KM的任务来进行派活。如果5分钟内,有附件的商家在接活这个活就是商家的。

如果附件的商家没有接活呢?这样用户体验不就很不好吗?所以说,我们有专门的派单的业务员。只要5分钟没人接的活,会有专门的跑腿 业务员来完成对应的工作。

所以,转换成技术语言就变成这样了:

用户派出一个活,通过IM(即时通信)系统发给商家。如果这个活被人接了,接单请求给到API。进入至交易状态。

如果这个活没有被人接,用户也没有给出反馈,怎么办?难道用线程去解决。如果中间服务器挂了呢?所以这种方案不可考。

我们想了几套不同的实线方案:

1,自己写时间服务器,缺点周期长,不好维护不同的一致性hash

2,用zookeeper来维护一致性,做好时间服务器,在指定时间后执行指定的脚本。

3,用redis 配合python或者lua来实现

4,有没有分布式的延迟队列系统

最后的讨论结果如下:

1,自己写服务器方案这个项目周期太短,方案1和方案2淘汰【淘汰】

2,用redis配合python或者是lua来实现的话效率太低【淘汰】

3,最后我们选择了aliyun的MQS,具有分布式和延迟通知的特点。当然你不想花钱的话,也可以自己架具有延迟、分布式功能的队列服务【选择】

最终实现的过程:

1,用户派单后,向队列中写入一个任务,将队列中延迟执行设为5分钟

2,商家接单了,反向通知API,将队列中的延迟任务删除

3,如果商家没有接单,到达5分钟客户端就自然结束显示

4,服务器端到达了5分钟,开始执行延时队列里面的任务,向自己公司的派单元派单,并且在客户界面中推送接单成功的消息。

完美解决。

PHP学院网友投稿,转载请注明来源。http://www.phpxy.com

原文发布于微信公众号 - php(phpdaily)

原文发表时间:2016-06-02

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小文博客

如何正确使用百度(百度——最好的老师)——小文’s blog

3131
来自专栏Java技术分享

Maven简介

      在现实的企业中,以低成本、高效率、高质量的完成项目,不仅仅需要技术大牛,企业更加需要管理大牛,管理者只懂技术是远远不够的。当然,管理可以说有很多的方...

2098
来自专栏花叔的专栏

APP与小程序间的互跳解读

说这个之前,我们来理一下APP和小程序在这之前能发生的关系,之前是“分享”+“有条件返回”的玩法。

2693
来自专栏程序人生

Docker: 优雅地部署

在我去年的一篇博客自动化的高效团队开发环境提到了用vagrant来统一开发团队的开发环境。用vagrant基本上解决了开发环境异构的问题,但VM(vagrant...

3518
来自专栏北京马哥教育

快收藏了!优秀的Linux工程师必备的8张思维导图

本文转载自简书,作者为小柑,感谢作者的辛苦付出。 现在的运维工程师在大家眼中是个什么样子呢? 是不是还是把服务器搬来搬去,每天不是在拿着Linux光盘开始装...

3805
来自专栏BeJavaGod

我们是否需要升级到JDK8?

JDK8发布至今已经很久了,很多开发人员,公司都还是使用的JDK6或者JDK7,看到很多人的评论,那么我们到底要不要升级到JDK8呢? Oracle这个婊子早已...

3967
来自专栏我的小碗汤

Jetbrains家族软件激活方法

IDEA的运行速度非常令人满意,这点尤为重要,Eclipse虽然富有多种插件,看上去似乎可以完成多种功能,但是令人沮丧的是,他的运行速度越来越慢了,逐渐的慢到了...

842
来自专栏服务端技术杂谈

初页CTO丁乐:分布式架构

初页现有架构 首先介绍一下初页目前的架构。它主要由计算服务和后面的运维与运营系统组成。 ? 计算服务由passport、works(作品服务)、social、m...

2864
来自专栏程序你好

微服务体系结构——学习、构建和部署应用程序

更好地理解微服务架构,并举例这种架构好处,以及Uber如何将它们的单体应用变成微型服务。

795
来自专栏即时通讯技术

高性能网络编程(二):上一个10年,著名的C10K并发连接问题1、前言 2、学习交流3、C10K问题系列文章4、C10K问题的提出者5、C10K问题的由来6、技术解读C10K问题7、C10K问题的本质

对于高性能即时通讯技术(或者说互联网编程)比较关注的开发者,对C10K问题(即单机1万个并发连接问题)应该都有所了解。“C10K”概念最早由Dan Kegel发...

1083

扫码关注云+社区