我一直在研究Akka一段時間,我正在構建一個利用actor模型並需要維護與數據庫的連接的應用程序,但我有一個兩難的問題:我在哪裏放置這個連接,以及如何管理它?如何使用Akka actors管理數據庫連接?
這是我的推理至今:
- 連接應僅進行一次初始化。
- 由於連接代表一個狀態,它應該駐留在一個actor中。我們稱這個actor爲DatabaseConnection(只是爲了創造性)。
- 由於我不想分享演員的狀態,因此所有查詢都應該在演員內部發生。
- 我使用的數據庫驅動程序是reactive-mongo,因此每個查詢都會返回一個可以傳送給發件人的Future。
儘管查詢是通過期貨完成的,但我不禁想到這個模型無法擴展。只有一個線程管理所有數據庫訪問消息?即使利用期貨,這聽起來也是不合理的。 我曾經想過要讓小孩工作來管理數據庫查詢,但我將不得不與孩子分享聯繫。 我喜歡這最後的想法,因爲如果DatabaseConnection actor死了,它的所有孩子都會在理論上死去。但我不知道是否有另一種更好的方式來解決這個問題,而不分享國家。在那兒?
[Akka and ReactiveMongo]的可能重複(https://stackoverflow.com/questions/18638570/akka-and-reactivemongo) – cvargascr
[ReactiveMongo:單個連接池實例vs很多連接池實例與多個連接池的可能重複](https://stackoverflow.com/questions/45859204/reactivemongo-single-connection-pool-instance-vs-many-connection-pool-instances) – cchantep