[关闭]
@xtccc 2016-07-24T14:20:06.000000Z 字数 761 阅读 2181

Long Running Job / Blocking

给我写信
GitHub

此处输入图片的描述

Akka


参考链接:


1. Blocking Call


如果某个actor中需要处理一个运行很久的job(例如读取1个10GB的文件),或者这个actor需要等待一个较长的时间才能继续运行(例如必须等待一个外部的事件发生后才能往下走),那么我们就收此时actor发生了block。

当遇到actor block发生时,必须很小心的应对这种情况,因此当actor处于block状态时,它无法对外界的其他事件作出响应。

对于这种情况,我们通常的做法是将耗时的操作(blocking call)放在Future中,然后返回。这种做法过于简单:当app在高负荷下运作时,很容易遇到瓶颈,或者发生耗尽内存或者线程的情况。




2. Solutions


对于blocking problem,正确的应对方式包括但不限于如下几种方法:



我们最好把配置线程池的任务交给Akka来完成:通过application.conf进行配置,并创建ActorSystem实例。





添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注