我最近一直在研究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