Skip to content
Snippets Groups Projects
README.md 8.82 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
[![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)
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 ##

邹毅贤's avatar
邹毅贤 committed
[v1.4.5 - Nov 18, 2020](https://github.com/apache/dubbo-go/releases/tag/v1.4.5)

[v1.5.4 - Nov 1, 2020](https://github.com/apache/dubbo-go/releases/tag/v1.5.4)

[v1.5.3 - Sep 23, 2020](https://github.com/apache/dubbo-go/releases/tag/v1.5.3)

[v1.5.2 - discard]()

Joe Zou's avatar
Joe Zou committed
[v1.5.1 - Aug 23, 2020](https://github.com/apache/dubbo-go/releases/tag/v1.5.1)

fangyincheng's avatar
fangyincheng committed
[v1.5.0 - July 24, 2020](https://github.com/apache/dubbo-go/releases/tag/v1.5.0)

[v1.4.0 - Mar 17, 2020](https://github.com/apache/dubbo-go/releases/tag/v1.4.0)
fangyincheng's avatar
fangyincheng committed

alexstocks's avatar
alexstocks committed
[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)
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)

alexstocks's avatar
alexstocks committed
[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

## 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

![dubbo go extend](./doc/pic/arch/dubbo-go-ext.png)
vito.he's avatar
vito.he committed

If you wanna know more about dubbo-go, please visit this reference [Project Architecture 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
fangyincheng's avatar
fangyincheng committed
    * [json for grpc](https://github.com/apache/dubbo-go/pull/582)
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)
flycash's avatar
flycash committed
    * [RESTful](https://github.com/apache/dubbo-go/pull/352)
flycash's avatar
flycash committed
- Router
flycash's avatar
flycash committed
    * [Condition router](https://github.com/apache/dubbo-go/pull/294)
    * [Health check router](https://github.com/apache/dubbo-go/pull/389)
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)
flycash's avatar
flycash committed
    * [k8s](https://github.com/apache/dubbo-go/pull/400)
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)
flycash's avatar
flycash committed
    * [nacos](https://github.com/apache/dubbo-go/pull/357)
AlexStocks's avatar
AlexStocks committed

- 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)
    * [Auth/Sign](https://github.com/apache/dubbo-go/pull/323)
    * [Metrics filter](https://github.com/apache/dubbo-go/pull/342)
    * [Tracing filter](https://github.com/apache/dubbo-go/pull/335)
AlexStocks's avatar
AlexStocks committed

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

- Tracing
    * [For jsonrpc](https://github.com/apache/dubbo-go/pull/335)
    * [For dubbo](https://github.com/apache/dubbo-go/pull/344)
    * [For grpc](https://github.com/apache/dubbo-go/pull/397)
fangyincheng's avatar
fangyincheng committed

- Metadata Center
    * [Nacos](https://github.com/apache/dubbo-go/pull/522)
    * [Zookeeper](https://github.com/apache/dubbo-go/pull/633)
    * [Etcd](https://github.com/apache/dubbo-go/blob/9a5990d9a9c3d5e6633c0d7d926c156416bcb931/metadata/report/etcd/report.go)
xg.gao's avatar
xg.gao committed
    * [Consul](https://github.com/apache/dubbo-go/pull/633)
fangyincheng's avatar
fangyincheng committed

- Service discovery
    * [Nacos](https://github.com/apache/dubbo-go/blob/9a5990d9a9c3d5e6633c0d7d926c156416bcb931/registry/nacos/service_discovery.go)
    * [Zookeeper](https://github.com/apache/dubbo-go/blob/9a5990d9a9c3d5e6633c0d7d926c156416bcb931/registry/zookeeper/service_discovery.go)
    * [Etcd](https://github.com/apache/dubbo-go/blob/9a5990d9a9c3d5e6633c0d7d926c156416bcb931/registry/etcdv3/service_discovery.go)
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

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

flycash's avatar
flycash committed
![feature](./doc/pic/arch/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

[dubbo-go-samples](https://github.com/apache/dubbo-go-samples) shows how to use dubbo-go. Please read the [dubbo-samples/golang/README.md](https://github.com/apache/dubbo-go-samples/blob/master/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

fangyincheng's avatar
fangyincheng committed
```bash
### Verify license

make license
### Run unit test
fangyincheng's avatar
fangyincheng committed

```bash
make test
fangyincheng's avatar
fangyincheng committed
```

fangyincheng's avatar
fangyincheng committed
## Build

Please move to [dubbo-samples/golang](https://github.com/dubbogo/dubbo-samples)

## 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

YuzeZhang's avatar
YuzeZhang committed
About dubbo-go benchmarking report, please refer to [dubbo benchmarking report](https://github.com/apache/dubbo-go/wiki/Benchmark-test-of-dubbo) & [jsonrpc benchmarking report](https://github.com/apache/dubbo-go/wiki/Benchmark-test-of-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.

Xargin's avatar
Xargin committed

<div>
<table>
  <tbody>
  <tr></tr>
    <tr>
      <td align="center"  valign="middle">
        <a href="" target="_blank">
          <img width="222px"  src="https://pic.c-ctrip.com/common/c_logo2013.png">
        </a>
      </td>
      <td align="center"  valign="middle">
        <a href="" target="_blank">
邹毅贤's avatar
邹毅贤 committed
          <img width="222px"  src="https://user-images.githubusercontent.com/52339367/84628582-80512200-af1b-11ea-945a-c6b4b9ad31f2.png">
Xargin's avatar
Xargin committed
        </a>
      </td>
      <td align="center"  valign="middle">
        <a href="" target="_blank">
          <img width="222px"  src="https://mosn.io/images/community/tuya.png">
        </a>
      </td>
      <td align="center"  valign="middle">
        <a href="https://github.com/mosn" target="_blank">
          <img width="222px"  src="https://raw.githubusercontent.com/mosn/community/master/icons/png/mosn-labeled-horizontal.png">
        </a>
      </td>
AlexStocks's avatar
AlexStocks committed
      <td align="center"  valign="middle">
        <a href="" target="_blank">
          <img width="222px"  src="https://festatic.estudy.cn/assets/xhx-web/layout/logo.png">
        </a>
      </td>
Xargin's avatar
Xargin committed
    </tr>
    <tr></tr>
    <tr>
      <td align="center"  valign="middle">
        <a href="http://www.j.cn" target="_blank">
          <img width="222px"  src="http://image.guang.j.cn/bbs/imgs/home/pc/icon_8500.png">
        </a>
      </td>
    </tr>
    <tr></tr>
Xargin's avatar
Xargin committed
  </tbody>
</table>
</div>