# Apache Dubbo-Go [中文](https://github.com/apache/dubbo-go/blob/master/README_CN.md) # [![Build Status](https://travis-ci.org/apache/dubbo-go.svg?branch=master)](https://travis-ci.org/apache/dubbo-go) [![codecov](https://codecov.io/gh/apache/dubbo-go/branch/master/graph/badge.svg)](https://codecov.io/gh/apache/dubbo-go) [![go.dev reference](https://img.shields.io/badge/go.dev-reference-007d9c?logo=go&logoColor=white&style=flat-square)](https://pkg.go.dev/github.com/apache/dubbo-go?tab=doc) [![Go Report Card](https://goreportcard.com/badge/github.com/apache/dubbo-go)](https://goreportcard.com/report/github.com/apache/dubbo-go) ![license](https://img.shields.io/badge/license-Apache--2.0-green.svg) --- Apache Dubbo Go Implementation. ## License Apache License, Version 2.0 ## Release note ## [v1.4.0 - Mar 17, 2020](https://github.com/apache/dubbo-go/releases/tag/v1.4.0) [v1.3.0 - Mar 1, 2020](https://github.com/apache/dubbo-go/releases/tag/v1.3.0) [v1.2.0 - Nov 15, 2019](https://github.com/apache/dubbo-go/releases/tag/v1.2.0) [v1.1.0 - Sep 7, 2019 the first release after transferred to apache](https://github.com/apache/dubbo-go/releases/tag/v1.1.0) [v1.0.0 - May 29, 2019 compatible with dubbo v2.6.5](https://github.com/apache/dubbo-go/releases/tag/v1.0.0) ## Code design ## Extension module and layered code design based on dubbo (include protocol layer,registry layer,cluster layer,config layer and so on), Our goal is: you can implement these layered interfaces in a new way, and override the default implementation of dubbo-go[same go-for-apache-dubbo] by calling 'extension.SetXXX' of extension, and complete your special needs without modifying the source code. At the same time, you are welcome to contribute implementation of useful expansion to the community. ![frame design](https://raw.githubusercontent.com/wiki/dubbo/dubbo-go/dubbo-go%E4%BB%A3%E7%A0%81%E5%88%86%E5%B1%82%E8%AE%BE%E8%AE%A1.png) About detail design please refer to [code layered design](https://github.com/dubbo/go-for-apache-dubbo/wiki/dubbo-go-V1.0-design) ## Feature list ## Finished List: - Role: Consumer(√), Provider(√) - Transport: HTTP(√), TCP(√) - Codec: JsonRPC v2(√), Hessian v2(√) - Registry: ZooKeeper(√) - Cluster Strategy: Failover(√) - Load Balance: Random(√) - Filter: Echo Health Check(√) Working List: - Cluster Strategy: Failfast/Failsafe/Failback/Forking - Load Balance: RoundRobin/LeastActive/ConsistentHash - Filter: TokenFilter/AccessLogFilter/CountFilter/ActiveLimitFilter/ExecuteLimitFilter/GenericFilter/TpsLimitFilter - Registry: etcd/k8s/consul Todo List: - routing rule (dubbo v2.6.x) - monitoring (dubbo v2.6.x) - dynamic configuration (dubbo v2.7.x) - metrics (dubbo v2.7.x) waiting dubbo's quota You can know more about dubbo-go by its [roadmap](https://github.com/dubbo/go-for-apache-dubbo/wiki/Roadmap). ## Quick Start The subdirectory examples shows how to use dubbo-go. Please read the [examples/README.md](https://github.com/dubbo/go-for-apache-dubbo/blob/develop/examples/README.md) carefully to learn how to dispose the configuration and compile the program. ## Benchmark Benchmark project please refer to [dubbo-go-benchmark](https://github.com/dubbogo/dubbo-go-benchmark) About dubbo-go benchmarking report, please refer to: * [Benchmark test of dubbo](https://github.com/dubbo/go-for-apache-dubbo/wiki/Benchmark-test-of-dubbo) * [Benchmark test of jsonrpc](https://github.com/dubbo/go-for-apache-dubbo/wiki/Benchmark-test-of-jsonrpc) ## [User List](https://github.com/dubbo/go-for-apache-dubbo/issues/2) ![ctrip](https://pic.c-ctrip.com/common/c_logo2013.png) ## Dev Plan --- - [Roadmap](https://github.com/dubbo/dubbo-go/wiki/Roadmap) - [x] [task 1 tcp/hessian implementation ](https://github.com/dubbo/dubbo-go/wiki/Roadmap-task-1-TODO-LIST) - [ ] [task 2 Reconstruction as dubbo](https://github.com/dubbo/go-for-apache-dubbo/wiki/dubbo-go-V2.6-design)