2015-12-23 105 views
1

假設我有一個JavaScript前端(例如Angular.js),一個基於Java的後端(例如Spring上運行的Tomcat)和一個數據庫管理系統(SAP HANA內存中,就我而言)。例如,我有可以相對快速改變的圖表。WebSocket數據一致性與延遲

我想知道高效快速的架構可能是什麼樣子。你通常會發送一整套對象到用戶界面,或者你只是發送增量?

在我的情況下,UI上的數據一致性對於應用程序正常工作而言非常重要,但低延遲也是如此,尤其是在數據合併時。

當談到一致性時,我經常傾向於從插入數據庫中做一個SELECT並再次讀取整個對象集合,但我擔心這不會擴展。

有沒有一個通用的方法來解決這個問題,甚至是現有的框架?

編輯: 目前,它大約有300個對象,它們具有幾個整數屬性和交叉引用,可以在毫秒時間內進行更改和重新排列,但將來可能會增加到10000個。我的挑戰在於前端和後端之間的通信,因此前端始終具有實時一致的數據集。

+0

那麼我們在這裏談論的數據量是多少? – aksappy

+0

@aksappy目前,它有大約300個具有幾個整數屬性和交叉引用的對象,這些對象可以在毫秒時間內進行更改和重新排列,但將來可能會達到10000個對象。我的挑戰是前端和後端之間的通信,所以前端總是實時保持一致的數據。 – mitchkman

回答

1

客戶端與服務器有多接近?這是一英里/公里還是幾百/幾千英里?客戶端是在互聯網上還是在高性能VPN上?你接近骨幹還是幾十跳?如果你信任普通的互聯網,你通常不會一直在網上獲得1毫秒的延遲。

如果你在公司內部網絡上,並且客戶端在物理上距服務器很近,例如同一臺機器,同一個本地網絡,你可以通過WebSocket獲得單位數毫秒延遲(我個人已經獲得了3-4毫秒一家大型投資銀行的內部數據中心)。

不要優化得太早。這通常是一件壞事。 雖然任何高性能的用戶界面,它總是很好,只是發送增量。

您可能需要考慮某種事件機制來減少輪詢數據源。然後你只會在實際改變時更新數據。