{"id":13601079,"url":"https://github.com/apache/dubbo-go","last_synced_at":"2026-01-12T02:50:14.132Z","repository":{"id":37431073,"uuid":"143965255","full_name":"apache/dubbo-go","owner":"apache","description":"Go Implementation For Apache Dubbo .","archived":false,"fork":false,"pushed_at":"2025-05-09T13:17:55.000Z","size":96445,"stargazers_count":4791,"open_issues_count":70,"forks_count":945,"subscribers_count":158,"default_branch":"main","last_synced_at":"2025-05-11T03:46:41.225Z","etag":null,"topics":["go","http2","microservices","rpc","service-mesh"],"latest_commit_sha":null,"homepage":"https://dubbo.apache.org/","language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/apache.png","metadata":{"files":{"readme":"README.md","changelog":"CHANGELOG.md","contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null}},"created_at":"2018-08-08T05:30:36.000Z","updated_at":"2025-05-08T02:43:55.000Z","dependencies_parsed_at":"2024-01-16T10:19:03.637Z","dependency_job_id":"cb950296-5450-41e9-b4e2-38ad8f5d552e","html_url":"https://github.com/apache/dubbo-go","commit_stats":{"total_commits":6657,"total_committers":250,"mean_commits":26.628,"dds":0.8945470932852636,"last_synced_commit":"d1fe72b705c749a8b4b7725909ac06e333551cb5"},"previous_names":["dubbo/go-for-apache-dubbo","apache/go-for-apache-dubbo"],"tags_count":63,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fdubbo-go","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fdubbo-go/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fdubbo-go/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/apache%2Fdubbo-go/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/apache","download_url":"https://codeload.github.com/apache/dubbo-go/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":253514555,"owners_count":21920334,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["go","http2","microservices","rpc","service-mesh"],"created_at":"2024-08-01T18:00:55.113Z","updated_at":"2026-01-12T02:50:14.125Z","avatar_url":"https://github.com/apache.png","language":"Go","readme":"# Apache Dubbo for Golang\n\n[![CI](https://github.com/apache/dubbo-go/workflows/CI/badge.svg)](https://github.com/apache/dubbo-go/actions)\n[![go.dev reference](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go\u0026logoColor=white\u0026style=flat-square)](https://pkg.go.dev/github.com/apache/dubbo-go/v3?tab=doc)\n[![Go Report Card](https://goreportcard.com/badge/github.com/apache/dubbo-go)](https://goreportcard.com/report/github.com/apache/dubbo-go)\n![license](https://img.shields.io/badge/license-Apache--2.0-green.svg)\n\n---\n\nEnglish | [中文](README_CN.md)\n\nApache 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.\n\nYou can visit [the official website](https://dubbo.apache.org/) for more information.\n\n## Recent Updates\n\nFor detailed changes, refer to CHANGELOG.md.\n\n- **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.\n\n- **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.\n\n## Getting started\n\n### Prerequisites\n\n- Go 1.24 or later (recommended for compatibility with recent updates).\n\n### Installation\n\nTo install Dubbo-go, use the following command:\n\n\n```Bash\ngo get dubbo.apache.org/dubbo-go/v3@latest\n```\n\n### Quick Example\n\nYou can learn how to develop a dubbo-go RPC application step by step in 5 minutes by following our [Quick Start](https://github.com/apache/dubbo-go-samples/tree/main/helloworld) demo. \n\nIt'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.\n\n```go\nfunc (srv *GreetTripleServer) Greet(ctx context.Context, req *greet.GreetRequest) (*greet.GreetResponse, error) {\n\tresp := \u0026greet.GreetResponse{Greeting: req.Name}\n\treturn resp, nil\n}\n\nfunc main() {\n\tsrv, _ := server.NewServer(\n\t\tserver.WithServerProtocol(\n\t\t\tprotocol.WithPort(20000),\n\t\t\tprotocol.WithTriple(),\n\t\t),\n\t)\n\n\t_ := greet.RegisterGreetServiceHandler(srv, \u0026GreetTripleServer{})\n\n\tif err := srv.Serve(); err != nil {\n\t\tlogger.Error(err)\n\t}\n}\n```\n\nAfter the server is up and running, call your service via cURL:\n\n```shell\ncurl \\\n    --header \"Content-Type: application/json\" \\\n    --data '{\"name\": \"Dubbo\"}' \\\n    http://localhost:20000/greet.GreetService/Greet\n```\n\nOr, you can start a standard dubbo-go client to call the service:\n\n```go\nfunc main() {\n\tcli, _ := client.NewClient(\n\t\tclient.WithClientURL(\"127.0.0.1:20000\"),\n\t)\n\n\tsvc, _ := greet.NewGreetService(cli)\n\n\tresp, _ := svc.Greet(context.Background(), \u0026greet.GreetRequest{Name: \"hello world\"})\n\t\n\tlogger.Infof(\"Greet response: %s\", resp.Greeting)\n}\n```\n\nSee the [samples](https://github.com/apache/dubbo-go-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.\n\n## Features\n\n![dubbo-go-architecture](./doc/imgs/arc.png)\n\nDubbo-go provides robust service governance capabilities:\n\n- **RPC Protocols**: Triple, gRPC compatible and HTTP-friendly\n- **Service Discovery**: Nacos, Zookeeper, Etcd, Polaris-mesh.\n- **Load Balance**: Adaptive, Random, RoundRobin, LeastActive, ConsistentHash\n- **Traffic Management**: traffic split, timeout, rate limiting, canary release\n- **Configuration**: yaml file, dynamic configuration(Nacos, Apollo, Zookeeper, etc.).\n- **Observability**: Metrics (Prometheus), tracing (OpenTelemetry v1.21.0+ with insecure options and standardized span names), logging (with service registration lifecycle events).\n- **HA Strategy**: Failover, Failfast, Failsafe/Failback, Available, Broadcast, Forking.\n- **Interoperability**: Full compatibility with Apache Dubbo (Java) via Triple protocol generic calls, group/version wildcard matching, and TLS API redesign.\n\n\n## ️ Tools\n\nThe `tools/` directory and the `dubbogo/tools` repository provide several utilities to streamline your Dubbo-Go development experience.\n\n### [dubbo-go-schema](https://github.com/apache/dubbo-go/tree/main/tools/dubbo-go-schema)\n\nA tool that provides JSON Schema for Dubbo-Go configuration files. This simplifies the configuration process by enabling editor assistance.\n\n**Features:**\n\n* **Intelligent Assistance:** Enables code completion, hints, and real-time validation for configuration files in supported IDEs.\n* **Simplified Configuration:** Helps you write valid and accurate configurations with ease.\n\nFor usage details, see the [dubbo-go-schema README](./tools/dubbo-go-schema/README.md).\n\n\n### [dubbogo-cli](https://github.com/apache/dubbo-go/tree/main/tools/dubbogo-cli)\n\nA comprehensive command-line tool for bootstrapping, managing, and debugging your Dubbo-Go applications.\n\n**Features:**\n\n* **Project Scaffolding:** Quickly create new application templates.\n* **Tool Management:** Install and manage essential development tools.\n* **Interface Debugging:** Provides commands to debug your services.\n\n- [dubbogo-cli](https://github.com/apache/dubbo-go/tree/main/tools/dubbogo-cli)\n- [dubbogo-cli-v2](https://github.com/dubbogo/tools/tree/master/cmd/dubbogo-cli-v2)\n\n\n### [protoc-gen-go-triple](https://github.com/dubbogo/protoc-gen-go-triple)\n\nA `protoc` plugin that generates golang code for the Triple protocol from your `.proto` (Protocol Buffer) definition files.\n\n**Features:**\n\n* **Code Generation:** Generates golang client and server stubs for the Triple protocol.\n* **Seamless Integration:** Works alongside the official `protoc-gen-go` to produce both Protobuf message code (`.pb.go`) and Triple interface code (`.triple.go`).\n\n*Note: This tool replaces the deprecated [protoc-gen-dubbo3grpc](https://github.com/dubbogo/tools/tree/master/cmd/protoc-gen-dubbo3grpc) and deprecated [protoc-gen-go-triple](https://github.com/dubbogo/tools/tree/master/cmd/protoc-gen-go-triple).*\n\nFor usage details, see the [protoc-gen-go-triple README](https://github.com/dubbogo/protoc-gen-go-triple).\n\n\n### [imports-formatter](https://github.com/dubbogo/tools?tab=readme-ov-file#imports-formatter)\n\nThis is a plugin for dubbo-go developers. A code formatting tool that organizes golang `import` blocks according to the Dubbo-Go community style guide.\n\n**Features:**\n\n* **Automatic Formatting:** Splits `import` statements into three distinct groups: golang standard library, third-party libraries, and internal project packages.\n* **Code Consistency:** Enforces a clean and consistent import style across the codebase.\n\nFor usage details, see the [imports-formatter README](https://github.com/dubbogo/tools?tab=readme-ov-file#imports-formatter).\n\n## Ecosystem\n- [dubbo-go-samples](https://github.com/apache/dubbo-go-samples)\n- [dubbo-go-pixiu which acting as a proxy to solve Dubbo multi-language interoperability](https://github.com/apache/dubbo-go-pixiu)\n- [Interoperability with Dubbo Java](https://dubbo-next.staged.apache.org/zh-cn/overview/mannual/golang-sdk/tutorial/interop-dubbo/)\n- [Protoc-gen-go-triple](https://github.com/dubbogo/protoc-gen-go-triple/)\n- [Console](https://github.com/apache/dubbo-kubernetes), under development\n\n## Documentation\n\n- Official Website: https://dubbo.apache.org/\n- Dubbo-go Documentation: https://dubbo.apache.org/docs/dubbo-go/\n- CHANGELOG: https://github.com/apache/dubbo-go/blob/main/CHANGELOG.md\n\n## Community\n\n- GitHub Issues: https://github.com/apache/dubbo-go/issues\n- Mailing Lists: https://dubbo.apache.org/en/community/\n\nContributions, issues, and discussions are welcome. Please visit [CONTRIBUTING](./CONTRIBUTING.md) for details on submitting patches and the contribution workflow.\n\n## Contact\n\nJoin our discussion group through Ding talk, WeChat, or Discord.\n\ndiscord https://discord.gg/C5ywvytg\n![invite.png](./doc/imgs/invite.png)\n\n\n## [User List](https://github.com/apache/dubbo-go/issues/2)\n\nIf you are using [apache/dubbo-go](https://github.com/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](https://github.com/apache/dubbo-go/issues/2) to let us know your needs.\n\n\n\u003cdiv\u003e\n\u003ctable\u003e\n  \u003ctbody\u003e\n  \u003ctr\u003e\u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"  valign=\"middle\"\u003e\n        \u003ca href=\"\" target=\"_blank\"\u003e\n          \u003cimg width=\"222px\"  src=\"./doc/imgs/usecase-beike.png\"\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\"  valign=\"middle\"\u003e\n        \u003ca href=\"\" target=\"_blank\"\u003e\n          \u003cimg width=\"222px\"  src=\"./doc/imgs/usecase-gaode.png\"\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\"  valign=\"middle\"\u003e\n        \u003ca href=\"\" target=\"_blank\"\u003e\n          \u003cimg width=\"222px\"  src=\"./doc/imgs/usecase-eht.png\"\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\"  valign=\"middle\"\u003e\n        \u003ca href=\"https://github.com/mosn\" target=\"_blank\"\u003e\n          \u003cimg width=\"222px\"  src=\"./doc/imgs/usecase-mosn.png\"\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\"  valign=\"middle\"\u003e\n        \u003ca href=\"\" target=\"_blank\"\u003e\n          \u003cimg width=\"222px\"  src=\"./doc/imgs/usecase-pdd.png\"\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"  valign=\"middle\"\u003e\n        \u003ca href=\"http://www.j.cn\" target=\"_blank\"\u003e\n          \u003cimg width=\"222px\"  src=\"./doc/imgs/usecase-jd.png\"\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\"  valign=\"middle\"\u003e\n        \u003ca href=\"\" target=\"_blank\"\u003e\n          \u003cimg width=\"222px\"  src=\"./doc/imgs/usecase-kaikele.png\"\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\"  valign=\"middle\"\u003e\n        \u003ca href=\"\" target=\"_blank\"\u003e\n          \u003cimg width=\"222px\"  src=\"./doc/imgs/usecase-sohu.png\"\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\"  valign=\"middle\"\u003e\n        \u003ca href=\"https://www.zto.com\" target=\"_blank\"\u003e\n          \u003cimg width=\"222px\"  src=\"./doc/imgs/usecase-zto.png\"\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\"  valign=\"middle\"\u003e\n        \u003ca href=\"\" target=\"_blank\"\u003e\n          \u003cimg width=\"222px\"  src=\"./doc/imgs/usecase-tianyi.png\"\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"  valign=\"middle\"\u003e\n        \u003ca href=\"http://www.mgtv.com\" target=\"_blank\"\u003e\n          \u003cimg width=\"222px\"  src=\"./doc/imgs/usecase-mgtv.png\"\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\"  valign=\"middle\"\u003e\n        \u003ca href=\"\" target=\"_blank\"\u003e\n          \u003cimg width=\"222px\"  src=\"./doc/imgs/usecase-vivo.png\"\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\"  valign=\"middle\"\u003e\n        \u003ca href=\"http://www.ruubypay.com\" target=\"_blank\"\u003e\n           \u003cimg width=\"222px\"  src=\"./doc/imgs/usecase-tuya.png\"\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\"  valign=\"middle\"\u003e\n          \u003ca href=\"https://www.dingtalk.com\" target=\"_blank\"\u003e\n             \u003cimg width=\"222px\"  src=\"./doc/imgs/usecase-xiecheng.png\"\u003e\n          \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\"  valign=\"middle\"\u003e\n          \u003ca href=\"https://www.autohome.com.cn\" target=\"_blank\"\u003e\n             \u003cimg width=\"222px\"  src=\"./doc/imgs/usecase-autohome.png\"\u003e\n          \u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\u003c/tr\u003e\n    \u003ctr\u003e\n      \u003ctd align=\"center\"  valign=\"middle\"\u003e\n        \u003ca href=\"https://www.mi.com/\" target=\"_blank\"\u003e\n          \u003cimg width=\"222px\"  src=\"./doc/imgs/usecase-mi.png\"\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\"  valign=\"middle\"\u003e\n        \u003ca href=\"https://opayweb.com/\" target=\"_blank\"\u003e\n          \u003cimg width=\"222px\"  src=\"./doc/imgs/usecase-zonghengwenxue.png\"\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"middle\"\u003e\n        \u003ca href=\"\" target=\"_blank\"\u003e\n          \u003cimg width=\"222px\" src=\"./doc/imgs/usecase-tiger-brokers.png\"\u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"middle\"\u003e\n        \u003ca href=\"\" target=\"_blank\"\u003e\n          \u003cimg width=\"222px\" src=\"./doc/imgs/usecase-zhanzhang.png\" \u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n      \u003ctd align=\"center\" valign=\"middle\"\u003e\n        \u003ca href=\"\" target=\"_blank\"\u003e\n          \u003cimg width=\"222px\" src=\"./doc/imgs/usecase-genshuixue.png\" \u003e\n        \u003c/a\u003e\n      \u003c/td\u003e\n    \u003c/tr\u003e\n    \u003ctr\u003e\u003c/tr\u003e\n  \u003c/tbody\u003e\n\u003c/table\u003e\n\u003c/div\u003e\n\n[See more user cases](https://github.com/apache/dubbo-go/issues/2)\n\n## License\n\nApache Dubbo-go software is licensed under the Apache License Version 2.0. See the [LICENSE](./LICENSE) file for details.","funding_links":[],"categories":["Misc","开源类库","Go","Open source library","Tasks - Gets Involved In Community","Web Frameworks"],"sub_categories":["RPC","Utility/Miscellaneous"],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fdubbo-go","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fapache%2Fdubbo-go","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fapache%2Fdubbo-go/lists"}