2009-08-10 47 views
20

Tại sao không có bất kỳ khung/dự án tính toán phân tán Javascript nào? Ý tưởng này dường như hoàn toàn tuyệt vời đối với tôi bởi vì:Máy tính phân tán Javascript

  • The Client là trình duyệt
  • Iteration có thể được thực hiện với AJAX
  • Webmasters có thể giúp dự án bằng cách liên kết Javascript tương ứng
  • triệu hoặc thậm chí hàng tỷ người sử dụng sẽ giúp các dự án DC thậm chí không nhận thấy

Hãy chia sẻ quan điểm của bạn về chủ đề này.

EDIT: Ngoài ra, bạn nghĩ loại vấn đề nào sẽ phù hợp với JSDC? Ví dụ:

GIMPS không thể thực hiện được.

+0

Có một dự án về chủ đề này https://zlelik.blogspot.nl/2016/11/unified-field-theory-with-javascript-distributed-computing-or-gravity-electromagnetism-relation.html – Zlelik

Trả lời

3

Điều đầu tiên đến với tâm trí của tôi là bảo mật. Hầu như tất cả các giao thức phân tán mà tôi biết đều có mã hóa, đó là lý do tại sao chúng ngăn chặn rủi ro bảo mật. Mặc dù vấn đề này không phải là quá sáng tạo ..

http://www.igvita.com/2009/03/03/collaborative-map-reduce-in-the-browser/

Cũng Wuala là một hệ thống phân phối, mà được thực hiện sử dụng java applet.

-1

Tôi nghĩ rằng vấn đề số 1 là javascript không hiệu quả ở tính toán. Nó sẽ không chỉ là giá trị nó, bởi vì một ứng dụng trong tinh khiết c/C++ sẽ nhanh hơn 100 lần.

+1

Chỉ 100 ? Có lẽ nhiều hơn nữa. Điều đó có nghĩa là có được 10.000 người để cài đặt một máy khách phân tán dựa trên C++ sẽ mang lại * ít nhất * cùng một lượng công việc như nhận được * triệu * người tham gia vào công cụ dựa trên JS. –

+0

C++ là tốt cho tốc độ của nó, và JS là tốt vì nó có thể được sử dụng trong khi duyệt web mà không cần người dùng chú ý ... Vì vậy, giải pháp hoàn hảo là sử dụng Javascript để tải xuống ổ đĩa của ứng dụng C++! –

+0

Nhưng vấn đề là mọi người có thể sẽ tham gia vào một trang web này hoặc trang web khác, tùy thuộc vào trang web mà số lượng khách hàng JS có thể dễ dàng tiếp cận * hàng tỷ *, không phải hàng triệu. –

5

Có điều gì đó cần được nói cho 'quyền của người dùng' tại đây. Có vẻ như bạn đang mô tả tình huống mà quản trị viên web của Foo.com bao gồm tập lệnh cho, ví dụ như Folding @ Home trên trang web của họ. Kết quả là, tất cả khách truy cập vào Foo.com đều có một số phần nhỏ của CPU "được tặng" cho Folding @ Home, cho đến khi họ rời khỏi Foo.com. Nếu không có một số loại từ chối hoặc chọn tham gia, tôi sẽ xem xét rằng một dạng phần mềm độc hại và tránh hiển thị bất kỳ trang web nào đã làm điều đó.

Đó không phải là để nói rằng bạn không thể xây dựng một hệ thống yêu cầu xác nhận hoặc cho phép, nhưng có tiềm năng nhất định để lạm dụng.

+0

+1 hoàn toàn đồng ý – allergic

+4

+1, nhưng nó đã được thực hiện bởi tất cả các biểu ngữ quảng cáo trong trình duyệt của bạn :) –

6

Tôi nghĩ rằng Web Workers sẽ sớm được sử dụng để tạo các khung tính toán phân tán, có một số early attempts tại khái niệm này. Thực thi mã không chặn có thể đã được thực hiện trước khi sử dụng setTimeout, nhưng nó có ý nghĩa rất ít vì hầu hết các nhà cung cấp trình duyệt tập trung vào việc tối ưu hóa các công cụ JS của họ chỉ gần đây. Bây giờ chúng tôi có thực thi mã nhanh hơn và các tính năng mới, do đó, chạy một số tác vụ một cách vô thức trong nền khi chúng tôi duyệt web có thể chỉ là một vài tháng;)

+0

JavaScript là sự kiện điều khiển, không phải là nó đã không chặn theo mặc định? – lastmjs

4

Tôi đã cân nhắc điều này trong bối cảnh đề xuất mục.

Trước tiên, có không có vấn đề với tốc độ! JIT biên dịch javascript có thể nhanh như unoptimized C, đặc biệt là cho mã số.

Vấn đề lớn hơn là chạy javascript trong nền sẽ làm chậm trình duyệt và do đó người dùng có thể không thích trang web của bạn vì trang web chạy chậm.

Rõ ràng là có vấn đề về bảo mật, làm cách nào bạn có thể xác minh kết quả?

Và bảo mật, bạn có thể đảm bảo dữ liệu nhạy cảm không bị xâm phạm?

Trên hết, điều này khá khó khăn. Số lượt truy cập bạn nhận được có biện minh cho nỗ lực mà bạn sẽ phải đưa vào đó không? Sẽ tốt hơn nếu bạn có thể chạy mã minh bạch trên máy chủ hoặc phía máy khách. Việc biên dịch các ngôn ngữ khác sang javascript có thể trợ giúp ở đây.

Tóm lại, lý do không phổ biến là vì thời gian của nhà phát triển có giá trị hơn thời gian máy chủ. Nguy cơ mất dữ liệu người dùng và sự bất tiện cho người dùng lớn hơn mức tăng tiềm năng.

1

Tôi biết về pluraprocessing.com làm điều tương tự, không chắc chắn nếu javascript chính xác, nhưng chúng chạy Java thông qua trình duyệt và chạy hoàn toàn trong bộ nhớ với bảo mật nghiêm ngặt.

Họ có 50.000 mạng lưới máy tính mà họ đã chạy ứng dụng thành công ngay cả khi thu thập dữ liệu web (80 lần).

1

Tôi nghĩ rằng chúng tôi có thể xác minh kết quả về một số loại sự cố.

Giả sử chúng tôi có số lượng mục và cần phải sắp xếp. Chúng tôi sẽ đưa nó cho nhân viên-1, nhân viên-1 sẽ cho chúng tôi kết quả. Chúng ta có thể xác minh thời gian O (n). Hãy xem xét rằng phải mất ít nhất O (n * log (n)) thời gian để tạo ra kết quả. Ngoài ra chúng ta nên xem xét lớn như thế nào là n mục? (quan tâm về tốc độ mạng)

Ví dụ khác, f (x) = 12345 và chức năng được đưa ra. Mục đích là tìm giá trị của x. Chúng tôi có thể kiểm tra nó bằng cách thay thế x với kết quả của một số công nhân. Tôi nghĩ rằng một số vấn đề không thể xác minh là khó khăn để cung cấp cho một ai đó.

1

Toàn bộ ý tưởng của Javascript Distributed Computing có số nhược điểm:

  • điểm duy nhất của thất bại - không có trực tiếp cách để comunicate giữa các nút
  • tự nhiên thất bại của các nút - mọi nút đều hoạt động miễn là trình duyệt
  • không đảm bảo rằng thư được gửi sẽ được nhận - theo để tự nhiên thất bại của các nút
  • có gì đảm bảo rằng thông điệp nhận đã từng gửi - bởi vì một số hacker có thể xen
  • gây phiền nhiễu tải về phía khách hàng
  • vấn đề đạo đức

trong khi chỉ có một (nhưng rất hấp dẫn) lợi thế:

  • dễ dàng và miễn phí truy cập vào Milions của nút - hầu hết các thiết bị có hỗ trợ JS trình duyệt hiện nay

Tuy nhiên vấn đề lớn nhất là corelation giữa khả năng mở rộng và ít phiền toái.Giả sử bạn cung cấp một số dịch vụ web hấp dẫn và chạy tính toán ở phía máy khách. Nhiều người bạn sử dụng cho máy tính, nhiều người sẽ khó chịu hơn. Nhiều người càng khó chịu, ít người sử dụng dịch vụ của bạn hơn. Vâng, bạn có thể giới hạn phiền toái (tính toán), khả năng mở rộng hoặc thử một cái gì đó giữa.

Hãy xem xét ví dụ về google. Nếu google sẽ chạy các tính toán ở phía máy khách, một số người sẽ bắt đầu sử dụng bing. Bao nhiêu ? Phụ thuộc vào mức độ khó chịu.

Hy vọng duy nhất cho tính toán phân tán Javascript có thể là các dịch vụ đa phương tiện. Miễn là chúng tiêu thụ rất nhiều CPU, không ai sẽ nhận thấy bất kỳ tải bổ sung nào.

0

Tôi đã tìm thấy một câu hỏi tương tự như thế này trong khi quay lại, vì vậy tôi đã xây dựng được một điều mà làm điều này. Nó sử dụng công nhân web và lấy các kịch bản động (nhưng không có đánh giá!). Nhân viên web sandbox các tập lệnh để họ không thể truy cập vào cửa sổ hoặc DOM. Bạn có thể xem mã here và trang web chính here

Thư viện có cửa sổ bật lên đồng ý khi tải đầu tiên, vì vậy người dùng biết điều gì đang diễn ra trong nền.

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