Làm cách nào để các trang web lớn không thể hoàn toàn không quốc tịch đạt được khả năng mở rộng cực cao ở cấp web?Sharding (sic!) Tầng web để ngăn chặn tắc nghẽn cân bằng tải?
Có các trang web như eBay và Amazon, không thể hoàn toàn vô quốc tịch vì chúng có giỏ hàng hoặc thứ gì đó tương tự. Không thể mã hóa mọi mục trong giỏ hàng vào URL, cũng không khả thi để mã hóa mọi mục vào cookie và gửi nó ở mọi kết nối. Vì vậy, Amazon chỉ lưu trữ session-id vào cookie đang được gửi. Vì vậy, tôi hiểu rằng khả năng mở rộng của tầng web của eBay và Amazon sẽ khó khăn hơn nhiều so với khả năng mở rộng của công cụ tìm kiếm google, nơi mọi thứ có thể được mã hóa một cách an toàn vào URL.
Mặt khác, cả eBay cũng như Amazon đều có quy mô lớn. Tin đồn là có khoảng 15000 máy chủ ứng dụng J2EE tại eBay.
Làm cách nào để các trang web này xử lý cả hai: khả năng mở rộng và trạng thái cực đoan? Vì trang web là trạng thái, nên không thể thực hiện một DNS-Balancing đơn giản. Vì vậy, người ta sẽ giả định rằng các công ty này có một cân bằng tải dựa trên phần cứng như BigIP, Netscaler hoặc một cái gì đó như thế, đó là thiết bị duy nhất đằng sau địa chỉ IP duy nhất của trang web đó. Bộ cân bằng tải này sẽ giải mã SSL (nếu được mã hóa), kiểm tra cookie và quyết định tùy thuộc vào id phiên của cookie mà máy chủ ứng dụng giữ phiên của khách hàng đó.
Nhưng điều này chỉ có thể không thể làm việc như không có cân bằng tải duy nhất có thể có thể xử lý tải của hàng ngàn máy chủ ứng dụng? Tôi sẽ tưởng tượng rằng ngay cả những cân bằng tải phần cứng không quy mô đến mức như vậy.
Ngoài ra, cân bằng tải đang được thực hiện một cách minh bạch cho người dùng, tức là người dùng không được chuyển tiếp đến các địa chỉ khác nhau, nhưng tất cả vẫn ở lại www.amazon.com toàn bộ thời gian. Vì vậy, câu hỏi của tôi là: Có một số thủ thuật đặc biệt mà người ta có thể đạt được một cái gì đó như minh bạch sharding của tầng web (không phải là tầng cơ sở dữ liệu được thực hiện phổ biến)? Miễn là cookie không được kiểm tra thì không có cách nào để biết máy chủ ứng dụng nào đang nắm giữ phiên này.
Chỉnh sửa: Tôi nhận thấy rằng chỉ có nhu cầu minh bạch, nếu có nhu cầu cho trang web được spidered và đánh dấu. Ví dụ. nếu trang web chỉ là một ứng dụng web, giống như hệ thống đặt vé máy bay hoặc vé tàu, thì sẽ không có vấn đề gì khi chỉ chuyển hướng người dùng đến các cụm máy chủ web cụ thể theo các url khác nhau, ví dụ: a17.ticketreservation.com. Trong trường hợp cụ thể này, nó sẽ là khả thi khi chỉ sử dụng nhiều cụm máy chủ ứng dụng, mỗi cụm phía sau cân bằng tải của riêng mình. Thật thú vị, tôi không tìm thấy một trang web sử dụng loại khái niệm này. Chỉnh sửa: Tôi đã tìm thấy khái niệm này discussed tại highscalability.com, trong đó cuộc thảo luận đề cập đến một bài viết của Lei Zhu có tên "Client Side Load Balancing for Web 2.0 Applications". Lei Zhu sử dụng kịch bản chéo để làm cân bằng tải phía khách hàng này một cách minh bạch.
Thậm chí nếu có những hạn chế, như đánh dấu trang, xss, v.v, tôi nghĩ rằng điều này nghe như một ý tưởng cực kỳ tốt cho một số tình huống đặc biệt, cụ thể là hầu hết các ứng dụng web không có nội dung. (ví dụ: hệ thống đặt vé hoặc thứ gì đó tương tự). Sau đó, không cần phải cân bằng tải một cách minh bạch.
Có thể có chuyển hướng đơn giản từ trang web chính đến máy chủ, ví dụ: chuyển hướng từ www.ticketreservation.com đến a17.ticketreservation.com. Từ đó, người dùng ở lại máy chủ a17. a17 không phải là một máy chủ, mà là một cụm chính nó, do đó dự phòng có thể đạt được.
Máy chủ chuyển hướng ban đầu có thể là cụm phía sau trình cân bằng tải. Bằng cách này, một khả năng mở rộng thực sự cao có thể đạt được, như cân bằng tải chính sau www chỉ được nhấn một lần vào đầu mỗi phiên.
Tất nhiên, chuyển hướng đến các url khác nhau trông cực kỳ khó chịu, nhưng với các ứng dụng web đơn thuần (không cần phải được liên kết sâu hoặc được đánh dấu sâu), thì đây chỉ là vấn đề quang học cho người dùng ?
Cụm chuyển hướng có thể thăm dò ý kiến tải trọng của cụm ứng dụng và điều chỉnh chuyển hướng phù hợp, do đó đạt được cân bằng và không chỉ phân phối tải.
Máy chủ web không trạng thái tìm máy chủ ứng dụng chính xác như thế nào? Mỗi máy chủ web có biết về mỗi phiên mà bất kỳ máy chủ ứng dụng nào nắm giữ không? Sẽ không phải là chi phí truyền thông khủng khiếp này? – SAL9000
Cân bằng tải sử dụng id phiên của bạn hoặc có thể địa chỉ IP của bạn làm đầu vào để chọn máy chủ ứng dụng. Nếu mỗi bộ cân bằng tải có cùng một thuật toán để chọn máy chủ ứng dụng, điều đó không quan trọng đối với việc bạn tải về trình tải trọng nào, bạn sẽ luôn được gửi đến cùng một máy chủ ứng dụng. Không có thông tin liên lạc giữa máy chủ ứng dụng và cân bằng tải liên quan. –