2011-09-28 26 views
8

ASP.Net xử lý dữ liệu phiên trong môi trường cân bằng tải như thế nào? Giả sử người dùng thực hiện nhiều yêu cầu trong khi điều hướng qua một vài trang? Mọi yêu cầu có đi cùng một máy chủ trong bộ cân bằng tải không?ASP.Net - Xử lý dữ liệu phiên trong môi trường cân bằng tải?

Tôi có thể làm gì nếu chúng không trỏ đến cùng một máy chủ? làm cách nào để xử lý dữ liệu phiên của tôi?

Trả lời

4

Bạn cần đảm bảo rằng NLB của bạn có khả năng bật các phiên "Chú ý".

Nếu đây không phải là tùy chọn, thì bạn cần xem xét sử dụng ASP.Net Session Modes để định cấu hình Máy chủ phiên hoặc một số cửa hàng sao lưu như SQL Server.

1

Nói chung, hầu hết các bộ cân bằng tải đều cố gắng kết nối liên tục nhưng vì mục đích của bạn, bạn không thể đảm bảo nó. Tốt nhất bạn nên sử dụng một cái gì đó giống như một chương trình phụ trợ SQL để duy trì trạng thái hoặc tạo một lớp riêng để quản lý dữ liệu phiên của bạn. Trong cả hai trường hợp, bạn có thể xây dựng lại dữ liệu phiên nếu nó xảy ra là null khi bạn mong đợi nó sẽ khác. Tôi có xu hướng sử dụng các getters để kiểm tra null và xây dựng lại khi cần thiết. Trong thực tế, tôi đã không thực hiện bất kỳ số liệu để xem thường xuyên nó được xây dựng lại nhưng tôi đoán không thường xuyên. Tốt hơn là an toàn hơn xin lỗi, như họ nói.

1

Cân bằng tải thường có thể được định cấu hình bằng thứ gì đó mà cơ sở hạ tầng gọi là sticky session hoặc sticky bit. Trên loại môi trường này, một khi yêu cầu đã được gán cho một máy chủ; nó ở lại với máy chủ đó trong suốt phiên.

Khi Load Balancers không được cấu hình theo cách như vậy, ASP.NET cung cấp một số nhà cung cấp trạng thái phiên. Một cái rất phổ biến là SQL Server State Provider, cho phép thông tin phiên được lưu trữ trong cơ sở dữ liệu. Để làm việc này, tất cả các đối tượng được đặt trong đối tượng Session phải được Serializable để chúng có thể được lưu trữ trong một bảng.

Như tôi đã nói, có một số lựa chọn thay thế khác; ví dụ, một số người thích sử dụng một cách tiếp cận khác như memcached hoặc các sản phẩm tương tự.

1

Bạn có thể sử dụng NLB từ Windows hoặc các sản phẩm khác như BIG-IP F5, HA Proxy, có rất nhiều tùy chọn.

Sử dụng Out-of-Proc (Máy chủ trạng thái) và đảm bảo cài đặt máy của bạn giống nhau trên tất cả các máy chủ của bạn. Ngoài ra hãy chắc chắn rằng bạn đang làm IO trên một ổ đĩa được chia sẻ như một NAS.

Đây là liên kết với một số mẹo khác: Load Balancing and ASP.NET

Các vấn đề liên quan