| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
| Name | Name | Last commit date | ||
|---|---|---|---|---|
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
ย | ย | |||
Official site: http://rpcx.io
Notice: etcd
since rpcx 1.7.6, some plugins have been moved to the independent project:
Stable branch: v1.9.4
A tcpdump-like tool added: rpcxdumpใ You can use it to debug communications between rpcx services and clients.
you can use other programming languages besides Go to access rpcx services.
If you can write Go methods, you can also write rpc services. It is so easy to write rpc applications with rpcx.
install the basic features:
go get -v github.com/smallnest/rpcx/...
If you want to use quicใkcp registry, use those tags to go get ใ go build or go run. For example, if you want to use all features, you can:
go get -v -tags "quic kcp" github.com/smallnest/rpcx/...tags:
rpcx is a RPC framework like Alibaba Dubbo and Weibo Motan.
rpcx is created for targets:
It contains below features
rpcx uses a binary protocol and platform-independent, which means you can develop services in other languages such as Java, python, nodejs, and you can use other prorgramming languages to invoke services developed in Go.
There is a UI manager: rpcx-ui.
Test results show rpcx has better performance than other rpc framework except standard rpc lib.
The benchmark code is at rpcx-benchmark.
Listen to others, but test by yourself.
Test Environment
Use
Test Result
| Throughputs | Mean Latency | P99 Latency |
|---|---|---|
| Throughputs | Mean Latency | P99 Latency |
|---|---|---|
| Throughputs | Mean Latency | P99 Latency |
|---|---|---|
You can find all examples at rpcxio/rpcx-examples.
The below is a simple example.
Server
// define example.Arith
โฆโฆ
s := server.NewServer()
s.RegisterName("Arith", new(example.Arith), "")
s.Serve("tcp", addr)Register/RegisterName expose every suitable exported method of a struct as RPC. To expose only some of them, use RegisterWithMethods / RegisterNameWithMethods with a whitelist of method names:
// Arith has exported methods Mul, Add and Sub, but only Mul/Add
// should be callable remotely.
s := server.NewServer()
err := s.RegisterWithMethods(new(example.Arith), []string{"Mul", "Add"}, "")
// err := s.RegisterNameWithMethods("Arith", new(example.Arith), []string{"Mul", "Add"}, "")
s.Serve("tcp", addr)Rules of the whitelist:
Client
// prepare requests
โฆโฆ
d, err := client.NewPeer2PeerDiscovery("tcp@"+addr, "")
xclient := client.NewXClient("Arith", client.Failtry, client.RandomSelect, d, client.DefaultOption)
defer xclient.Close()
err = xclient.Call(context.Background(), "Mul", args, reply, nil)see contributors.
Welcome to contribute:
Apache License, Version 2.0
| Back | FazBrowse Home | New Git URL |