Cómo sincronizar un recurso común en Java cuando la aplicación se implementa en varias instancias detrás de un equilibrador de carga

Kumar Sugyan:

¿Cómo podemos sincronizar el acceso a un recurso común de usar la sincronización en Java cuando mi aplicación Java se implementa en varias instancias detrás de un equilibrador de carga?

Porque, por lo que yo sé, la sincronización funciona sólo bajo una JVM. Pero cuando hacemos uso de la misma aplicación Java en varias instancias para manejar la carga, entonces ¿cómo podemos proporcionar un mecanismo de sincronización?

Por ejemplo: - Hay un archivo HDFS a la que la aplicación Java sea APPENDs / edita el contenido de ese archivo HDFS. Cuando despliego mi aplicación java en varias instancias, entonces, ¿cómo puedo estar seguro de que sólo una solicitud de aplicación Java tiene acceso a ese archivo HDFS?

Ashwanth Kumar:

Respuesta corta - Usted no puede hacerlo sin introducir una gran cantidad de complejidades en su configuración.

Aunque técnicamente se puede usar algo como un bloqueo distribuido que está disponible en Zookeeper . Yo no recomendaría ellos. Es un poco difícil de razonar con ellos a escala y también hay una complejidad adicional en términos de sí mismo Zookeeper Operaciones.

Con respecto al ejemplo informados, no es por eso por sistemas como HBase se construyó? Modelar sus datos en una tecla -> [Múltiples Columnas] formato. A continuación, puede leer / escribir datos en HBase y sería detrás de las escenas de hacer el trabajo pesado de la edición / gestión de múltiples archivos para usted.

Por otro lado, si se puede modelar el cambio que usted quiere hacer en su archivo como un evento a continuación, puede construir su sistema en los principios de la arquitectura orientada a eventos.

Puede leer más sobre esto en

Supongo que te gusta

Origin http://43.154.161.224:23101/article/api/json?id=234537&siteId=1
Recomendado
Clasificación