异步(Asynchronism)
异步工作流有助于减少那些原本顺序执行的请求时间。它们可以通过提前进行一些耗时的工作来帮助减少请求时间,比如定期汇总数据。
消息队列
消息队列接收、保留和传递消息。如果按顺序执行操作太慢的话,你可以使用有以下工作流的消息队列:
- 应用程序将作业发布到队列,然后通知用户作业状态;
- 一个 worker 从队列中取出该作业,对其进行处理,然后显示该作业完成;
不去阻塞用户操作,作业在后台处理。在此期间,客户端可能会进行一些处理使得任务看上去像是已经完成了。例如,如果要发送一条推文,推文可能会马上出现在你的时间线上,但是可能需要一些时间才能将你的推文推送到你的所有关注者那里去。
Redis
是一个令人满意的简单的消息代理,但是消息有可能会丢失。
RabbitMQ
很受欢迎但是要求你适应 AMQP 协议,并且管理你自己的节点。
Amazon SQS
是被托管的,但可能具有高延迟,并且消息可能会被传送两次。