我們正在構建的應用程序有一個非常簡單的概念:它接收來自數據庫的傳入事件,併爲每個事件打開一個交互式會話與客戶端(在事件中)菜單。根據客戶的反應,我們進入下一個狀態或採取一些具體行動(例如轉移資金)。使用演員/ AKKA的面向會話的異步架構
會話是相互獨立的。例如,假設我們從數據庫中獲取兩個事件,即客戶A和B已達到零帳戶餘額狀態。針對這一事件,我們建立了兩個連接A和B顯示的菜單看起來像下面這樣:
Please select an option:
1. Get $5
2. Get $10
3. Ignore
對於選項1和2,我們在秒菜單的形式,要求確認。
Are you sure?
1. yes
2. no
在這種情況下,我們將有兩個會話。客戶A可能會選擇選項1(1. Get $5
),而客戶B選擇選項3 [在第一個菜單中]。在客戶A的情況下,我們將提供第二個菜單(上面),如果回覆爲1. yes
,我們將採取一些具體措施,如轉賬和關閉會話。
所有客戶端通信都由第三方系統完成,該系統採用JSON(包括客戶端地址,菜單文本)並將響應返回給我們。它負責實際維護會話,而我們只需要做響應關聯和處理會話狀態。
我們預計會同時處理50,000個此類會話。
此前,我們使用SEDA模型設計了Java系統。聽說過Actor,我們願意檢查它們並編寫一個快速的PoC項目(Java/AKKA)。我的問題是:
有沒有人有建立此類應用程序的經驗嗎?對於AKKA來說,是否有50,000個同時進行的會話太多? (注意,我們只是在等待迴應,當答案出現時,根據回答,我們跳到下一個階段,所以應該可以)。
哪種建築風格/範例最適合AKKA的這個問題?這種問題有沒有框架?
首先,阿卡不是首字母縮略詞。其次,如果避免全局狀態,縮放Akka非常簡單。它使橫向擴展非常簡單,很可能不會成爲你的瓶頸(這幾乎肯定會成爲數據庫)。 – Ryan