Go Implementation For Apache Dubbo . https://dubbo.apache.org/
  • Go 99.4%
  • Makefile 0.2%
  • Shell 0.2%
Find a file
Repository files (latest commit first)
Filename Latest commit message Latest commit date
2026-10-27 16:41:27 +08:00
.github ci: pin Integration Test to Temurin 17 (#3780) 2026-10-27 16:37:06 +08:00
client fix(client): keep reference-level request timeout over consumer default (#3757) 2026-10-16 14:37:32 +08:00
cluster test: cover Admin tag route compatibility (#3772) 2026-10-16 13:00:58 +08:00
common feat(metadata): publish interface-level service definitions (#3711) 2026-09-22 15:34:12 +08:00
config_center fix(config_center): receive Nacos rule deletion callbacks (#3771) 2026-10-27 16:41:27 +08:00
doc/imgs [doc] update readme farmework pic (#3358) 2026-06-11 17:37:33 +08:00
filter fix(generic): handle typed nil pointers in map generalization (#3760) 2026-10-12 11:05:27 +08:00
global Refactor(triple): Enable Triple Streaming Write Buffering by default (#3749) 2026-09-24 17:03:46 +08:00
graceful_shutdown fix(graceful_shutdown, loadbalance): prevent hard exits and P2C panics (#3591) 2026-08-20 13:35:36 +08:00
imports refactor: migrate hystrix filter from main repository (#3253) 2026-03-23 11:26:46 +08:00
internal feat(metadata): publish interface-level service definitions (#3711) 2026-09-22 15:34:12 +08:00
logger test: complete dynamic logger acceptance coverage (#3763) 2026-10-16 13:00:12 +08:00
metadata feat(metadata): publish interface-level service definitions (#3711) 2026-09-22 15:34:12 +08:00
metrics fix(metrics): keep consumer labels on the local application (#3770) 2026-10-27 16:40:29 +08:00
otel/trace fix: preserve wrapped error handling (#3580) 2026-08-02 22:10:53 +08:00
protocol fix(jsonrpc): avoid infinite recursion in serverRequest.UnmarshalJSON under encoding/json v2 (#3778) 2026-10-27 16:38:39 +08:00
proxy refactor(deps): migrate gost stdlib thin wrappers, uber atomic and pkg/errors to stdlib (#3695) 2026-09-02 10:09:54 +08:00
registry feat(metadata): publish interface-level service definitions (#3711) 2026-09-22 15:34:12 +08:00
remoting refactor(deps): migrate gost stdlib thin wrappers, uber atomic and pkg/errors to stdlib (#3695) 2026-09-02 10:09:54 +08:00
server feat(triple): register $invoke for IDL-exported services (#3752) 2026-09-29 18:36:24 +08:00
tls chore(style): modernize the code style (#3471) 2026-07-13 13:40:49 +08:00
tools fix: propagate OpenAPI generator parameter errors (#3776) 2026-10-22 17:37:51 +08:00
.asf.yaml Set up default protection ruleset for default and release branches (#3325) 2026-05-21 15:09:17 +08:00
.gitignore modernize github ci 2026-08-14 11:27:01 +08:00
.gitmodules
.golangci.yml perf(unittest): make the spaghetti code look less terrible (#3144) 2025-12-27 16:03:53 +08:00
.licenserc.yaml feat(tools): help triple protocol generate OpenAPI docs (#2951) 2025-08-02 18:22:17 +08:00
CHANGELOG.md docs: add Dubbo-Go 3.3.2 changelog (#3588) 2026-08-01 15:51:11 +08:00
CONTRIBUTING.md
doc.go
dubbo.go feat(extension): extend config for scoped initialization (#3687) 2026-09-16 15:23:36 +08:00
dubbo_test.go feat(metadata): publish interface-level service definitions (#3711) 2026-09-22 15:34:12 +08:00
go.mod fix(config_center): receive Nacos rule deletion callbacks (#3771) 2026-10-27 16:41:27 +08:00
go.sum fix(config_center): receive Nacos rule deletion callbacks (#3771) 2026-10-27 16:41:27 +08:00
instance_options_init.go feat(extension): extend config for scoped initialization (#3687) 2026-09-16 15:23:36 +08:00
integrate_test.sh chore: prepare the release for version 3.3.2 (#3469) 2026-07-27 10:21:58 +08:00
LICENSE
loader.go feat(extension): extend config for scoped initialization (#3687) 2026-09-16 15:23:36 +08:00
loader_test.go feat(extension): extend config for scoped initialization (#3687) 2026-09-16 15:23:36 +08:00
Makefile fix(grpc): synchronize closing event test handler (#3755) 2026-10-09 13:47:14 +08:00
NOTICE chore(doc): Update copyright year in NOTICE file (#3593) 2026-08-05 12:35:00 +08:00
options.go feat(metadata): publish interface-level service definitions (#3711) 2026-09-22 15:34:12 +08:00
README.md docs: update README for v3.3.2 tool releases (#3597) 2026-10-22 19:37:52 +08:00
README_CN.md docs: update README for v3.3.2 tool releases (#3597) 2026-10-22 19:37:52 +08:00

Apache Dubbo for Golang

CI go.dev reference Go Report Card license


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.2:

    Upgrade note: Go 1.25 or later is required. The legacy config package has been removed; applications that imported it directly must migrate to the instance/options APIs and configuration types under global. See the 3.3.2 changelog and dubbo-go-samples for migration details and current usage.

    Apache Dubbo-go 3.3.2 is a production-readiness release focused on API consolidation, Triple protocol capabilities, application-level metadata, service governance, concurrency safety, and release tooling. It completes the removal of the legacy config package, expands generic invocation and HTTP-facing Triple features, refreshes generated-project workflows, and fixes multiple races, stale-snapshot issues, and resource leaks.

  • 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.25 or later.

Installation

To install Dubbo-go, use the following command:

go get dubbo.apache.org/dubbo-go/v3@latest

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.

func (srv *GreetTripleServer) Greet(ctx context.Context, req *greet.GreetRequest) (*greet.GreetResponse, error) {
	resp := &greet.GreetResponse{Greeting: req.Name}
	return resp, nil
}

func main() {
	srv, _ := server.NewServer(
		server.WithServerProtocol(
			protocol.WithPort(20000),
			protocol.WithTriple(),
		),
	)

	_ := greet.RegisterGreetServiceHandler(srv, &GreetTripleServer{})

	if err := srv.Serve(); err != nil {
		logger.Error(err)
	}
}

After the server is up and running, call your service via cURL:

curl \
    --header "Content-Type: application/json" \
    --data '{"name": "Dubbo"}' \
    http://localhost:20000/greet.GreetService/Greet

Or, you can start a standard dubbo-go client to call the service:

func main() {
	cli, _ := client.NewClient(
		client.WithClientURL("127.0.0.1:20000"),
	)

	svc, _ := greet.NewGreetService(cli)

	resp, _ := svc.Greet(context.Background(), &greet.GreetRequest{Name: "hello world"})
	
	logger.Infof("Greet response: %s", resp.Greeting)
}

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-architecture

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

Common development tools live in tools/.

Tool Purpose
dubbogo-cli Scaffold demos/apps, install companion tools, inspect metadata, and debug services.
protoc-gen-go-triple Generate dubbo-go Triple bindings from protobuf service definitions.
protoc-gen-triple-openapi Generate OpenAPI v3 documents from Triple protobuf services.
imports-formatter Format Go import blocks using dubbo-go grouping rules.
dubbo-go-schema Provide JSON Schema completion and validation for dubbo-go YAML config.
benchmark Performance benchmark suite for comparing Dubbo-Go, Dubbo-Java, and gRPC frameworks.

Ecosystem

Documentation

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 or WeChat.

invite.png

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.