dubbo-go-samples  by apache

Go examples for the Dubbo RPC framework

created 4 years ago
262 stars

Top 97.8% on sourcepulse

GitHubView on GitHub
Project Summary

This repository provides a comprehensive collection of examples for Apache Dubbo-go, a high-performance RPC framework. It serves developers building microservices with Go, showcasing various features like protocol support, configuration, tracing, and integration with other technologies.

How It Works

The examples demonstrate Dubbo-go's core functionalities by implementing client-server RPC patterns across different protocols (Dubbo, gRPC, Triple, JSON-RPC) and serialization formats (Hessian2, Protobuf, MsgPack). It highlights advanced features such as service mesh integration, distributed tracing with OpenTelemetry, distributed transactions with Seata, and dynamic configuration management using various registries (ZooKeeper, Nacos, Polaris).

Quick Start & Requirements

  • Refer to the How To Run documentation for detailed instructions.
  • Requires Go development environment.
  • Many examples require specific backend services like ZooKeeper, Nacos, or Envoy.

Highlighted Details

  • Extensive coverage of RPC protocols including Dubbo, gRPC, and the native Triple protocol with multiple serialization options.
  • Demonstrates integration with observability tools like Prometheus for metrics and OpenTelemetry for tracing.
  • Includes examples for service mesh deployment on Kubernetes using Envoy and proxyless architectures.
  • Showcases advanced distributed system patterns like distributed transactions (Seata) and asynchronous communication.

Maintenance & Community

  • Part of the Apache Dubbo ecosystem, indicating a mature project with community backing.
  • Contribution guidelines are provided for adding new examples.

Licensing & Compatibility

  • Licensed under the Apache License 2.0.
  • Permissive license suitable for commercial and closed-source applications.

Limitations & Caveats

  • The repository contains both current and legacy samples, requiring users to identify the relevant versions for their needs.
  • Setting up many examples requires external dependencies and infrastructure (e.g., Kubernetes, specific registry services).
Health Check
Last commit

5 days ago

Responsiveness

Inactive

Pull Requests (30d)
13
Issues (30d)
1
Star History
12 stars in the last 90 days

Explore Similar Projects

Feedback? Help us improve.