Há muito material sobre microsserviços, basta pesquisar no Google! Fiz uma apresentação sobre a refatoração de monólitos para microsserviços na Devoxx Bélgica há alguns anos e ela recebeu boas críticas:

Este blog mostrará como o Docker simplifica a criação e o desligamento de um microsserviço. Todo o código usado neste blog está em github.com/arun-gupta/couchbase-javaee.

Definição de microsserviço usando o Compose

O Docker 1.13 introduziu um v3 do Docker Compose. As alterações na sintaxe são mínimas, mas a principal diferença é a adição de implantação atributo. Esse atributo permite especificar réplicas, atualização contínua e política de reinicialização para o contêiner. Nosso microsserviço iniciará um servidor de aplicativos WldFly com um aplicativo Java EE pré-implantado. Esse aplicativo se comunicará com um banco de dados Couchbase para CRUD os dados do aplicativo. Aqui está a definição do Compose:

Nesse arquivo Compose:

  1. Dois serviços nesse Compose são definidos pelo nome db e web atributos
  2. Nome da imagem para cada serviço definido usando imagem atributo
  3. O arungupta/couchbase:travel inicia o servidor Couchbase, configura-o usando API REST do Couchbasee cargas amostra de viagem com cerca de 32 mil documentos JSON.
  4. O arungupta/couchbase-javaee:travel inicia o WildFly e implanta o arquivo WAR do aplicativo criado a partir do https://github.com/arun-gupta/couchbase-javaee. Clone esse projeto se quiser criar sua própria imagem.
  5. meio ambiente define variáveis de ambiente acessíveis pelo aplicativo implantado no WildFly. COUCHBASE_URI refere-se ao serviço de banco de dados. Isso é usado no código do aplicativo, conforme mostrado em https://github.com/arun-gupta/couchbase-javaee/blob/master/src/main/java/org/couchbase/sample/javaee/Database.java.
  6. O encaminhamento de portas é obtido usando portos atributo
  7. depende_de no arquivo de definição Compose garante a ordem de inicialização do contêiner. Mas a inicialização no nível do aplicativo precisa ser garantida pelos aplicativos executados dentro do contêiner. No nosso caso, o WildFly é iniciado rapidamente, mas o banco de dados leva alguns segundos para ser iniciado. Isso significa que o aplicativo Java EE implantado no WildFly não é capaz de se comunicar com o banco de dados. Isso descreve uma prática recomendada ao criar aplicativos de microsserviços: você deve codificar de forma defensiva e garantir, na inicialização do aplicativo, que os microsserviços dos quais você depende tenham sido iniciados, sem pressupor a ordem de inicialização. Isso é mostrado no código de inicialização do banco de dados em https://github.com/arun-gupta/couchbase-javaee/blob/master/src/main/java/org/couchbase/sample/javaee/Database.java. Ele realiza as seguintes verificações:

    1. A caçamba existe
    2. O serviço de consulta do Couchbase está ativo e em execução
    3. A caçamba de amostras está totalmente carregada

Esse aplicativo pode ser iniciado usando docker-compose up -d em um único host. Ou um cluster de mecanismos do Docker em modo de enxame usando implantação de pilha de docas comando.

Configuração do modo Docker Swarm

Inicialize o modo Swarm usando o seguinte comando:

Isso inicia um Swarm Manager. Por padrão, os nós do gerenciador também são trabalhadores, mas podem ser configurados para serem apenas gerenciadores.
Encontre algumas informações sobre esse cluster de um nó usando o comando informações da plataforma comando:

Esse cluster tem um nó, que é o gerenciador. Como alternativa, um cluster de vários hosts pode ser facilmente configurado usando Docker para AWS.

Implantar microsserviço

O microsserviço pode ser iniciado como:

Isso mostra o resultado:

Os serviços WildFly e Couchbase são iniciados nesse nó. Cada serviço tem um único contêiner. Se o modo Swarm estiver ativado em vários nós, os contêineres serão distribuídos em vários nós.
Uma nova rede de sobreposição é criada. Isso permite que vários contêineres em diferentes hosts se comuniquem entre si.

Verifique se os serviços do WildFly e do Couchbase estão em execução usando serviço docker ls:

Os registros do serviço podem ser vistos usando Registros de serviço do docker -f webapp_web:

Certifique-se de aguardar a exibição da última declaração de registro.

Microsserviço de acesso

Obter 10 companhias aéreas do microsserviço:

Isso mostra os resultados como:

Workshop Docker para desenvolvedores Java é um laboratório prático e individualizado que permite que você comece a usar o Docker com facilidade. Obtenha um único recurso:

Criar um novo recurso:

Atualizar um recurso:

Excluir um recurso:

A saída detalhada de cada um desses comandos está em github.com/arun-gupta/couchbase-javaee.

Excluir microsserviço

O microsserviço pode ser removido usando o comando pilha de docas rm webapp:

Quer começar a usar o Couchbase? Dê uma olhada em Kits iniciais do Couchbase. Deseja saber mais sobre como executar o Couchbase em contêineres?

Autor

Postado por Arun Gupta, vice-presidente de defesa do desenvolvedor, Couchbase

Arun Gupta é o vice-presidente de defesa do desenvolvedor na Couchbase. Ele criou e liderou comunidades de desenvolvedores por mais de 10 anos na Sun, Oracle e Red Hat. Ele tem grande experiência na liderança de equipes multifuncionais para desenvolver e executar estratégias, planejamento e execução de conteúdo, campanhas de marketing e programas. Antes disso, liderou equipes de engenharia na Sun e é membro fundador da equipe Java EE. Gupta é autor de mais de 2.000 postagens em blogs sobre tecnologia. Ele tem uma vasta experiência em palestras em mais de 40 países sobre diversos tópicos e é um JavaOne Rock Star há três anos consecutivos. Gupta também fundou o capítulo Devoxx4Kids nos EUA e continua a promover a educação tecnológica entre as crianças. Autor de vários livros sobre tecnologia, corredor ávido, viajante do mundo inteiro, campeão de Java, líder de JUG, membro do NetBeans Dream Team e capitão do Docker, ele pode ser facilmente acessado em @arungupta.

Deixar uma resposta