2009-08-10 13 views
20

¿Por qué no hay ningún framework/proyecto de computación distribuida de JavaScript? La idea parece absolutamente increíble para mí porque:Informática distribuida de Javascript

  • El cliente es el Navegador
  • iteración se puede hacer con AJAX
  • Webmasters podrían ayudar a los proyectos mediante la vinculación de los respectivos Javascript
  • millones o incluso miles de usuarios ayudaría a los proyectos de DC sin siquiera notar

Por favor, comparta sus puntos de vista sobre este tema.

EDITAR: Además, ¿qué tipo de problemas crees que serían adecuados para JSDC?

GIMPS por ejemplo sería imposible de implementar.

+0

Hay un proyecto sobre este tema https://zlelik.blogspot.nl/2016/11/unified-field-theory-with-javascript-distributed-computing-or-gravity-electromagnetism-relation.html – Zlelik

Respuesta

-1

Creo que el problema n. ° 1 es la ineficacia de JavaScript en la informática. No valdría la pena, porque una aplicación en c/C++ pura sería 100 veces más rápida.

+1

Only 100 ? Probablemente mucho más. Lo que significa que conseguir 10,000 personas para instalar un cliente de computación distribuida basada en C++ rendiría * al menos * la misma cantidad de trabajo que obtener un * millón * de personas para participar en el basado en JS. –

+0

C++ es bueno para su velocidad, y JS es bueno porque se puede usar mientras navega por la web sin que el usuario lo note ... ¡Por lo tanto, la solución perfecta es utilizar Javascript para descargar una aplicación C++ desde un dispositivo de disco rígido! –

+0

Pero la cosa es que todos probablemente participen en un sitio web u otro, dependiendo del sitio web, el número de clientes de JS podría alcanzar fácilmente * miles de millones *, no millones. –

5

Aquí hay algo que decir sobre los "derechos de usuario". Parece que está describiendo una situación en la que el webmaster de Foo.com incluye el script para, por ejemplo, Folding @ Home en su sitio. Como resultado, todos los visitantes de Foo.com tienen una fracción de su CPU "donada" a Folding @ Home, hasta que abandonan Foo.com. Sin algún tipo de exención de responsabilidad u opt-in, lo consideraría una forma de malware y evitaría visitar cualquier sitio que lo hiciera.

Eso no quiere decir que no pueda construir un sistema que solicite confirmación o permiso, pero existe una posibilidad definida de abuso.

+0

+1 estoy absolutamente de acuerdo – allergic

+4

+1, pero ya lo han hecho todos los banners publicitarios en tu navegador :) –

6

Creo que Web Workers pronto se utilizará para crear frameworks de computación distribuida, hay algunos early attempts en este concepto. La ejecución del código sin bloqueos pudo haberse realizado antes de usar setTimeout, pero tuvo un poco de sentido ya que la mayoría de los proveedores de navegadores se centraron recientemente en la optimización de sus motores JS. Ahora tenemos una ejecución de código más rápida y nuevas características, por lo que ejecutar algunas tareas inconscientemente en segundo plano mientras navegamos por la web probablemente sea cuestión de meses;)

+0

JavaScript está basado en eventos, ¿no es ya de bloqueo por defecto? – lastmjs

4

Me he preguntado esto en el contexto de la recomendación del artículo.

En primer lugar, está no problema con la velocidad! JIT compilado javascript puede ser tan rápido como C no optimizado, especialmente para código numérico.

El problema más grande es que ejecutar javascript en segundo plano ralentizará el navegador y, por lo tanto, es posible que los usuarios no quieran que su sitio web funcione lentamente.

Obviamente hay un problema de seguridad, ¿cómo se pueden verificar los resultados?

Y privacidad, ¿puede garantizar que los datos confidenciales no se vean comprometidos?

Además de esto, es bastante difícil de hacer. ¿Puede el número de visitas que recibe justificar el esfuerzo que tendrá que realizar? Sería mejor si pudieras ejecutar el código de forma transparente en el servidor o en el lado del cliente. La compilación de otros idiomas para javascript puede ayudar aquí.

En resumen, la razón por la que no está muy extendida es porque el tiempo de los desarrolladores es más valioso que el tiempo del servidor. El riesgo de perder los datos del usuario y el inconveniente para los usuarios supera las ganancias potenciales.

1

Sé de pluraprocessing.com haciendo algo similar, no estoy seguro si es exactamente javascript, pero ejecutan Java a través del navegador y se ejecuta totalmente en la memoria con estricta seguridad.

Cuentan con una cuadrícula de 50,000 computadoras en la que han ejecutado con éxito aplicaciones incluso como rastreo web (80legs).

1

Creo que podemos verificar los resultados en algún tipo de problema.

Digamos que tenemos n cantidad de elementos y necesitamos ordenarlos. Se lo daremos a worker-1, worker-1 y nos dará el resultado. Podemos verificar O (n) tiempo. Tenga en cuenta que se necesita al menos O (n * log (n)) tiempo para producir el resultado. Además, debemos considerar qué tan grande es n elementos? (preocupación sobre la velocidad de la red)

Otro ejemplo, f (x) = 12345, y la función se da. El propósito es encontrar el valor de x. Podemos probarlo reemplazando x con el resultado de algún trabajador. Creo que algunos problemas que no son verificables son difíciles de dar a alguien.

1

Computing La idea de Javascript Distribuido tiene varias desventajas:

  • punto único de fallo - no hay manera directa para comunicarse entre nodos
  • natural no puede hacerlo de nodos - cada nodo funciona mientras el navegador
  • no se garantiza que el mensaje enviado se reciba alguna vez - de acuerdo a natural no puede hacerlo de nodos
  • hay garantía de que el mensaje recibido ha sido jamás enviado - porque algún hacker puede interponer
  • carga molesta en el lado del cliente
  • problemas éticos

mientras que solo hay una (pero muy tentadora) ventaja:

  • fácil y libre acceso a milions de nodos - casi cada dispositivo tiene JS navegador que soporte la actualidad

Sin embargo, el mayor problema es corelation entre la escalabilidad y la molestia.Supongamos que ofrece un servicio web atractivo y ejecuta la informática en el lado del cliente. Más personas que usas para computación, más personas están molestas. Más personas están molestas, menos personas usan tu servicio. Bueno, puedes limitar la molestia (informática), la escalabilidad o intentar algo entre ellos.

Considere google por ejemplo. Si google ejecutará cálculos en el lado del cliente, algunas personas comenzarán a usar Bing. Cuántos ? Depende del nivel de molestia

La única esperanza para Java Distributed Computing puede ser servicios multimediales. Mientras consuman mucha CPU, nadie notará ninguna carga adicional.

0

He encontrado una pregunta similar hace un tiempo, así que construí una cosa que hace esto. Utiliza web workers y recupera scripts dinámicamente (¡pero no Eval!). Los trabajadores de la Web protegen los scripts de modo que no puedan acceder a la ventana o al DOM. Puede ver el código here, y el sitio web principal here

La biblioteca tiene una ventana emergente de consentimiento en la primera carga, por lo que el usuario sabe lo que está sucediendo en el fondo.

Cuestiones relacionadas