Skip to content
Snippets Groups Projects
README.md 5.56 KiB
Newer Older
# Apache Dubbo-go [中文](./README_CN.md) #
fangyincheng's avatar
fangyincheng committed
[![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)
relunctance's avatar
relunctance committed
[![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)
AlexStocks's avatar
AlexStocks committed
---
yuyu's avatar
yuyu committed
Apache Dubbo Go Implementation.
AlexStocks's avatar
AlexStocks committed

AlexStocks's avatar
AlexStocks committed

AlexStocks's avatar
AlexStocks committed
## License
AlexStocks's avatar
AlexStocks committed

AlexStocks's avatar
AlexStocks committed
Apache License, Version 2.0
AlexStocks's avatar
AlexStocks committed

vito.he's avatar
vito.he committed
## Release note ##

[v1.0.0 - May 29, 2019 compatible with dubbo v2.6.5](https://github.com/apache/dubbo-go/releases/tag/v1.0.0)
vito.he's avatar
vito.he committed

vito.he's avatar
vito.he committed
[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.2.0 - Nov 15, 2019](https://github.com/apache/dubbo-go/releases/tag/v1.2.0)

## Project Architecture ##
fangyincheng's avatar
fangyincheng committed

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.
fangyincheng's avatar
fangyincheng committed

![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)
vito.he's avatar
vito.he committed

If you wanna know more about dubbo-go, please visit this reference [Project Architeture design](https://github.com/apache/dubbo-go/wiki/dubbo-go-V1.0-design)
fangyincheng's avatar
fangyincheng committed

AlexStocks's avatar
AlexStocks committed
## Feature list ##
AlexStocks's avatar
AlexStocks committed

yuyu's avatar
yuyu committed
Finished List:
vito.he's avatar
vito.he committed

AlexStocks's avatar
AlexStocks committed
- Role
    * Consumer
    * Provider

- Transport
    * HTTP
    * TCP

- Codec
    * JsonRPC V2
    * Hessian V2
AlexStocks's avatar
AlexStocks committed

fangyincheng's avatar
fangyincheng committed
- Protocol
    * Dubbo
    * Jsonrpc2.0
fangyincheng's avatar
fangyincheng committed
    * [gRPC](https://github.com/apache/dubbo-go/pull/311)
AlexStocks's avatar
AlexStocks committed

AlexStocks's avatar
AlexStocks committed
- Registry
    * ZooKeeper
    * [etcd v3](https://github.com/apache/dubbo-go/pull/148)
    * [nacos](https://github.com/apache/dubbo-go/pull/151)
    * [consul](https://github.com/apache/dubbo-go/pull/121)
AlexStocks's avatar
AlexStocks committed

AlexStocks's avatar
AlexStocks committed
- Dynamic Configure Center & Service Management Configurator
    * Zookeeper
    * [apollo](https://github.com/apache/dubbo-go/pull/250)

- Cluster Strategy
    * Failover
    * [Failfast](https://github.com/apache/dubbo-go/pull/140)
    * [Failsafe/Failback](https://github.com/apache/dubbo-go/pull/136)
    * [Available](https://github.com/apache/dubbo-go/pull/155)
    * [Broadcast](https://github.com/apache/dubbo-go/pull/158)
    * [Forking](https://github.com/apache/dubbo-go/pull/161)
AlexStocks's avatar
AlexStocks committed

AlexStocks's avatar
AlexStocks committed
- Load Balance
    * Random
    * [RoundRobin](https://github.com/apache/dubbo-go/pull/66)
    * [LeastActive](https://github.com/apache/dubbo-go/pull/65)
fangyincheng's avatar
fangyincheng committed
    * [ConsistentHash](https://github.com/apache/dubbo-go/pull/261)
AlexStocks's avatar
AlexStocks committed

AlexStocks's avatar
AlexStocks committed
- Filter
    * Echo Health Check
    * [Circuit break and service downgrade](https://github.com/apache/dubbo-go/pull/133)
    * [TokenFilter](https://github.com/apache/dubbo-go/pull/202)
    * [AccessLogFilter](https://github.com/apache/dubbo-go/pull/214)
    * [TpsLimitFilter](https://github.com/apache/dubbo-go/pull/237)
    * [ExecuteLimitFilter](https://github.com/apache/dubbo-go/pull/246)
    * [GenericServiceFilter](https://github.com/apache/dubbo-go/pull/291)
AlexStocks's avatar
AlexStocks committed

AlexStocks's avatar
AlexStocks committed
- Invoke
    * [generic invoke](https://github.com/apache/dubbo-go/pull/122)
AlexStocks's avatar
AlexStocks committed

AlexStocks's avatar
AlexStocks committed
- Others:
    * start check
    * connecting certain provider
    * multi-protocols
    * multi-registries
    * multi-versions
    * service group
vito.he's avatar
vito.he committed

yuyu's avatar
yuyu committed
Working List:
vito.he's avatar
vito.he committed

AlexStocks's avatar
AlexStocks committed
- Registry: k8s
vito.he's avatar
vito.he committed
- Metadata Center (dubbo v2.7.x)
AlexStocks's avatar
AlexStocks committed
- Metrics: Opentracing/Promethus(dubbo v2.7.x)
vito.he's avatar
vito.he committed

You can know more about dubbo-go by its [roadmap](https://github.com/apache/dubbo-go/wiki/Roadmap).
AlexStocks's avatar
AlexStocks committed

Isaac Zhang's avatar
Isaac Zhang committed
![feature](https://raw.githubusercontent.com/wiki/apache/dubbo-go/dubbo-go-arch.png)
vito.he's avatar
vito.he committed

fangyincheng's avatar
fangyincheng committed
## Document
fangyincheng's avatar
fangyincheng committed
https://dubbogo.github.io/dubbo-go-website (**Improving**)
vito.he's avatar
vito.he committed
## Quick Start
AlexStocks's avatar
AlexStocks committed

fangyincheng's avatar
fangyincheng committed
[dubbo-samples/golang](https://github.com/dubbogo/dubbo-samples) shows how to use dubbo-go. Please read the [dubbo-samples/golang/README.md](https://github.com/dubbogo/dubbo-samples/blob/master/golang/README.md) carefully to learn how to dispose the configuration and compile the program.
AlexStocks's avatar
AlexStocks committed

fangyincheng's avatar
fangyincheng committed
## Running unit tests

### Prepare

Mac/Linux
fangyincheng's avatar
fangyincheng committed
```bash
vito.he's avatar
vito.he committed
sh ./before_ut.sh
```

Windows
```bash
before_ut.bat
```

# Run
fangyincheng's avatar
fangyincheng committed
```bash
go test ./...

# coverage
go test ./... -coverprofile=coverage.txt -covermode=atomic
```

## Contributing

If you are willing to do some code contributions and document contributions to [Apache/dubbo-go](https://github.com/apache/dubbo-go), please visit [contribution intro](https://github.com/apache/dubbo-go/blob/master/contributing.md).
vito.he's avatar
vito.he committed
## Benchmark
AlexStocks's avatar
AlexStocks committed

AlexStocks's avatar
AlexStocks committed
Benchmark project [dubbo-go-benchmark](https://github.com/dubbogo/dubbo-go-benchmark).
AlexStocks's avatar
AlexStocks committed

AlexStocks's avatar
AlexStocks committed
About dubbo-go benchmarking report, please refer to [dubbo benchmarking report](https://github.com/apache/dubbo-go/wiki/pressure-test-report-for-dubbo) & [jsonrpc benchmarking report](https://github.com/apache/dubbo-go/wiki/pressure-test-report-for-jsonrpc).
AlexStocks's avatar
AlexStocks committed

## [User List](https://github.com/apache/dubbo-go/issues/2)
AlexStocks's avatar
AlexStocks committed

yuyu's avatar
yuyu committed
If you are using [apache/dubbo-go](github.com/apache/dubbo-go) and think that it helps you or want do some contributions to it, please add your company to to [the user list](https://github.com/apache/dubbo-go/issues/2) to let us know your needs.

fireman's avatar
fireman committed

fangyincheng's avatar
fangyincheng committed
![ctrip](https://pic.c-ctrip.com/common/c_logo2013.png)
![Excellent Health Technology Group](https://raw.githubusercontent.com/dajiiu/photo/static/mirror/haozhuo_logo.png)
![ctrip](https://raw.githubusercontent.com/pantianying/go-tool/master/picture/logo_2-removebg-preview.png)