Como sincronizar um recurso comum em Java quando o aplicativo é implantado em várias instâncias atrás de um balanceador de carga

Kumar Sugyan:

Como podemos sincronizar o acesso a um recurso comum usando a sincronização em Java quando meu aplicativo java é implantado em várias instâncias atrás de um balanceador de carga?

Porque, tanto quanto eu sei, a sincronização funciona apenas sob um JVM. Mas quando implantar o mesmo aplicativo Java em várias instâncias para lidar com a carga, então como podemos fornecer um mecanismo de sincronização?

Por exemplo: - Há um arquivo HDFS ao qual o aplicativo java quer Anexa / edita o conteúdo desse arquivo HDFS. Quando eu implantar o meu aplicativo java em várias instâncias, então como posso ter certeza de que apenas um pedido de aplicação Java acessa esse arquivo HDFS?

Ashwanth Kumar:

Resposta curta - Você não pode fazê-lo sem a introdução de uma série de complexidades na sua configuração.

Embora tecnicamente você pode usar algo como um bloqueio distribuído que está disponível no Zookeeper . Eu realmente não recomendo-los. É meio difícil argumentar com eles em escala e há também uma complexidade adicional em termos de si Zookeeper Operações.

Em relação ao exemplo que você postou, não é por isso que sistemas como o HBase foi construído? Modelar seus dados em uma chave -> [várias colunas] formato. Você pode, então, ler / gravar dados em HBase e seria nos bastidores fazer o trabalho pesado de edição / gerenciamento de múltiplos arquivos para você.

Por outro lado, se você pode modelar a sua mudança que você quer fazer em seu arquivo como um evento que você pode então construir o seu sistema nos princípios da Event Driven Architecture.

Você pode ler mais sobre isso em

Acho que você gosta

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