我最近一直在研究Akka,它看起来像是一个用于在JVM上构建可伸缩服务器的好框架。但是,JVM上的大多数库都是阻塞的(例如JDBC),所以不要因为使用基于事件的模型而损失性能优势,因为线程总是被阻塞? Akka会做些什么来解决这个问题?或者只是在JVM上获得更多非阻塞库之前,您必须忍受这种情况?akka/actor模型中的同步呼叫
1
A
回答
2
看看CQRS,它通过将读取与写入分离来极大地提高可伸缩性。这意味着您可以将读取与您的写入分开进行扩展。
0
由于您提到的IO阻塞问题类型,Scala提供了一种完美匹配的语言嵌入式解决方案:Futures。例如:
def expensiveDBQuery(key : Key) = Future {
//...query the database
}
val dbResult : Future[Result] =
expensiveDBQuery(...) //non-blocking call
dbResult立即从函数调用中返回。结果将在“Future
”中提供。关于未来的很酷的部分是,你可以像任何旧系列一样思考它们,除非你永远不会在未来中致电.size
。除此之外,所有集合功能(例如map
,filter
,foreach
,...)都是公平的游戏。简单地将dbResult视为结果列表。你会怎么做这样的名单:
dbResult.map(_.getValues)
.filter(values => someTestOnValues(values))
...
调用该序列设置的运算流水线,只要结果实际上是从数据库返回被调用。在数据到达之前,您可以给出一系列计算步骤。全部是异步的。
相关问题
- 1. jQuery同步呼叫
- 2. Nservicebus同步呼叫
- 3. 使nodejs同步呼叫
- 4. DBus同步呼叫超时
- 5. magento中的同步jquery ajax呼叫
- 6. 呼叫应答器的异步呼叫
- 7. 如何使用同步呼叫GWT或等待呼叫完成
- 8. 使用角度js的同步呼叫
- 9. 呼叫Html.BeginForm异步
- 10. Ext Js Combobox - 同步呼叫设置值
- 11. WCF服务10s呼叫同步
- 12. Web API同步呼叫最佳实践
- 13. Laravel:呼叫同步或附加功能
- 14. 航行水线同步呼叫
- 15. 用于限制同时异步呼叫数的模式
- 16. 呼叫模板功能与异步
- 17. 类型的呼叫
- 18. c呼叫同步是否与命令同步一样?
- 19. 呼叫的同时
- 20. 轨道:模型内的呼叫方法
- 21. WCF同步和异步呼叫之间的区别?
- 22. 排队的异步/同步并发呼叫
- 23. Accounts.createUser中的流星异步呼叫
- 24. 取消异步呼叫
- 25. 异步PostSaveDocument呼叫代理
- 26. GWT-异步呼叫延迟
- 27. 呼叫模型的方法从不同视图
- 28. 呼叫模型方法在JavaScript
- 29. 呼叫模型+ Zend框架2
- 30. 呼叫模型功能到Laravel 5.2