Why Douyu Chose Go to Build the Jupiter Microservice Framework
Douyu's Go team explains how the Jupiter framework was born from internal needs, its evolution through multi‑data‑center and cloud‑native transitions, its differences from other Go microservice solutions, and the company's open‑source strategy and future plans.
Jupiter's Birth
Jupiter originated from Douyu's internal Golang microservice framework, refined over three years and validated by hundreds of services, now at version 0.5.0, though some custom features remain unreleased.
Douyu chose to build its own framework instead of adopting existing ones because early reliance on open‑source libraries revealed functional gaps and bugs that required heavy customization, leading to a unified RPC solution that evolved into Jupiter.
Compared with mature frameworks like Spring Cloud and Dubbo, Jupiter is not perfect but leverages Go‑native ecosystems such as gRPC, ETCD, Prometheus, and Jaeger, and integrates easily with echo, gin, and other RPC frameworks, making it well‑suited for Douyu's needs.
Why Choose Go
Go, released by Google in 2009, offers native high‑concurrency support ideal for cloud‑native container environments. Douyu migrated from PHP to a multi‑stack architecture (PHP, Go, Java, C++) around 2016, attracted by Go's concurrency and containerization advantages.
Transition challenges included moving from a weak‑typed to a strong‑typed language, library scarcity, and package management issues, but Go's simplicity reduced refactoring costs.
Jupiter was created to improve Go development efficiency and governance, later supporting multi‑data‑center, cloud, container, and chaos engineering needs, with the Juno platform providing complementary governance capabilities.
Differences from Other Microservice Frameworks
Jupiter focuses more on service governance than pure RPC, offering deep integration with echo, gin, and custom RPC solutions, and aims to simplify RPC while enhancing governance features.
Beyond RPC, Jupiter addresses caching, storage, message queues, task orchestration, observability (logging, metrics, tracing), unified error codes, profiling, dynamic configuration, and other governance dimensions.
For cross‑language communication, Douyu uses Dubbo‑gRPC on the Java side and a multi‑registration key approach on the Go side to interoperate with Dubbo, though they seek a more elegant solution.
The Significance of Microservice Architecture
Microservices help Douyu handle growing business scale and organizational changes, improving maintainability, high availability, and scalability by defining clear service boundaries and SLAs.
When a monolithic codebase exceeds the capacity of a two‑pizza team, splitting into microservices becomes advantageous.
Douyu's Open‑Source Commitment
Douyu opened Jupiter and the Juno governance platform to share their service governance experience, receiving valuable community feedback and planning to open more internal libraries in the future.
The team aims to continue enhancing Juno's configuration, registration, monitoring, and governance centers, making them compatible with Jupiter and other open‑source frameworks.
Future Outlook
Douyu plans to further open‑source internal projects such as a memory‑based object store, high‑concurrency Redis client, and full‑link stress testing tools, integrating them into the Jupiter ecosystem.
Signed-in readers can open the original source through BestHub's protected redirect.
This article has been distilled and summarized from source material, then republished for learning and reference. If you believe it infringes your rights, please contactand we will review it promptly.
Programmer DD
A tinkering programmer and author of "Spring Cloud Microservices in Action"
How this landed with the community
Was this worth your time?
0 Comments
Thoughtful readers leave field notes, pushback, and hard-won operational detail here.
