2017-06-02 60 views
0

,因爲我已經在開發可橫向擴展的Web應用零經驗,我需要有經驗的人指導我在正確的方向。如何管理分佈式數據庫中的用戶會話?

我有困難找出存儲在數據庫中的登錄會話的正確方法,所以我來到了問題是,即使正確將它們存儲在數據庫中,當我刨日後使用複製?如果不是什麼交替?

我需要不同的客戶端(安卓,Windows中,...)連接到服務器與同一用戶自己的會話,我使用:

1 - 美分-OS操作系統作爲

2 - 的PostgreSQL如DBMS

3 - Tomee作爲HTTP服務器和Servlet容器

4 - 分區表(在PostgreSQL的繼承表),以提高性能,在存儲器索引掃描機會,防止碎片和等

我的問題加薪的事實,我需要檢查從客戶端的每個接收到的請求會話可用性(每一屆都有自己的加密密鑰),並有可能有幾百萬的會話,在分佈式環境中我不能確保創建的會話將在正確的時間在複製數據庫中可用。

感謝您的幫助

回答

0

存儲在關係數據庫中的用戶會話將evantually減少應用程序的perfermance。您應該查看分佈式緩存機制來存儲和讀取用戶會話。我強烈推薦用於用戶會話的NoSQL數據庫解決方案,例如Redis,它使您可以在鍵值對中對內存進行存儲,並以非常高的速度響應。另外,您可以調整配置文件以將內存中的鍵值對存儲到磁盤以實現持久性。您還需要關注跨多個NoSQL實例和內部數據結構(如HashMaps)分配鍵值對。您可以使用自己的散列算法將鍵值對分佈到多個實例上,從而實現高可用性。你應該記住,水平shardening您的數據會導致一些問題,你可以參考CAP theorem - Availability and Partition Tolerance脫穎而出細節。