假設 -用戶狀態應用
- 有4個服務器坐在後面充當負載平衡器
- 負載均衡器的反向代理是純粹的負載平衡和發送到請求這取決於它們的電流負載的任何4個服務器
- 用戶需要進行身份驗證來訪問這個應用程序,以及一些空間應保存所有用戶的狀態,作爲反向代理僅僅是負載均衡
- 應用需要超越規模4服務器,比如4000個服務器。
問題 -
- 在誰保存所有用戶的狀態的大型多服務器系統 - 負載均衡,每個服務器,獨立的服務器?
- 所有用戶的狀態是否保存在所有服務器上,以便負載均衡器可以向任何服務器發送請求?這如何擴展到1億用戶?
假設 -用戶狀態應用
問題 -
在狀態應用,各個服務器通過粘性會話保存用戶的狀態。
如果可能,請儘量讓您的應用程序保持無狀態。無狀態應用程序將具有更好的性能,並且比有狀態的應用程序更容易擴展。
您可以使用粘性會話。它使負載平衡器能夠將用戶的會話綁定到特定的實例。這可確保會話期間來自用戶的所有請求都發送到同一實例。閱讀Sticky and NON-Sticky sessions。
另外,假設實例因某種原因被終止,爲了維護狀態,認證令牌和其他信息也可以保存在單獨的redis緩存中,這對查詢來說要快得多。讀Session Management in microservices