JXTA ( Juxtapose ) fue una especificación de protocolo peer-to-peer de código abierto iniciada por Sun Microsystems en 2001. [ 1 ] Los protocolos JXTA se definieron como un conjunto de mensajes XML que permiten a cualquier dispositivo conectado a una red intercambiar mensajes y colaborar independientemente de la topología de red subyacente .
Dado que JXTA se basaba en un conjunto de protocolos XML abiertos, podía implementarse en cualquier lenguaje de programación moderno. Se desarrollaron implementaciones para Java SE , C / C++ , C# y Java ME . La versión en C# utilizaba las bibliotecas nativas de C++ / C y no constituía una reimplementación completa.
Los nodos JXTA crean una red superpuesta virtual que permite que un nodo interactúe con otros nodos incluso cuando algunos de ellos y sus recursos se encuentran detrás de cortafuegos y NAT , o utilizan diferentes protocolos de red. Además, cada recurso se identifica mediante un ID único, un URN SHA-1 de 160 bits en la interfaz Java, de modo que un nodo puede cambiar su dirección de localización manteniendo un número de identificación constante.
Estado
En noviembre de 2010, Oracle anunció oficialmente su retirada de los proyectos JXTA. [ 2 ] A agosto de 2011, el proyecto JXTA aún no había continuado ni se había anunciado su continuidad, ni se había tomado una decisión sobre la formación de su Junta Directiva ni Oracle había respondido a la solicitud pendiente de trasladar el código fuente a la versión 2 de la licencia Apache. [ 2 ]
Protocolos en JXTA
- Protocolo de resolución de pares
- Protocolo de información entre pares
- Protocolo de encuentro
- Protocolo de membresía entre pares
- Protocolo de unión de tuberías
- Protocolo de enrutamiento de punto final
Categorías de compañeros
JXTA define dos categorías principales de pares: pares de borde y superpares . Los superpares se pueden subdividir en pares de encuentro y pares de retransmisión . Cada par tiene una función bien definida en el modelo peer-to-peer de JXTA.
- Los nodos periféricos se definen generalmente como aquellos que tienen una conectividad de red transitoria y de bajo ancho de banda . Suelen residir en los límites de Internet, ocultos tras cortafuegos corporativos o accediendo a la red mediante conexiones no dedicadas.
- Un nodo Rendezvous es un nodo de propósito especial encargado de coordinar a los nodos de la red JXTA y proporcionar el alcance necesario para la propagación de mensajes. Si los nodos se encuentran en subredes diferentes, la red debe contar con al menos un nodo Rendezvous.
- Un nodo Relay permite que los nodos que se encuentran detrás de cortafuegos o sistemas NAT participen en la red JXTA. Esto se logra mediante el uso de un protocolo que puede atravesar el cortafuegos, como HTTP , por ejemplo.
Cualquier participante en una red JXTA puede actuar como punto de encuentro o repetidor siempre que disponga de las credenciales necesarias o cumpla con los requisitos de red, almacenamiento, memoria y CPU.
Anuncios
Un anuncio es un documento XML que describe cualquier recurso en una red P2P (nodos, grupos, tuberías, servicios, etc.). La comunicación en JXTA puede entenderse como el intercambio de uno o más anuncios a través de la red.
Tubería
Las tuberías son un canal de comunicación virtual utilizado por JXTA para intercambiar mensajes y datos. Las tuberías son asíncronas, no confiables y unidireccionales. Básicamente, existen tres tipos de tuberías:
- Unicast
- Unicast seguro
- Propagar
Grupos de pares
Un grupo de pares proporciona un ámbito para la propagación de mensajes y una agrupación lógica de pares. En JXTA, cada par pertenece a un grupo predeterminado, NetPeerGroup, pero un par determinado puede pertenecer a varios subgrupos simultáneamente. Un par puede desempeñar diferentes funciones en distintos grupos; por ejemplo, puede actuar como par de borde en un grupo y como punto de encuentro en otro.
Cada grupo debe tener al menos un nodo de encuentro y no es posible enviar mensajes entre dos grupos.
Red de encuentros
Los nodos Rendezvous cuentan con un mecanismo de enrutamiento optimizado que permite la propagación eficiente de los mensajes enviados por los nodos periféricos conectados a ellos. Esto se logra mediante el uso de una red de consistencia flexible.
Cada nodo Rendezvous mantiene una Vista de Nodos Rendezvous (RPV), una lista de nodos rendezvous conocidos ordenados por ID de nodo. No existe ningún mecanismo para garantizar la coherencia de todas las RPV en la red JXTA, por lo que una RPV determinada puede tener una visión inconsistente, temporal o permanente, de los demás nodos rendezvous. Tan pronto como la tasa de rotación sea baja , es decir, una red estable donde los nodos no se unan ni se vayan con demasiada frecuencia, la lista RPV de cada nodo convergerá a medida que cada nodo rendezvous intercambie un subconjunto aleatorio de su RPV con otros nodos rendezvous de vez en cuando.
Cuando un nodo perimetral publica un anuncio, el índice de este anuncio se envía al punto de encuentro mediante un sistema denominado Índice Distribuido de Recursos Compartidos (SRDI). Posteriormente, el punto de encuentro aplica una función de Tabla Hash Distribuida (DHT) para reenviar el índice a otro nodo de la lista RPV. Para fines de replicación, este índice se envía a los nodos vecinos del nodo de encuentro seleccionado en la lista RPV.
El proceso de búsqueda requiere el uso de la misma función DHT para descubrir el nodo de encuentro encargado de almacenar dicho índice. Una vez alcanzado el nodo de encuentro, este reenviará la consulta al nodo de borde que publicó el anuncio, y este nodo se pondrá en contacto con el nodo que realizó la consulta.
Si la función DHT no encuentra un nodo responsable del anuncio, la consulta se reenviará a través de la lista RPV hasta que se encuentre una coincidencia, se cancele o se alcancen los límites de la lista. Este proceso se denomina paseo aleatorio.
Véase también
Referencias
Enlaces externos
- Sitio web oficial
- Implementación en Java de JXTA
- sitio francés
- Descripción general de JXTA archivada el 23/01/2012 en Wayback Machine.
- Repositorio de Sonatype
- Almacenamiento de datos distribuido
- Software libre multiplataforma
- Software gratuito relacionado con redes
- Java (plataforma de software)
- protocolos de red
- Software de Sun Microsystems