Related samples:
Dubbo Go is organized around a small set of runtime concepts: an application instance, providers, consumers, protocols, registries, metadata, and governance extensions. Current applications are usually built with the API entry points in dubbo.go, server, and client, while configuration-file users still go through config.RootConfig.
| Layer | Important packages | Responsibility |
|---|---|---|
| Application instance | dubbo.go, options.go | Holds application, protocol, registry, metadata, metrics, tracing, router, and shutdown options. |
| Provider API | server | Registers service handlers, builds service options, creates invokers, and exports services. |
| Consumer API | client | Creates clients, dials service references, creates generated or generic services, and invokes remote methods. |
| Protocol | protocol/base, protocol/triple, protocol/dubbo, protocol/rest | Converts invokers into network servers on provider side and network clients on consumer side. |
| Registry and discovery | registry, registry/protocol, registry/servicediscovery, registry/directory | Handles registration, subscription, service discovery, and registry-backed invocation. |
| Metadata | metadata, metadata/report, metadata/mapping | Stores service definitions, service-to-application mapping, and metadata reports. |
| Governance extensions | filter, cluster, cluster/router, cluster/loadbalance, common/extension | Provides filters, routing, load balancing, cluster strategies, and extension registration. |
For the current server API, a provider normally follows this path:
dubbo.NewInstance(...) creates an application instance and initializes global options.ins.NewServer(...) creates a server with application, protocol, registry, and provider options.server.Register(...) or server.RegisterService(...).ServiceOptions, records service metadata, and creates an invoker.ServiceOptions.Export() delegates to protocol export logic.registry/protocol coordinates service export, registry registration, and metadata reporting.The Triple protocol implementation exports services through protocol/triple. The application-level discovery path registers application instances and metadata through registry/servicediscovery.
A consumer normally follows this path:
dubbo.NewInstance(...) creates an application instance.ins.NewClient(...) creates a client with registry, protocol, consumer, metadata, metrics, tracing, and router options.client.DialWithInfo(...), while generic calls use client.NewGenericService(...).ReferenceOptions and initializes metadata report if needed.registry/protocol.Many implementations are registered by Go package initialization. Importing:
import _ "dubbo.apache.org/dubbo-go/v3/imports"
loads common built-in protocols, registries, filters, routers, metadata reports, tracing exporters, metrics, load balancers, and cluster strategies. Users can also import only the specific implementation packages they need.