Tôi muốn biết sự khác biệt giữa các phiên dính và không dính. Những gì tôi hiểu sau khi đọc từ internet:Các buổi họp kín và không dính
Chú ý: chỉ một đối tượng phiên duy nhất sẽ ở đó.
không dính phiên: phiên đối tượng cho mỗi nút máy chủ
Tôi muốn biết sự khác biệt giữa các phiên dính và không dính. Những gì tôi hiểu sau khi đọc từ internet:Các buổi họp kín và không dính
Chú ý: chỉ một đối tượng phiên duy nhất sẽ ở đó.
không dính phiên: phiên đối tượng cho mỗi nút máy chủ
Khi trang web của bạn được phục vụ bởi chỉ 1 web server
, đối với mỗi cặp, một đối tượng session được tạo ra và duy trì trong bộ nhớ của máy chủ web. Tất cả các yêu cầu từ máy khách đến máy chủ web này và cập nhật đối tượng phiên này. Nếu một số dữ liệu cần được lưu trữ trong đối tượng phiên trong khoảng thời gian tương tác, nó được lưu trữ trong đối tượng phiên này và vẫn tồn tại ở đó miễn là phiên tồn tại.
Tuy nhiên, nếu trang web của bạn được phục vụ bởi multiple web servers
nằm phía sau load balancer
, trình cân bằng tải sẽ quyết định mỗi yêu cầu thực tế (vật lý) nào cần thực hiện. Ví dụ, nếu có 3 máy chủ web A, B và C đằng sau bộ cân bằng tải, có thể www.mywebsite.com/index.jsp được phục vụ từ máy chủ A, www.mywebsite.com/login.jsp được phục vụ từ máy chủ B và www.mywebsite.com/accoutdetails.php được phục vụ từ máy chủ C.
Bây giờ, nếu các yêu cầu đang được phục vụ từ (vật lý) 3 máy chủ khác nhau, mỗi máy chủ đã tạo đối tượng phiên cho bạn và vì các phiên này các đối tượng ngồi trên 3 hộp độc lập, không có cách nào trực tiếp để biết cái gì có trong đối tượng phiên của đối tượng kia. Để đồng bộ hóa giữa các phiên máy chủ này, bạn có thể phải ghi/đọc dữ liệu phiên vào một lớp phổ biến cho tất cả - như một DB. Bây giờ viết và đọc dữ liệu đến/từ một db cho trường hợp sử dụng này có thể không phải là một ý tưởng hay. Bây giờ, đây là vai trò của phiên dính. Nếu load balancer
được hướng dẫn sử dụng các phiên dính, tất cả các tương tác của bạn sẽ xảy ra với the same physical server
, ngay cả khi các máy chủ khác có mặt. Vì vậy, đối tượng phiên của bạn sẽ giống nhau trong toàn bộ tương tác của bạn với trang web này.
Để tóm tắt, trong trường hợp Phiên cố định, tất cả các yêu cầu của bạn sẽ được chuyển đến cùng một máy chủ web vật lý trong khi trường hợp không cân bằng tải có thể chọn bất kỳ máy chủ web nào để phục vụ yêu cầu của bạn.
Như một ví dụ, bạn có thể đọc về cân bằng tải đàn hồi của Amazon và các buổi dính ở đây: http://aws.typepad.com/aws/2010/04/new-elastic-load-balancing-feature-sticky-sessions.html
Tôi đã thực hiện một câu trả lời với một số chi tiết ở đây: https://stackoverflow.com/a/11045462/592477
Hoặc bạn có thể đọc nó ở đó ==>
Khi bạn sử dụng cân bằng tải có nghĩa là bạn có nhiều trường hợp tomcat và bạn cần phải chia tải.
@ TJ- điều gì sẽ xảy ra nếu một nút sẽ không khả dụng? – gstackoverflow
Trong hầu hết các trường hợp, phiên sẽ bị mất. Trong trường hợp [AWS ESB] (http://docs.aws.amazon.com/ElasticLoadBalancing/latest/DeveloperGuide/elb-sticky-sessions.html) _Nếu một cá thể thất bại hoặc trở nên không lành mạnh, bộ cân bằng tải sẽ dừng yêu cầu định tuyến đến đó Ví dụ, thay vào đó chọn một thể hiện lành mạnh mới dựa trên thuật toán cân bằng tải hiện có. Bộ cân bằng tải xử lý phiên làm việc hiện tại "bị kẹt" với phiên bản mới khỏe mạnh và tiếp tục định tuyến các yêu cầu cho cá thể đó ngay cả khi trường hợp không thành công quay lại._ –
Theo thông tin nào thì LoadBalancer tạo một phiên HTTP dính? Đặc biệt về kết nối HTTPS vấn đề này trở nên thú vị. Bạn có cấp dữ liệu LB với khóa riêng của máy chủ web để có thể chia kết nối SSL và tìm nạp phiên HTTP không? Hay LB chỉ đơn giản là sử dụng địa chỉ IP của khách hàng? Trong trường hợp này, điều gì về máy chủ proxy, nơi nhiều khách hàng sử dụng cùng một địa chỉ IP? Hoặc thậm chí tệ hơn, các khách hàng di động, nơi mà địa chỉ IP thay đổi thường xuyên? Hay thậm chí còn có một kỹ thuật tốt hơn cho điều đó? Cảm ơn – g000ze