2009-08-06 8 views
5

Estoy construyendo un programa de software que sigue el escenario:Sistemas distribuidos, ¿mejor marco?

Tengo muchas computadoras, y añado cada una de ellas al clúster. Cada computadora del clúster puede agregar un archivo a una tabla distribuida (diccionario, hashmap, debe ser lo suficientemente rápido).

Así que ahora tengo un lugar donde todos pueden ver qué archivos contiene el grupo/grupo. Ahora una computadora del grupo/clúster solicita un archivo. Puede acceder a toda la información sobre el archivo de la tabla distribuida (en qué computadora puede encontrar el archivo, etc.).

Mediante algún mecanismo, debe llevar el archivo del punto B (computadora que tiene el archivo) al punto A (la computadora que solicitó el archivo).

Básicamente debe hacer la replicación de datos. (Pero para archivos muy grandes)

Así que probablemente se preguntan por ahora, ¿qué es esto quy pidiendo, aquí está:

La replicación de datos debe ser lo más rápido posible. ¿Cuál sería el mejor enfoque? Pensé en algo así como redes de flujo.

¿Cuál sería el mejor marco para usar con un software según el escenario?

ESTOY BUSCANDO UN MARCO DE JAVA :). (NECESITO PONER EN MARCHA LA PLATAFORMA TRANSVERSAL)

¡Gracias!

+0

¡No olvide votar y marcar la pregunta como respondida si ha encontrado su solución! –

Respuesta

0
+0

Voy a echarle un vistazo mejor. Está en mis opciones. –

+0

Dado que Hazelcast tiene características de persistencia como "store()", también es una opción: http://code.google.com/docreader/#p=hazelcast&s=hazelcast&t=hazelcast ¡Es muy fácil de usar! –

1

JXTA es de Sun Java marco peer-to-peer, y lo más probable de uso aquí.

O visite Jini y su capacidad para el arrendamiento de servicios, detección dinámica y comunicación cliente/servidor independiente del protocolo. Usando Jini puede publicar cada servicio con atributos particulares (en este caso su nombre de archivo?), O tal vez usarlo con Javaspaces (no estoy seguro acerca de la conveniencia de los espacios aquí, sin embargo)

+0

Sí, es peer-to-peer, pero no quiero implementar una estructura de datos distribuidos. –

+0

Tenga en cuenta que tiene el problema de que su máquina de informes de estructura de datos B tiene un archivo, pero ¿qué sucede cuando la máquina B se cae? –

+0

He encontrado un framework, se llama JGroups. ¿Has oído hablar de eso? –

4

Como estoy seguro Han descubierto que hay muchas bibliotecas para java que te permiten implementar este tipo de mapa alterado.

  • Hazelcast - nuevo chico en el bloque, muy fácil de usar y proporciona implmentations de interfaces Java estándar como ConcurrentMap
  • JGroups - En realidad sólo la biblioteca de mensajería de grupo, sino que incluye una implementación DisturbutedHashMap
  • jBoss Cache - incorporado Además de jGroups, proporciona un sistema de almacenamiento en caché mucho más completo con persistencia y transacciones opcionales.
  • Terracotta - Grande y bastante popular, con soporte comercial
  • Oracle Coherence - El padre de todos ellos, con un precio demasiado elevado

Hay más (mucho más), mi preferencia personal por el momento es Hazelcast que es increíblemente fácil para empezar.Todos los marcos de almacenamiento en caché que he enumerado (creo) dependen de poder (al menos temporalmente) cargar toda la entrada en la memoria, esto puede ser un problema si está tratando de poner el contenido de archivos grandes en ellos.

En su caso, probablemente usaría el mapa alterado para almacenar los datos de ubicación, es decir, algunos datos para indicar a cualquier otro nodo dónde está un archivo particalar, y luego ir directamente a ese nodo usando un método no vinculado como HTTP.

0

Hay unas buenas respuestas para el hashmap distribuido.

Para copiar realmente el archivo, si es posible, preferiría no copiar nada y solo tener alguna solución de almacenamiento compartida. Si debe usar discos separados para cada computadora, entonces algo simple como configurar un servidor FTP en cada computadora debería funcionar. Esto no tiene que ser basado en Java, pero si quieres una solución Java única, algo como Apache MINA podría funcionar.

Cuestiones relacionadas