finds.dev← search

// the find

unionj-cloud/go-doudou

★ 1,172 · Go · MIT · updated May 2026

go-doudou(doudou pronounce /dəudəu/)is OpenAPI 3.0 (for REST) spec and Protobuf v3 (for grpc) based lightweight microservice framework. It supports monolith service application as well.

go-doudou is a code-generation-first microservice framework for Go that takes your interface definition and generates HTTP handlers, OpenAPI 3.0 specs, gRPC protobuf files, and typed clients. It also bundles service discovery (Nacos, etcd, Zookeeper), rate limiting, circuit breaking, and remote config management into one package. Aimed at teams building internal microservices who want less boilerplate without switching to a heavy platform like Istio.

The interface-first approach is the right idea — you write a Go interface, the CLI generates the transport layer, and you only touch the implementation. This is a genuine productivity win over manually wiring handlers and writing OpenAPI by hand. The dual REST/gRPC support from a single service definition is well thought out, and the generated Protobuf files mean you're not maintaining two separate contracts. The built-in resilience primitives (rate limiter, circuit breaker, bulkhead, retry) being wired at the framework level rather than left to the developer to compose is a solid choice for teams that would otherwise skip them. The ORM-to-DDL sync (generating schema from Go structs) is convenient for keeping code and database in step during development.

The community is almost entirely Chinese-speaking — WeChat/QQ groups, a Chinese README, and a maintainer contact address on QQ. If you hit an edge case the docs don't cover, you're filing issues or reading Chinese discussion threads. The benchmark image is a static PNG from 2022 on v1.3.7 with no methodology detail beyond machine specs, which tells you nothing useful about current performance under realistic conditions. The generated code volume is significant — the testdata directory alone shows dozens of generated files per service, which means diffs are noisy and merging generated code across versions is painful when the generator changes its output. The service mesh features (memberlist, etcd, Nacos discovery) add real operational complexity that isn't well-documented in English, so if you're not already running one of those systems, you'll be standing one up just to get service discovery working.

View on GitHub → Homepage ↗

// want more like this?

We dig through GitHub every week and send a few repos picked for what you actually care about — each with an honest take like this one.

Get finds in your inbox → Search again →