Ưu điểm:
- nó easy-- không có thay đổi ứng dụng yêu cầu.
- tốt hơn sử dụng bộ nhớ đệm RAM địa phương (ví dụ như tìm kiếm lý lịch thành viên một lần, bộ nhớ cache nó, và có thể tái sử dụng nó lần ghé thăm sau từ cùng một người dùng)
Nhược điểm:
- nếu máy chủ bị hỏng, phiên bị mất. (lưu ý rằng đây là một con của lưu trữ thông tin phiên cục bộ trên máy chủ web-- không phải của các phiên cố định trên mỗi giây). nếu những gì trong phiên thực sự quan trọng đối với người dùng (ví dụ: email dự thảo) hoặc trang web (ví dụ: giỏ hàng) thì việc mất một trong các máy chủ của bạn có thể rất đau đớn.
- tùy thuộc vào việc thực hiện "dính" trong trình cân bằng tải của bạn, có thể trực tiếp tải không đồng đều đến một số máy chủ so với các máy chủ khác
- trực tuyến máy chủ mới không ngay lập tức cung cấp tải máy chủ mới - nếu bạn có động hệ thống cân bằng tải để đối phó với gai, độ bám dính có thể làm chậm khả năng phản ứng của bạn nhanh chóng với mức tăng đột biến. Điều đó nói rằng, đây là một phần của một trường hợp góc và thực sự chỉ áp dụng cho các trang web rất lớn và tinh vi.
- nếu bạn có ít người dùng nhưng lưu lượng truy cập của một người dùng có thể làm lu mờ một máy chủ (ví dụ: các trang phức tạp với SSL, AJAX, hình ảnh được tạo động, nén động, v.v.) 'không lây lan một tải của người dùng duy nhất đồng đều trên các máy chủ. Nếu bạn có nhiều người dùng đồng thời, đây không phải là vấn đề vì tất cả các máy chủ của bạn sẽ bị tràn ngập!
Nhưng nếu bạn phải sử dụng trạng thái phiên máy chủ cục bộ, các phiên cố định chắc chắn là cách để đi-- và thậm chí nếu bạn không sử dụng trạng thái phiên máy chủ cục bộ, tính dính có lợi ích khi sử dụng bộ nhớ cache (xem ở trên). Trình cân bằng tải của bạn sẽ có thể xem cookie HTTP (không chỉ địa chỉ IP) để xác định độ dính, vì địa chỉ IP có thể thay đổi trong một phiên duy nhất (ví dụ: ghép nối máy tính xách tay giữa mạng có dây và không dây).
Thậm chí tốt hơn, không sử dụng trạng thái phiên trên máy chủ web! Nếu trạng thái phiên rất mất mát (ví dụ: giỏ hàng), lưu trữ nó trong cơ sở dữ liệu trung tâm và xóa các phiên cũ theo định kỳ. Nếu trạng thái phiên không quan trọng (ví dụ: tên người dùng/URL hình đại diện), sau đó dán nó vào cookie-- chỉ cần đảm bảo bạn không đẩy quá nhiều dữ liệu vào cookie.
Phiên bản hiện tại của Rails, theo mặc định, lưu các biến phiên trong cookie vì những lý do trên. Các khung công tác web khác có thể có tùy chọn "lưu trữ trong cookie" và/hoặc "lưu trữ trong DB".
Nguồn
2009-10-15 06:51:13
Tốt anwsers! Bạn vui lòng giải thích thêm một chút về "Cân bằng tải của bạn có thể xem xét các cookie HTTP (không chỉ địa chỉ IP)", ý bạn là gì hơn? Làm thế nào có thể cân bằng tải biết nếu nó là cùng một người dùng? – Jaskey
Ứng dụng web thường gửi cookie xuống máy khách để khi khách hàng đó trả lại yêu cầu HTTP khác, máy chủ có thể nhận ra cùng một người dùng hoặc phiên. Một số cân bằng tải có thể xem bên trong tiêu đề cookie HTTP để xác định người dùng và có thể sử dụng giá trị cookie đó thay vì địa chỉ IP để xác định máy chủ nào sẽ nhận được yêu cầu đó. –
Nếu tôi lưu trữ trạng thái trong db/memcache, tôi có thể coi ứng dụng là không trạng thái, trong khi một số người sẽ nói rằng để tạo ứng dụng không trạng thái, chúng tôi phải duy trì trạng thái trong ứng dụng khách. – Jaskey