Uma estrutura de microsserviços rápida, leve e nativa da nuvem.
Estouro de pilha | Grupo Google | Bate-papo do Gitter | Subreddit | Canal do Youtube | Documentação | Guia de Contribuição |
Leve significa leve, extremamente rápido e esclarece como programar com Java SE moderno para implantação nativa da nuvem.
Eu trabalhava nas plataformas Java EE desde o início de 2000 e sofri problemas de desempenho e produtividade. Em 2014, percebi que o setor de TI estava migrando do monolítico para os microsserviços e dos data centers locais para as nuvens públicas.
Para reduzir o custo de produção de meus aplicativos, preciso encontrar uma plataforma leve que tenha um pequeno consumo de memória, alto rendimento e baixa latência em Java. Java EE e Spring/Spring Boot são pesados demais para serem considerados. Todas as outras plataformas Java leves têm problemas diferentes na separação entre a lógica de negócios e as preocupações técnicas transversais. Além disso, eles não são nativos da nuvem nem projetados para contêiner/nuvem.
Sem encontrar nada adequado, comecei a construir minha plataforma de código aberto light-4j em cima do núcleo HTTP Undertow seguindo os princípios. Como minha abordagem é muito radical e é contra produtos de grandes corporações, tenho sido constantemente atacado por algumas entidades online e offline. No entanto, estou tão convencido de que a minha abordagem é a direção futura e dedico todos os meus esforços para continuar o desenvolvimento. Hoje, muitas empresas estão usando light-4j na produção com feedback muito positivo. Além disso, incentiva-me a dedicar-me à estrutura e a ampliar a plataforma para construir um ecossistema.
Para os usuários que se beneficiam da plataforma, vocês podem se tornar um patrocinador meu para que eu possa colocar todo o meu esforço nos projetos de código aberto.
É 44 vezes mais rápido que a plataforma de microsserviços mais popular, Spring Boot, Tomcat integrado e usa apenas 1/5 da memória. Aqui estão os resultados do benchmark comparados com Spring Boot e outras estruturas de microsserviços. Aqui está a comparação de terceiros com outras estruturas da Web.
Projete a especificação OpenAPI e gere o serviço a partir dela. A especificação também faz parte da estrutura para conduzir a verificação de segurança e solicitar validação em tempo de execução.
Stubs de teste unitários/ponta a ponta são gerados para permitir uma abordagem orientada a testes para produtos de qualidade.
Depuração no IDE como um aplicativo independente para melhor produtividade do desenvolvedor.
Arquivos de suporte Dockerfile e DevOps são gerados para oferecer suporte à dockerização e integração contínua à produção.
Todos os frameworks de código aberto são construídos em Java e estamos trabalhando internamente no framework Nodejs. No futuro, poderemos fornecer também a estrutura Golang e todos eles compartilharão o mesmo ecossistema e mercado.
Servidor OAuth2 para segurança e Portal para monitoramento e gerenciamento de produção. O portal também é um mercado para vincular clientes e serviços.
Existem duas maneiras de iniciar seu projeto:
Você pode usar light-codegen para gerar um projeto funcional. Atualmente, ele suporta light-rest-4j, light-graphql-4j, light-hybrid-server-4j e light-hybrid-service-4j. O gerador de código de eventos leves está chegando.
O projeto light-codegen README.md descreve quatro maneiras de usar o gerador com exemplos.
A outra maneira de iniciar seu projeto é copiar light-example-4j.
Você pode encontrar a descrição desses exemplos
Além disso, existem alguns tutoriais
Para executar/depurar a partir do IDE, você precisa configurar um aplicativo Java com a classe principal "com.networknt.server.Server" e o diretório de trabalho é a pasta do seu projeto. Não há contêiner e você está trabalhando apenas em um aplicativo Java independente.
crie um aplicativo Java cuja classe principal seja com.networknt.server.Server e o diretório de trabalho seja a pasta raiz do seu projeto. Você pode depurar seu servidor como um aplicativo POJO.
mvnexec:exec
java -jar target/demo-0.1.0.jar
você pode usar Ctrl+C para encerrar o servidor, mas para produção use o seguinte comando
kill -s TERM <pid>
O servidor possui um gancho de desligamento e o comando acima permite a limpeza. Por exemplo, conclua as solicitações em andamento e feche as conexões do banco de dados, etc. Se o registro e a descoberta do serviço forem usados, o servidor enviará o evento de desligamento para o registro do serviço e continuará processando as solicitações por 30 segundos até que todos os clientes atualizem seu cache local antes de desligar. .
Light-4j e todas as estruturas light-*-4j estão disponíveis sob a licença Apache 2.0. Consulte o arquivo LICENSE para obter mais informações.