Sobre o projeto

O Apache Dubbo-go é a implementação em Go do Apache Dubbo, um framework de RPC e microsserviços de alto desempenho projetado para interoperar com implementações do Dubbo em outras linguagens. Ele utiliza os recursos de concorrência do Go para oferecer governança de serviços, como descoberta de serviços, balanceamento de carga e gestão de tráfego. O suporte a protocolos inclui Dubbo, JSONRPC, Triple (compatível com gRPC), gRPC, HTTP, HTTP2 e HTTP/3 experimental, o que auxilia a integração em ambientes heterogêneos. As integrações de descoberta de serviços listadas incluem Nacos, Zookeeper, Etcd e Polaris-mesh. As estratégias de balanceamento de carga incluem Adaptive, Random, RoundRobin, LeastActive e ConsistentHash. A gestão de tráfego abrange divisão de tráfego, timeout, limitação de taxa e canary release. A configuração pode vir de arquivos YAML ou de fontes dinâmicas como Nacos, Apollo e Zookeeper. As opções de observabilidade incluem métricas Prometheus, rastreamento OpenTelemetry e logging com eventos do ciclo de vida de registro de serviços. As estratégias de alta disponibilidade incluem Failover, Failfast, Failsafe/Failback, Available, Broadcast e Forking. O README destaca a interoperabilidade com o Apache Dubbo (Java) por meio de chamadas genéricas do protocolo Triple, correspondência de curingas de grupo/versão e um redesenho da API TLS. As versões recentes concentram-se na consolidação da API, recursos do protocolo Triple, metadados em nível de aplicação, governança de serviços, segurança de concorrência e ferramentas de release. A versão 3.3.2 remove o pacote de configuração legado em favor do pacote global e observa correções para races, snapshots obsoletos e vazamentos de recursos. A versão 3.3.1 adicionou recarga a quente de configuração com cache baseado em conteúdo, HTTP/3 experimental, integração com Apollo e geração de OpenAPI do Triple. A versão 3.3.0 introduziu roteamento por script, roteamento condicional com múltiplos destinos, keepalive e pool de conexões do Triple, e assinaturas multicategoria do Nacos. Para começar, é necessário Go 1.24 ou posterior. A instalação é feita via `go get dubbo.apache.org/dubbo-go/v3@latest`. Um exemplo rápido mostra a definição de um serviço com Protobuf, sua implementação, o registro em um servidor com o protocolo Triple em uma porta e a execução do serviço. O serviço pode então ser chamado com cURL usando JSON sobre HTTP, ou por meio de um cliente dubbo-go padrão. Há exemplos disponíveis no repositório dubbo-go-samples. As ferramentas de desenvolvimento ficam no diretório `tools/`: dubbogo-cli para scaffolding, instalação de ferramentas complementares, inspeção de metadados e depuração; protoc-gen-go-triple para gerar bindings Triple a partir de definições protobuf; protoc-gen-triple-openapi para gerar documentos OpenAPI v3; imports-formatter para agrupamento de imports Go; dubbo-go-schema para validação de configuração YAML; e uma suíte de benchmarks comparando Dubbo-Go, Dubbo-Java e gRPC. O ecossistema inclui dubbo-go-samples, dubbo-go-pixiu como proxy para interoperabilidade multilíngue, tutoriais de interoperabilidade com Dubbo Java e o console Dubbo Admin. A documentação está disponível no site oficial do Dubbo e na seção Go SDK. O projeto é licenciado sob a Apache License 2.0 e aceita contribuições por meio de issues no GitHub e listas de e-mail.