apache/dubbo-go
Fork: 931 Star: 4741 (更新于 2024-12-06 08:35:15)
license: Apache-2.0
Language: Go .
Go Implementation For Apache Dubbo .
最后发布版本: v3.2.0-rc1 ( 2024-03-10 23:26:55)
Apache Dubbo for Golang
Apache Dubbo is an easy-to-use Web and RPC framework that provides multiple language implementations(Go, Java, Rust, Node.js, Web) for communication, service discovery, traffic management, observability, security, tools, and best practices for building enterprise-ready microservices.
Dubbo-go is the Go implementation of triple protocol(a fully gRPC compatible and HTTP-friendly protocol) and the various features for building microservice architecture designed by Dubbo.
Visit the official website for more information.
Getting started
You can learn how to develop a dubbo-go RPC application step by step in 5 minutes by following our Quick Start demo.
It's as simple as the code shown below, you define a service with Protobuf, provide your own service implementation, register it to a server, and start the server.
func (srv *GreetTripleServer) Greet(ctx context.Context, req *greet.GreetRequest) (*greet.GreetResponse, error) {
resp := &greet.GreetResponse{Greeting: req.Name}
return resp, nil
}
func main() {
srv, _ := server.NewServer(
server.WithServerProtocol(
protocol.WithPort(20000),
protocol.WithTriple(),
),
)
_ := greet.RegisterGreetServiceHandler(srv, &GreetTripleServer{})
if err := srv.Serve(); err != nil {
logger.Error(err)
}
}
After the server is up and running, call your service via cURL:
curl \
--header "Content-Type: application/json" \
--data '{"name": "Dubbo"}' \
http://localhost:20000/greet.GreetService/Greet
Or, you can start a standard dubbo-go client to call the service:
func main() {
cli, _ := client.NewClient(
client.WithClientURL("127.0.0.1:20000"),
)
svc, _ := greet.NewGreetService(cli)
resp, _ := svc.Greet(context.Background(), &greet.GreetRequest{Name: "hello world"})
logger.Infof("Greet response: %s", resp.Greeting)
}
See the samples for detailed information on usage. Next, learn how to deploy, monitor and manage the traffic of your dubbo-go application by visiting the official website.
Features
- RPC Protocols: Triple, gRPC compatible and HTTP-friendly
- Service Discovery: Nacos, Zookeeper, Etcd, Polaris-mesh, Consul.
- Load Balance: Adaptive, Random, RoundRobin, LeastActive, ConsistentHash
- Traffic Management: traffic split, timeout, rate limiting, canary release
- Configuration: yaml file, dynamic configuration(Nacos, Zookeeper, etc.).
- Observability: metrics(Prometheus, Grafana) and tracing(Jaeger, Zipkin).
- HA Strategy: Failover, Failfast, Failsafe/Failback, Available, Broadcast, Forking
Ecosystem
- Console, under development
- Samples
- Interoperability with Dubbo Java
- Protoc-gen-go-triple
Contributing
Please visit CONTRIBUTING for details on submitting patches and the contribution workflow.
Contact
- DingTalk Group: 23331795
User List
If you are using apache/dubbo-go and think that it helps you or want to contribute code for Dubbo-go, please add your company to the user list to let us know your needs.
License
Apache Dubbo-go software is licensed under the Apache License Version 2.0. See the LICENSE file for details.
最近版本更新:(数据更新于 2024-12-22 10:21:04)
2024-03-10 23:26:55 v3.2.0-rc1
2024-03-05 16:28:10 v3.1.1
2023-12-12 11:14:45 v3.1.1-rc1
2023-07-27 20:32:24 v3.1.0
2023-07-18 09:49:51 v3.1.0-rc1
2023-02-14 16:05:24 v3.0.5
2023-02-02 20:49:07 v3.0.5-rc1
2023-02-02 20:47:46 v3.0.4
2022-12-02 22:37:05 v3.0.4-rc1
2022-11-29 20:20:58 v1.5.9
主题(topics):
go, http2, microservices, rpc, service-mesh
apache/dubbo-go同语言 Go最近更新仓库
2024-12-22 07:52:58 navidrome/navidrome
2024-12-21 20:15:12 SagerNet/sing-box
2024-12-21 03:25:54 SpecterOps/BloodHound
2024-12-19 23:11:24 shadow1ng/fscan
2024-12-19 21:50:56 minio/minio
2024-12-19 10:04:39 istio/istio