O antecessor do andaime de microsserviço lamp-cloud é zuihou-admin-cloud. A partir da versão 3.0.0, ele foi renomeado como lamp-cloud. É membro do projeto lamp.
O andaime de microsserviço lamp-cloud é um andaime de microsserviço SaaS baseado em SpringCloud (Hoxton.SR10) + SpringBoot (2.3.10.RELEASE). Possui um sistema unificado de gerenciamento de autorização e autenticação em segundo plano, que inclui gerenciamento de usuários, gerenciamento de permissões de recursos, gateway. Vários módulos, como API, transações distribuídas e resumo de fragmentação de ponto de interrupção de arquivos grandes, suportam o desenvolvimento paralelo de sistemas multinegócios e podem ser usados como uma estrutura de desenvolvimento para serviços de back-end. O código é conciso e a estrutura clara, adequada para aprendizado e uso direto em projetos. A tecnologia principal usa estruturas e middleware importantes, como Nacos, Fegin, Riadfdson, Zuul, Hystrix, JWT Token, Mybatis, SpringBoot, Redis e RiadfdsitMQ.
função de andaime de microsserviço lamp-cloud
1. Registro, descoberta e invocação de serviço
O registro e a descoberta de serviços baseados em Nacos, usando Feign para implementar a intermodulação de serviços, podem obter a mesma experiência de codificação que chamar métodos locais ao usar solicitações HTTP para chamadas remotas. percebeu que esta é uma solicitação HTTP.
2. Autenticação de serviço:
Utilize JWT para fortalecer a verificação de permissão para agendamento entre serviços e garantir a segurança dos serviços internos.
3. Balanceamento de carga
O restante retido pelo serviço é usado para controle de proxy e gateway. Além do node.js e nginx comumente usados, o zuul e o riadfdson da série Spring Cloud podem nos ajudar a realizar o controle normal do gateway e o balanceamento de carga. Entre eles, a expansão e referência de projetos estrangeiros são baseadas no plug-in limitador de corrente JWT Zuul, que limita a corrente.
4. Mecanismo de fusão
Por causa da distribuição de serviços, para evitar a “avalanche” de chamadas entre serviços, o Hystrix é utilizado como fusível para evitar a “avalanche” de chamadas entre serviços.
5. Monitoramento
Use Spring Boot Admin para monitorar o status de execução de cada serviço independente; use o Turbine para visualizar o status de execução e a frequência de chamada da interface em tempo real; use Zipkin para visualizar a cadeia de chamadas entre cada serviço, etc.
6. Monitoramento de chamadas de link
Use o Zipkin para realizar o monitoramento completo do desempenho de microsserviços, exibir vários indicadores da dimensão geral até a dimensão local e exibir centralmente todas as informações de desempenho da cadeia de chamadas em aplicativos, que podem medir facilmente o desempenho geral e local e encontrar facilmente a fonte de falhas, o que pode reduzir significativamente o tempo de solução de problemas na produção. Com isso podemos fazer
Solicite rastreamento de link e localização rápida de falhas: as informações de erro podem ser localizadas rapidamente por meio da cadeia de chamadas combinada com registros de negócios. Visualização: Cada etapa leva tempo e a análise de desempenho é realizada. Otimização de dependências: disponibilidade de cada link de chamada, classificando dependências de serviço e otimizando. Análise de dados, otimização de links: os caminhos de comportamento dos usuários podem ser obtidos e a análise resumida é aplicada em muitos cenários de negócios.
7. Permissões de dados
Implementando permissões de dados simples usando o interceptor DataScopeInterceptor baseado em Mybatis
8. Solução SaaS (multilocatário) não intrusiva
Use o interceptor Mybatis para interceptar todo o SQL e modificar o esquema padrão para obter o isolamento de dados multilocatários. E suporta plugabilidade.
9. Cache de segundo nível
J2Cache é usado para operar o cache. O cache de primeiro nível usa memória (cafeína) e o cache de segundo nível usa Redis. Como um grande número de leituras de cache fará com que a rede L2 se torne o gargalo de todo o sistema, o objetivo de L1 é reduzir o número de leituras para L2. Esta estrutura de cache é usada principalmente em ambientes de cluster. Ele também pode ser usado em uma única máquina para evitar o impacto nos negócios de back-end após a inicialização a frio do cache causada pela reinicialização do aplicativo.
10. Conversão de feijão elegante
Use componentes Dozer para otimizar e converter DTO, DO, PO e outros objetos
11. Verificação de formulário unificado no front e back-end
A verificação rigorosa do formulário geralmente requer verificação de front-end e back-end ao mesmo tempo. No entanto, em projetos tradicionais, o front-end e o front-end só podem ser testados uma vez cada. Se as regras forem alteradas posteriormente, o front-end. e back-end devem ser modificados ao mesmo tempo. Portanto, a dependência inicial do zuihou-validator-starter é encapsulada com base no hibernate-validator, fornecendo uma interface comum para obter as regras que precisam ser verificadas. Se as regras mudarem no futuro, apenas o back-end será necessário. Basta modificá-lo.
12. Evite ataques de script entre sites (XSS)
Use filtros para filtrar parâmetros de formulário em todas as solicitações
Filtre todos os parâmetros do tipo aplicativo/json por meio do desserializador Json
13. Injetor de informações do usuário atualmente conectado
Injeção de identidade do usuário por meio de anotações
14. API on-line
Como algumas funções do swagger-ui nativo não são amigáveis o suficiente, adotamos o swagger-bootstrap-ui de código aberto doméstico e criamos um stater para facilitar os usuários do springboot.
15. Gerador de código
Um conjunto de geradores de código é customizado com base no Mybatis-plus-generator. Ao configurar as anotações dos campos do banco de dados, ele gera automaticamente classes de enumeração, anotações de dicionário de dados, SaveDTO, UpdateDTO, anotações de regras de validação de formulário, anotações Swagger, etc.
16. Agendador de tarefas agendadas
Melhorias de função baseadas em xxl-jobs. (Por exemplo: envio de tarefas em um horário especificado, fusão de projetos com executores e agendadores, múltiplas fontes de dados)
17. Upload de arquivo grande/ponto de interrupção/currículo fragmentado
O front-end usa webupload.js e o back-end usa NIO para implementar o upload fragmentado de pontos de interrupção de arquivos grandes. Depois de iniciar os serviços Eureka, Zuul e File, você pode abrir diretamente docs/chunkUploadDemo/demo.html para teste. Após o teste, o limite de memória local da pilha é de 128 MB para iniciar o serviço de arquivo, e um arquivo grande de 4,6 G + pode ser carregado com sucesso em 5 minutos. O tempo de serviço oficial será afetado pela largura de banda do usuário e do servidor, e será. demorar muito.
18. Transações distribuídas
Integrado ao middleware de transações distribuídas do Alibaba: seata, ele resolve os problemas de transações distribuídas enfrentados em cenários de microsserviços de forma eficiente e invasiva.
19. Injetor automático de dados relacionados a tabelas cruzadas, bancos de dados cruzados e serviços cruzados
Ele é usado para resolver a dor de ecoar dados relacionados de atributos de dados de tabela cruzada, banco de dados cruzado, dados de paginação de serviço cruzado ou atributos de um único objeto. Ele suporta injeção automática de atributos de dados estáticos (dicionário de dados) e chave primária dinâmica. dados.
20. Liberação em escala de cinza
A fim de resolver o problema de atualização frequente de serviço online, reversão, iteração rápida e desenvolvimento colaborativo dentro da empresa, este projeto usa a estratégia de balanceamento de carga modificada do riadfdson para obter liberação em escala de cinza.
log de atualização da lâmpada-nuvem
v3.5.5
refatorar
lamp-cloud: Ajusta a ordem de execução do TraceFilter para facilitar outros filtros no gateway para registrar informações de log
lamp-cloud: Otimize RouterMeta e suporte a chaves personalizadas de front-end
lamp-cloud: Otimize o problema de rastreamento de dados ilegíveis da interface de rastreamento regional
lamp-cloud: A otimização da interface de rastreamento regional não pode rastrear dados de condados abaixo da cidade
lamp-cloud: Adicionado método addChildren à entidade básica da estrutura em árvore
lamp-cloud: Otimize a estrutura de agregação swagger para ignorar o serviço de soquete da web
consertar
lamp-util: quando um parâmetro do cabeçalho da solicitação contém chinês, a chamada assíncrona de simulação relata um erro
lamp-cloud: Corrigido o bug de que a estrutura em árvore não conseguia obter a estrutura hierárquica de emenda correta.
lamp-web-plus: Corrige bug causado pela altura fixa da página da árvore
lamp-web-plus: Resolva o problema do menu suspenso do componente TableAction fazendo com que a linha divisória fosse exibida incorretamente devido a permissões
lamp-web-plus: Corrigido o problema em que os dados da página de lista são transferidos para a página de edição e os dados são modificados acidentalmente.