Apache Dubbo Go Implementation.
Apache/Dubbo-go image, licensed under Creative Commons 3.0 Attributions license.
Both extension module and layered project architecture is according to Apache Dubbo (including protocol layer, registry layer, cluster layer, config layer and so on), the advantage of this arch is as following: you can implement these layered interfaces in your own way, override the default implementation of dubbo-go by calling 'extension.SetXXX' of extension, complete your special needs without modifying the source code. At the same time, you are welcome to contribute implementation of useful extension to the community.
If you wanna know more about dubbo-go, please visit this reference Project Architeture design
- Role: Consumer, Provider
- Transport: HTTP, TCP
- Codec: JsonRPC v2, Hessian v2
- Registry: ZooKeeper/etcd v3/nacos/consul
- Configure Center: Zookeeper
- Cluster Strategy: Failover/Failfast/Failsafe/Failback/Available/Broadcast/Forking
- Load Balance: Random/RoundRobin/LeastActive
- Filter: Echo Health Check/Circuit break and service downgrade
- Other feature: generic invoke/start check/connecting certain provider/multi-protocols/multi-registries/multi-versions/service group
- Load Balance: ConsistentHash
- Filter: TokenFilter/AccessLogFilter/CountFilter/ExecuteLimitFilter/TpsLimitFilter
- Registry: k8s
- Configure Center: apollo
- Dynamic Configuration Center & Metadata Center (dubbo v2.7.x)
- Metrics: Promethus(dubbo v2.7.x)
- Registry: kubernetes
- Routing: istio
- tracing (dubbo ecosystem)
You can know more about dubbo-go by its roadmap.
The subdirectory examples shows how to use dubbo-go. Please read the examples/README.md carefully to learn how to dispose the configuration and compile the program.
Running unit tests
go test ./... # coverage go test ./... -coverprofile=coverage.txt -covermode=atomic