/ / Banco de dados para um aplicativo java em cluster - banco de dados, padrões de design, design de banco de dados, arquitetura, computação em cluster

Banco de dados para um aplicativo java no cluster - banco de dados, padrões de design, design de banco de dados, arquitetura, computação em cluster

Eu gostaria de brincar com kubernetes, Eu sou capaz de iniciar um aplicativo simples, mas agora eu gostaria de projetar algo mais complexo. No entanto, eu não consigo descobrir como lidar com o acesso ao banco de dados em tal arquitetura.

Vamos dizer que eu tenho 100 réplicas pod de algum aplicativo de chat simples. Todos eles precisam acessar o mesmo banco de dados (ou mais como o conjunto de dados) e executar CRUD operações sobre eles. Como projetar para manter os dados consistentes e eliminar o risco de deadlocks?

Se possível, eu gostaria de usar SQLcomo banco de dados, para que eu possa usar confortavelmente hibernate e outras ferramentas que eu conheço.

Isso é possível ou eu tenho que usar uma abordagem totalmente diferente? Qual é o nome da tecnologia ou arquitetura que estou procurando?

Respostas:

1 para resposta № 1

1) Você pode usar um pool de conexão para reduzir esse número e tornar as configurações de conexão mais agressivas / elásticas;

2) Divida seus microsserviços de tal maneiraO acesso à persistência é um microsserviço que expõe seu serviço CRUD à sua persistência (mysql / rdms / nosql / etc). Dessa forma, você provavelmente não precisa de centenas de réplicas de seus pods.

3) Deadlocks / estratégias de bloqueio - como Andrewmencionado nos comentários, é mais relacionado à sua arquitetura de desenvolvimento de software do que ao próprio K8s. Há muitas maneiras de lidar com isso com os prós / contras.