2009-07-03 35 views
7

đang phát trực tuyến tùy chọn khả thi? sẽ có sự khác biệt về hiệu suất ở cuối máy chủ tùy thuộc vào việc tôi chọn? tốt hơn loại kia trong trường hợp này?bỏ phiếu dài và phát trực tiếp trong khoảng 1 bản cập nhật/giây

Tôi đang làm việc trên ứng dụng GWT với Tomcat đang chạy ở đầu máy chủ. Để hiểu nhu cầu của tôi, hãy tưởng tượng cập nhật giá cổ phiếu của một số cổ phiếu đồng thời.

Trả lời

6

Bạn có muốn quy trình được hướng đến khách hàng hoặc máy chủ không? Nói cách khác, bạn có muốn đẩy dữ liệu mới cho khách hàng ngay khi có sẵn không, hoặc bạn muốn khách hàng yêu cầu dữ liệu mới bất cứ khi nào họ thấy phù hợp, mặc dù có thể không phải là một lần/giây? Khả năng mà khách hàng sẽ có thể dính vào để chờ đợi câu trả lời là gì? Mặc dù bạn mong đợi các sự kiện xảy ra một lần/giây, phải mất bao lâu để yêu cầu từ máy khách và sự trở lại từ máy chủ? Nếu nó dài hơn một giây, tôi hy vọng bạn nghiêng về phía các sự kiện cho khách hàng, mặc dù theo cách khác, tôi mong đợi bỏ phiếu sẽ ổn. Nếu phản hồi mất nhiều thời gian hơn, thì về cơ bản bạn sẽ phát trực tuyến vì có sự kiện mới sẵn sàng vào thời điểm khách hàng nhận được sự kiện mới nhất, vì vậy, khách hàng có thể thăm dò liên tục về cơ bản và luôn nhận được sự kiện - trong trường hợp này là phát trực tuyến dữ liệu thực sự sẽ nhẹ hơn, vì bạn đang xóa bỏ phí kết nối/đàm phán khỏi quá trình.

Tôi cho rằng tải trên máy chủ cao hơn cho đăng ký dựa trên ứng dụng khách, thay vì cấu hình phát trực tuyến, vì khách hàng sẽ phải thương lượng lại kết nối mỗi lần thay vì để kết nối mở, nhưng mỗi kết nối mở trong một mô hình trực tuyến cũng sẽ yêu cầu tài nguyên máy chủ. Nó phụ thuộc vào những gì mà sự cân bằng giữa quá trình thương lượng của bạn tích cực như thế nào so với bao nhiêu bộ nhớ/xử lý được yêu cầu cho mỗi kết nối mở. Tôi không có chuyên gia, vì vậy có thể có các yếu tố khác.

CẬP NHẬT: This guy nói về sự cân bằng giữa bỏ phiếu dài và phát trực tuyến, và dường như ông nói rằng với HTTP/1.1, quá trình tái đàm phán kết nối là không đáng kể, do đó không phải là vấn đề.

+0

Hey rwmnau, liên kết bạn cung cấp đang sáng. Để trả lời câu hỏi của bạn, tôi muốn đẩy dữ liệu đến người dùng ngay khi có sẵn. – jcee14

+1

Nếu bạn đang tìm cách đẩy dữ liệu đến người dùng càng sớm càng tốt, thì tôi nghĩ rằng lựa chọn phải được phát trực tuyến, vì điều đó sẽ duy trì kết nối dựa trên push. Với một thiết lập kéo, bạn đang chờ đợi cho khách hàng để hỏi, nhưng với push, họ sẽ có dữ liệu ngay khi bạn đưa nó cho họ. Hãy cho tôi biết những gì bạn sẽ chọn và tại sao! – SqlRyan

2

Chắc chắn, nếu bạn đang tìm cách đẩy dữ liệu, phát trực tuyến dường như cung cấp hiệu suất tốt hơn, nếu máy chủ của bạn có thể xử lý số lượng kết nối liên tục dự kiến. Nhưng có một vấn đề khác mà bạn không giải quyết: Bạn có phải là internet hoặc mạng nội bộ không? Phát trực tuyến đã được báo cáo là có một số vấn đề trên proxy, nhiều như bạn mong đợi. Vì vậy, đối với một giải pháp mục đích chung, bạn có thể sẽ được phục vụ tốt hơn bằng cuộc thăm dò ý kiến ​​dài - đối với mạng nội bộ, nơi bạn hiểu cơ sở hạ tầng mạng, luồng có thể là giải pháp hiệu suất đơn giản hơn, tốt hơn cho bạn.

1

Phát trực tuyến sẽ nhanh hơn vì dữ liệu chỉ đi qua dây một chiều. Với việc bỏ phiếu, độ trễ ít nhất hai lần.

Việc bỏ phiếu thuận tiện hơn đối với sự cố ngừng hoạt động mạng vì không phụ thuộc vào kết nối đang được mở.

Tôi muốn đi bỏ phiếu chỉ vì sự vững mạnh.

+0

Tôi muốn làm rõ rằng câu hỏi của tôi liên quan đến việc bỏ phiếu dài và không phải là bỏ phiếu truyền thống. Ngoài ra, NIO nên là một. – jcee14

+0

Bạn nói đúng, NIO phá vỡ chủ đề cho mỗi giới hạn kết nối, giảm yêu cầu luồng. –

1

Đối với giá cổ phiếu trực tiếp, tôi hoàn toàn sẽ giữ kết nối mở và đảm bảo cảnh báo người dùng/kết nối lại khi ngắt kết nối.

2

StreamHub GWT Comet Adapter được thiết kế chính xác cho trường hợp này của trích dẫn chứng khoán trực tuyến. Ví dụ ở đây: GWT Streaming Stock Quotes. Nó cập nhật giá cổ phiếu của một số cổ phiếu đồng thời. Tôi nghĩ rằng việc thực hiện bên dưới là Comet mà chủ yếu là streaming qua HTTP.

Chỉnh sửa: Nó sử dụng một kỹ thuật khác nhau cho mỗi trình duyệt.Để báo website:

Có một số khác nhau cơ bản kỹ thuật sử dụng để thực hiện sao chổi bao gồm Hidden iFrame, XMLHttpRequest/Script dài Polling, và plugin nhúng như Flash. Việc giới thiệu HTML 5 WebSockets vào các trình duyệt trong tương lai sẽ cung cấp cơ chế thay thế cho HTTP Phát trực tiếp. StreamHub sử dụng phương pháp "phù hợp nhất" sử dụng hiệu suất cao nhất và kỹ thuật đáng tin cậy cho mỗi trình duyệt .

4

Nó không thực sự quan trọng. Chi phí đàm phán lại kết nối quá mỏng với HTTP1.1, bạn sẽ không nhận thấy bất kỳ khác biệt hiệu suất đáng kể nào theo cách này hay cách khác.

Những lợi ích của dài bỏ phiếu là khả năng tương thích và độ tin cậy - không có vấn đề với proxy, bến cảng, phát hiện ngắt kết nối, vv

Những lợi ích của dòng "true" có khả năng sẽ giảm chi phí, nhưng như đã nói rồi, này lợi ích là nhiều, ít hơn nhiều so với nó được thực hiện được.

Cá nhân, tôi tìm thấy một máy chủ sao chổi được thiết kế tốt để trở thành giải pháp tốt nhất cho số lượng lớn các bản cập nhật và/hoặc đẩy máy chủ.

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