scala – 执行上下文和调度程序 – 最佳实践,有用的配置和文档
Scala执行上下文和调度程序 – 列表和比较:为什么?
关于什么/如何/什么是用于在Scala中执行期货的最佳执行上下文以及如何配置调度程序,存在很多问题. 我能找到的最好的是Akka文档:http://doc.akka.io/docs/akka/snapshot/scala/dispatchers.html和Play文档https://www.playframework.com/documentation/2.5.x/ThreadPools. 我想问一下scala.concurrent.ExecutionContext.Implicits.global和Akka默认的配置,你在日常开发生活中使用它们,当你使用它们时,它们的优点和缺点是什么. 以下是我已经拥有的一些内容: 第一个未完成的概述 标准:scala.concurrent.ExecutionContext.Implicits.global >不确定时使用 测试 – ExecutionContext.fromExecutor(new ForkJoinPool(1)) >用于测试 播放默认的EC – play.api.libs.concurrent.Execution.Implicits._ >使用Play时使用而不是scala.concurrent.ExecutionContext.Implicits.global Akka的默认执行上下文 >基于配置 舱壁 ExecutionContext.fromExecutor(new ForkJoinPool(n)) based on an separated dispatcher . Thanks to Sergiy Prydatchenko 解决方法
理想情况下,只使用非阻塞代码,您只需使用框架执行上下文.玩框架或Akka的.
但有时您必须使用阻止API.在一个Play Framework和JDBC项目中,我们遵循他们的建议[1]并将执行上下文设置为有100个线程,并且只是在任何地方使用默认值.该系统的使用和需求非常快. 在另一个我们有阻塞和非阻塞代码混合的Akka项目中,我们为不同的功能配置了单独的调度程序.像“阻塞调度程序”,“重要功能调度程序”和“默认调度程序”.这样做很好,但比1个调度员更复杂,我们必须知道/猜测/监控每个需要多少.我们加载测试它,并发现在1个线程它太慢了,如果我们有5个线程它更好但是在10个线程之后它没有得到更快.所以我们把它留在10个线程.最终我们重构了阻塞代码并将所有内容都移到了默认值. 但每个用例都不同,您需要对系统进行分析和监控,以了解适合您的最新情况.如果所有非阻塞代码都很容易,那么每个CPU核心应该是1个线程. [1] https://www.playframework.com/documentation/2.5.x/ThreadPools#Highly-synchronous (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- angularjs – RxJS并与Angular 1一起使用
- angularjs – 如何`inject“$window`对象到`conf
- 更容易的方式在vim分割窗格之间导航
- angularjs – Angular-ui.router:更新URL,无需刷
- 如何查看一个Application是32位的还是64位的?
- Ksoap2+WebService+BaseAdapter 实现android对We
- bash – 在目录层次结构中查找并删除重复的文件名
- angular – 在’FormGroup’类型上不存在属性’f
- Angular 2中的依赖注入
- scala – 如何在阅读spark中的cassandra分区时获