apache / dubbo-go
Go Implementation For Apache Dubbo .
AI Architecture Analysis
This repository is indexed by RepoMind. By analyzing apache/dubbo-go in our AI interface, you can instantly generate complete architecture diagrams, visualize control flows, and perform automated security audits across the entire codebase.
Our Agentic Context Augmented Generation (Agentic CAG) engine loads full source files into context on-demand, avoiding the fragmentation of traditional RAG systems. Ask questions about the architecture, dependencies, or specific features to see it in action.
Repository Overview (README excerpt)
Crawler viewApache Dubbo for Golang --- English | 中文 Apache Dubbo-go is a high-performance RPC and microservice framework compatible with other Dubbo language implementations. It leverages Golang's concurrency features to provide efficient service governance, including service discovery, load balancing, and traffic management. Dubbo-go supports multiple protocols, such as Dubbo, JSONRPC, Triple(gRPC-compatible), gRPC, HTTP, HTTP2, and HTTP/3 (experimental), ensuring seamless integration in heterogeneous environments. You can visit the official website for more information. Recent Updates For detailed changes, refer to CHANGELOG.md. • **3.3.1**: Optimized configuration hot-reloading with content-based caching to prevent redundant notifications. Added experimental HTTP/3 support, Apollo integration, and Triple protocol OpenAPI generation. Fixed critical race conditions in service discovery under high-concurrency. • **3.3.0**: Introduced script routing, multi-destination conditional routing, Triple protocol keepalive and connection pooling, Nacos multi-category subscriptions, and enhancements for observability and interoperability. Getting started Prerequisites • Go 1.24 or later (recommended for compatibility with recent updates). Installation To install Dubbo-go, use the following command: Quick Example You can learn how to develop a dubbo-go RPC application step by step in 5 minutes by following our Quick Start demo. It's as simple as the code shown below, you define a service with Protobuf, provide your own service implementation, register it to a server, and start the server. After the server is up and running, call your service via cURL: Or, you can start a standard dubbo-go client to call the service: See the samples for detailed information on usage. Next, learn how to deploy, monitor and manage the traffic of your dubbo-go application by visiting the official website. Features Dubbo-go provides robust service governance capabilities: • **RPC Protocols**: Triple, gRPC compatible and HTTP-friendly • **Service Discovery**: Nacos, Zookeeper, Etcd, Polaris-mesh. • **Load Balance**: Adaptive, Random, RoundRobin, LeastActive, ConsistentHash • **Traffic Management**: traffic split, timeout, rate limiting, canary release • **Configuration**: yaml file, dynamic configuration(Nacos, Apollo, Zookeeper, etc.). • **Observability**: Metrics (Prometheus), tracing (OpenTelemetry v1.21.0+ with insecure options and standardized span names), logging (with service registration lifecycle events). • **HA Strategy**: Failover, Failfast, Failsafe/Failback, Available, Broadcast, Forking. • **Interoperability**: Full compatibility with Apache Dubbo (Java) via Triple protocol generic calls, group/version wildcard matching, and TLS API redesign. ️ Tools The directory and the repository provide several utilities to streamline your Dubbo-Go development experience. dubbo-go-schema A tool that provides JSON Schema for Dubbo-Go configuration files. This simplifies the configuration process by enabling editor assistance. **Features:** • **Intelligent Assistance:** Enables code completion, hints, and real-time validation for configuration files in supported IDEs. • **Simplified Configuration:** Helps you write valid and accurate configurations with ease. For usage details, see the dubbo-go-schema README. dubbogo-cli A comprehensive command-line tool for bootstrapping, managing, and debugging your Dubbo-Go applications. **Features:** • **Project Scaffolding:** Quickly create new application templates. • **Tool Management:** Install and manage essential development tools. • **Interface Debugging:** Provides commands to debug your services. • dubbogo-cli • dubbogo-cli-v2 protoc-gen-go-triple A plugin that generates golang code for the Triple protocol from your (Protocol Buffer) definition files. **Features:** • **Code Generation:** Generates golang client and server stubs for the Triple protocol. • **Seamless Integration:** Works alongside the official to produce both Protobuf message code ( ) and Triple interface code ( ). *Note: This tool replaces the deprecated protoc-gen-dubbo3grpc and deprecated protoc-gen-go-triple.* For usage details, see the protoc-gen-go-triple README. imports-formatter This is a plugin for dubbo-go developers. A code formatting tool that organizes golang blocks according to the Dubbo-Go community style guide. **Features:** • **Automatic Formatting:** Splits statements into three distinct groups: golang standard library, third-party libraries, and internal project packages. • **Code Consistency:** Enforces a clean and consistent import style across the codebase. For usage details, see the imports-formatter README. Ecosystem • dubbo-go-samples • dubbo-go-pixiu which acting as a proxy to solve Dubbo multi-language interoperability • Interoperability with Dubbo Java • Protoc-gen-go-triple • Console, under development Documentation • Official Website: https://dubbo.apache.org/ • Dubbo-go Documentation: https://cn.dubbo.apache.org/zh-cn/overview/mannual/golang-sdk/ • CHANGELOG: https://github.com/apache/dubbo-go/blob/main/CHANGELOG.md Community • GitHub Issues: https://github.com/apache/dubbo-go/issues • Mailing Lists: https://dubbo.apache.org/en/community/ Contributions, issues, and discussions are welcome. Please visit CONTRIBUTING for details on submitting patches and the contribution workflow. Contact Join our discussion group through Ding talk, WeChat, or Discord. discord https://discord.gg/C5ywvytg User List If you are using apache/dubbo-go and think that it helps you or want to contribute code for Dubbo-go, please add your company to the user list to let us know your needs. See more user cases License Apache Dubbo-go software is licensed under the Apache License Version 2.0. See the LICENSE file for details.