Este artigo é o segundo da série de comemorações do segundo aniversário do CloudWeGo.
Esta sessão de compartilhamento primeiro fornecerá um breve histórico sobre a construção da usabilidade do CloudWeGo, depois apresentaremos o que fizemos para a construção da usabilidade e, finalmente, aguardaremos trabalhos futuros.
01
fundo
CloudWeGo é um conjunto de middleware de código aberto da equipe de estrutura de serviços de infraestrutura da ByteDance que pode construir rapidamente uma arquitetura de microsserviços nativa da nuvem de nível empresarial. Os projetos do CloudWeGo possuem três características principais: alto desempenho , alta escalabilidade e alta confiabilidade e, depois do código aberto, também prestamos mais atenção à construção da facilidade de uso . e, portanto, forma uma atmosfera comunitária ativa e promove o desenvolvimento sustentável da comunidade. Sua facilidade de uso pode ajudar os usuários a concluir rapidamente o desenvolvimento da lógica de negócios e melhorar a eficiência.
Em relação à facilidade de uso, fizemos muito trabalho em experiência de P&D, experiência do usuário e promoção da comunidade. Deixe-me apresentá-los um por um abaixo. Além disso, este compartilhamento terá como foco principal a Hertz e a construção de usabilidade em torno do cwgo.
02
Facilidade de uso Construção de recursos
Como uma estrutura HTTP de nível empresarial, a facilidade de uso da Hertz sempre foi um aspecto ao qual atribuímos grande importância porque pode melhorar muito a experiência de pesquisa e desenvolvimento. Portanto, desde o código aberto, sempre atribuímos grande importância às diversas sugestões feitas pelos usuários quanto à facilidade de uso, e resumimos: O primeiro problema é que nosso uso de alguns recursos é um pouco diferente dos frameworks comuns, resultando em migração. Os usuários podem não estar acostumados; o segundo problema é que o framework possui muitas ferramentas de andaimes. Por exemplo, o CloudWeGo possui dois andaimes, Hertz e Kitex, o que sem dúvida aumenta o custo de aprendizagem do usuário. A partir dos problemas e do feedback do grupo de usuários, podemos ver que nossos documentos atuais apresentam problemas como descrições pouco claras e conteúdo ausente, o que muitas vezes faz com que os usuários encontrem problemas que muitas vezes não podem ser resolvidos rapidamente.
Em resposta aos problemas acima, desenvolvemos uma variedade de recursos para atender rapidamente às necessidades dos usuários.
-
Suporte multiprotocolo : A primeira coisa que precisa ser introduzida é que o Hertz pode suportar a comutação contínua de vários protocolos. Atualmente, algumas estruturas de código aberto já suportam o protocolo h2/h3, portanto, com base nos recursos de expansão da camada de protocolo Hertz. , concluímos a implementação de http2/http3 e colocamos em hertz-contrib. A sua utilização é muito simples, bastando apenas registar o protocolo correspondente no motor Hertz. O suporte para o protocolo http3 também é semelhante, mas precisamos especificar a camada de transporte como a camada de transporte do protocolo quic estendido pelo Hertz. As outras operações são as mesmas do http2.
-
Sequestro do Response Writer : Em seguida, deixe-me apresentar a você o recurso de sequestro do Response Writer. Antes de apresentar o sequestro de gravador, vamos falar sobre o processo de leitura e gravação de mensagens Hertz (a parte numérica na figura primeiro lerá e analisará os dados na conexão e, em seguida, executará a correspondência de rota, processamento de lógica de negócios e criará resposta). dados com base no conteúdo da solicitação. Aguarde e, após a conclusão dessas tarefas, a estrutura envia os dados ao par. Isso pode simplificar completamente as operações do usuário, mas há problemas em alguns cenários. Primeiro, os usuários não podem controlar o tempo da liberação real para o peer. Portanto, em alguns cenários onde os dados são gerados de forma incremental e os requisitos em tempo real são altos, os usuários têm. muitas restrições.
Portanto, desenvolvemos o recurso de sequestro do gravador de resposta. Com base no processo de gravação de resposta original, oferecemos suporte aos usuários para sequestrar o gravador de resposta no manipulador/middleware de negócios e enviar os dados de resposta de volta ao par com antecedência para obter solicitações de gravação mais flexíveis. Caminho. Implementamos recursos como handler flush, SSE e streaming Gzip com base nos recursos do Response Writer e aguardamos sua contribuição para mais recursos.
-
Reconstrução de ligação de parâmetros: Depois de apresentar o sequestro de gravador, vamos apresentar um recurso importante para você - ligação de parâmetros. Antes da reconstrução, a ligação de parâmetros da Hertz dependia de implementações de terceiros, o que causava os seguintes problemas:
Para resolver esses problemas, reconstruímos a capacidade de vinculação de parâmetros e colocamos sua implementação dentro do Hertz como uma implementação importante de nossa camada de aplicação. Após a reconstrução, ela suporta as mesmas regras de vinculação e métodos de uso de antes e terá melhor desempenho. completamente melhor do que antes. Além disso, ele também oferece suporte a fichário e validador personalizados para facilitar aos usuários o uso de sua sintaxe familiar. Além disso, consolidamos todas as configurações em uma estrutura e injetamos no mecanismo Hertz na forma de withOption.
-
Contando com a implementação de terceiros, os usuários precisam apelar aos desenvolvedores para atender às suas necessidades
-
Há menos interfaces fornecidas e os alunos que migram aumentarão seus custos de aprendizagem.
-
O desempenho é ruim. A implementação anterior é adaptada ao modelo de armazenamento da biblioteca HTTP padrão, requer mais uma conversão e o desempenho é ruim.
-
Os três acima são os recursos mais importantes da Hertz em termos de facilidade de uso.
03
Construção ecológica
A seguir, apresentarei a vocês a construção ecológica relacionada à Hertz.
Atualmente, fornecemos alguns recursos comuns a todos na forma de middleware, para que os desenvolvedores possam se concentrar melhor na lógica de negócios e só precisem chamar o middleware para usar esses recursos comuns. Até agora, fornecemos mais de 20 extensões de middleware, incluindo autenticação/autorização, segurança, desempenho, recursos gerais de HTTP, recursos de expansão de observação de governança, etc., que podem basicamente atender à maioria das necessidades de negócios.
É claro que continuaremos a investir na construção desses ecossistemas de middleware e todos são bem-vindos para participar do desenvolvimento da nossa comunidade.
04
Otimização de andaimes
Deixe-me apresentar a otimização das ferramentas de andaime abaixo.
Hz
Quando era de código aberto, a ferramenta de scaffolding hz da Hertz já oferecia a capacidade de gerar servidores baseados em IDL, ou seja, apoiamos as partes 3, 4 e 5 na figura. Atualmente, o registro de roteamento e os códigos de manipulador podem ser gerados automaticamente com base. na definição de interface de IDL e outras funções, mas como estrutura de comunicação, também precisamos concluir o trabalho de geração do lado do cliente, que é o processo de 1, 2 e 6 na figura, então hz suporta a capacidade de gerar código do cliente após ser de código aberto.
O principal objetivo da geração de clientes é bloquear uma série de operações fixas, como inicializar o cliente Hertz e enviar solicitações, fornecer aos usuários a capacidade de enviar solicitações HTTP com um clique e comunicar-se diretamente com o servidor gerado por hz.
CWGO
A seguir apresentarei outra ferramenta cwgo. cwgo é uma ferramenta unificada que lançamos para a estrutura CloudWeGo Golang.
Como você pode ver na imagem abaixo, CloudWeGo possui várias ferramentas de geração de código em Golang. Embora nosso Kitex e Hertz tenham fornecido uma camada de encapsulamento, seu uso ainda é um pouco diferente, resultando em altos custos de aprendizado para os usuários. Este problema é exatamente um dos problemas que a cwgo quer resolver.
Além disso, o projeto Go na comunidade CloudWeGo enfrenta atualmente os seguintes problemas:
-
Os recursos de gerenciamento de API são relativamente fracos. O próprio IDL pode ser usado como uma ferramenta de descrição/definição de interface em todo o processo de iteração de desenvolvimento de negócios. No entanto, o CloudWeGo na verdade não possui um plano prático claro para o mundo externo. , o lado comercial basicamente precisa se concentrar no gerenciamento relacionado à API.
-
Cada componente é relativamente independente e não pode funcionar perfeitamente quando usado em conjunto.
-
Falta de geração e configuração de código comum para testes de unidade, banco de dados, etc.
À medida que o número de componentes de código aberto do CloudWeGo continua a aumentar no futuro, a experiência do usuário fragmentada continuará a se fragmentar. Portanto, lançamos o CloudWeGo tudo em uma ferramenta cwgo, com o objetivo de resolver os problemas acima de uma perspectiva global. Forneça um formulário de geração e gerenciamento de microsserviços mais simples e fácil de usar.
Vamos apresentar vários recursos do cwgo
-
cwgo integra os recursos do andaime hz/kitex, abstrai e simplifica seus comandos e os exibe uniformemente na ferramenta cwgo. Ele também abrirá as estruturas geradas, anotações, validador e outras funções. Forneça aos usuários uma experiência unificada de geração de código
-
Linha de comando interativa, esse recurso é destinado a usuários iniciantes. Ele gera código de destino para usuários de forma interativa, reduzindo significativamente os custos de aprendizado. Os usuários podem concluir a geração de microsserviços com apenas alguns cliques.
-
Iremos gerar templates mvc que melhor atendam às necessidades das empresas, conforme mostrado na imagem à direita, para auxiliar no rápido desenvolvimento e implementação de negócios e facilitar futuras iterações e manutenção, além disso, cwgo oferece suporte a templates customizados, hospedagem de templates e; outros recursos, facilitando o gerenciamento completo de modelos e a substituição rápida.
-
Fornecemos um novo formulário de implantação de microsserviços no cwgo, atualmente denominado plano hexadecimal, que é a abreviatura de Hertz e Kitex. O objetivo do plano Hex é permitir que microsserviços monitorem simultaneamente solicitações HTTP/RPC na mesma porta, obtenham distribuição de solicitações com sobrecarga zero com base na detecção de protocolo e distribuam solicitações para Hertz e Kitex para processamento. Isso pode resolver muitos comprometimentos na eficiência, complexidade e desempenho de P&D quando as empresas precisam fornecer interfaces API HTTP para serviços RPC. Atualmente, esse recurso foi lançado oficialmente no cwgo e todos podem experimentá-lo sob demanda.
05
Otimização da experiência do usuário
Otimização de documentos : Desde o código aberto, os projetos do CloudWeGo sempre prestaram atenção às questões documentais, mas sempre que há um problema, ele é corrigido em algum lugar e o problema não pode ser resolvido de forma abrangente.
Portanto, participamos do projeto CCF GLCC e lançamos um projeto especial de otimização de documentos. Neste projeto especial, realizamos principalmente o seguinte trabalho:
-
Reviva o documento de uma forma completa, incluindo código, imagens, conteúdo, etc., e registre problemas relacionados
-
Com base nos problemas relacionados registrados, dedicamos pessoal para otimizar os documentos, resolvendo alguns problemas, como lógica confusa e descrições pouco claras, e focando na otimização de documentos comumente usados, como tutoriais para iniciantes e recursos principais da Hertz. Segundo o feedback, a documentação otimizada já pode resolver basicamente todos os problemas comuns.
-
Além disso, também fizemos ajustes unificados no formato do documento e na estrutura de diretórios para proporcionar uma melhor experiência visual.
Atualmente, este projeto de otimização está sendo realizado em outros projetos CloudWeGo. Agradecemos a todos que nos enviem comentários sobre questões documentais.
Biblioteca de códigos de amostra : em segundo lugar, fornecemos uma rica biblioteca de códigos de amostra.
Atualmente, fornecemos bibliotecas de código hertz-example e kitex-example, que contêm exemplos de uso executáveis de todos os recursos comumente usados e são atualizadas e mantidas regularmente.
Além disso, para permitir que as empresas usem o projeto CloudWeGo para concluir o desenvolvimento da lógica de negócios com mais rapidez, fornecemos várias demonstrações de cenários reais. Atualmente, as seguintes demonstrações são fornecidas. Os seguintes códigos de negócios são desenvolvidos usando Hertz e Kitex Ou refator. , você pode expandir sua lógica de negócios com base nisso para concluir o rápido lançamento do negócio.
-
Bookinfo : Reimplementar IstioBookinfo usando Hertz + Kitex
-
Easy Note : Implemente um serviço de notas usando microsserviços Hertz+Kitex
-
Livraria : Use Hertz+Kitex para implementar um exemplo de comércio eletrônico
-
Plataforma de pagamento aberta : Use Hertz+Kitex para implementar uma plataforma de pagamento aberta que oferece suporte a vários comerciantes
Atividades CSG : Também realizamos atividades CSG regularmente. As atividades CSG são projetadas para ajudar os desenvolvedores a entender o código-fonte e o melhor uso da estrutura.
Até agora, os eventos CSG foram realizados 5 vezes. Eles introduziram muitos códigos-fonte e práticas recomendadas da estrutura Hertz/kitex/volo para ajudar os desenvolvedores a entender e usar melhor a estrutura. Você pode visualizar introduções de problemas e replays de atividades anteriores nos problemas no cloudwego/community warehouse.
06
Panorama
No futuro, continuaremos a investir e melhorar a facilidade de uso do Cloudwego para fornecer aos usuários uma melhor experiência de P&D.
-
Processo universal de P&D: Fornece aos usuários um conjunto de processos de P&D de nível empresarial que podem ser usados diretamente e colabora com várias estruturas para completar todo o processo de desenvolvimento de negócios eficiente.
-
Gerenciamento centralizado de API: unifique o método de gerenciamento de API do projeto CloudWeGo e conclua todo o processo de descrição, desenvolvimento e teste em um único local
-
Gerenciamento distribuído de IDL: produtos IDL e códigos de negócios são gerenciados separadamente para reduzir custos de manutenção.
-
-
CWGO x LLM: Fornece recursos de assistência mais inteligentes com base em LLM
-
Geração inteligente de código: adicione descrição de negócios em IDL e combine LLM para preencher a lógica do código de negócios ao gerar código
-
Automação de documentos: escrita automática de documentos, otimização, tradução, correção de erros, etc.
-
endereço do projeto
GitHub: https://github.com/cloudwego
Site oficial: www.cloudwego.io