Go rpcx试用

2020年4月25日 发表评论 阅读评论 712 次浏览

前段时间看了下分布式RPC框架brpc,这两天在找分布式服务框架,也就是除了RPC功能外,期望还能有服务发现和服务治理的功能,经典的开源框架有dubbo,之前据说这货在阿里的团队都解散了(15年),后来又据说开始维护了(17年底。具体见这里:https://www.zhihu.com/question/30884501,https://github.com/apache/dubbo),但我想找个Go语言的类似框架,Google了下,发现有个rpcx(还有些其他框架,比如go-micro等),看上去挺不错,而且是国人开发的,主要贡献者在微博工作(见参考)。

老套路,还是先试用下rpcx。

一,测试环境
$ cat /etc/issue
Ubuntu 18.04.3 LTS \n \l
$ uname -a
Linux lenky-virtual-machine 5.0.0-27-generic #28~18.04.1-Ubuntu SMP Thu Aug 22 03:00:32 UTC 2019 x86_64 x86_64 x86_64 GNU/Linux

二,安装Go环境
见这里:http://lenky.info/?p=2826

三,安装rpcx
1,先打开模块支持和开启中国代理(否则访问不了啊)。
$ export GO111MODULE=on
$ go env -w GOPROXY=https://goproxy.cn,direct
$ go env

2,执行如下命令进行安装(把该装的功能都给装上)
$ pwd
/home/lenky
$ go get -u -v -tags “reuseport quic kcp zookeeper etcd consul ping” github.com/smallnest/rpcx/…

3,安装完了之后,在$GOPATH目录下就可以查看到rpcx源码
$ cd $GOPATH
$ find . -name “rpcx*”
./pkg/mod/github.com/smallnest/rpcx@v0.0.0-20200417140512-b6a53e04af1d
./pkg/mod/github.com/smallnest/rpcx@v0.0.0-20200417140512-b6a53e04af1d/_documents/rpcx_dev_qq2.png

四,测试
1,直接安装测试工程
$ go get -u github.com/rpcx-ecosystem/rpcx-examples3/…

2,把要测试的代码拷贝到$GOPATH目录,比如我这里测试101basic,
$ cp -fr ~/gopath/pkg/mod/github.com/rpcx-ecosystem/rpcx-examples3@v0.0.0-20200423061325-9ca396e92ecd/101basic $GOPATH
$ cd $GOPATH
$ chmod 775 101basic/
$ cd 101basic

3,启动服务器
$ go mod init 101basic
$ go run server.go

4,启动客户端
另开一个终端,执行:
$ cd $GOPATH
$ cd 101basic/
$ cd client/
$ go run client.go
2020/04/25 21:03:50 10 * 20 = 200
2020/04/25 21:03:51 10 * 20 = 200

2020/04/25 21:04:09 10 * 20 = 200
2020/04/25 21:04:10 10 * 20 = 200
^Csignal: interrupt

5,回到服务器的终端,可以看到如下输出:
$ go run server.go
go: finding module for package github.com/smallnest/rpcx/server
go: finding module for package github.com/rpcx-ecosystem/rpcx-examples3
go: found github.com/rpcx-ecosystem/rpcx-examples3 in github.com/rpcx-ecosystem/rpcx-examples3 v0.0.0-20200423061325-9ca396e92ecd
go: found github.com/smallnest/rpcx/server in github.com/smallnest/rpcx v0.0.0-20200417140512-b6a53e04af1d
2020/04/25 20:54:15 server.go:172: INFO : server pid:6447
call: 10 * 20 = 200
call: 10 * 20 = 200
call: 10 * 20 = 200

call: 10 * 20 = 200
2020/04/25 20:55:37 server.go:355: INFO : client has closed this connection: 127.0.0.1:59004

Over~

20200520,信息更新:
1,冲上云原生,Dubbo发布Go版本:https://www.oschina.net/question/3820517_2306822
2,https://github.com/apache/dubbo-go/wiki/dubbo-go-V1.0-design
3,Golang在电商即时通讯服务建设中的实践:https://mp.weixin.qq.com/s/2n1peAsc-3DyO5EX-oOOPA

完全参考:
1,https://github.com/rpcx-ecosystem/rpcx-examples3
2,https://books.studygolang.com/go-rpc-programming-guide/part1/quickstart.html
3,https://github.com/smallnest/rpcx

参考:
1,https://rpcx.io/
2,https://colobu.com/about/
3,http://www.eit.name/blog/read.php?572
4,https://colobu.com/2016/09/05/benchmarks-of-popular-rpc-frameworks/
5,https://colobu.com/2016/05/26/RPCX-a-distributed-rpc-dubbo-like-framework-by-Go/
6,https://www.jianshu.com/p/25115939a38c
7,https://segmentfault.com/a/1190000017572032
8,https://github.com/micro/go-micro
9,https://books.studygolang.com/go-rpc-programming-guide/
10,https://studygolang.com/articles/14037
11,https://www.jianshu.com/p/1149d33c6bf0
12,https://www.jianshu.com/p/4be30c0716b4

转载请保留地址:http://www.lenky.info/archives/2020/04/2840http://lenky.info/?p=2840


备注:如无特殊说明,文章内容均出自Lenky个人的真实理解而并非存心妄自揣测来故意愚人耳目。由于个人水平有限,虽力求内容正确无误,但仍然难免出错,请勿见怪,如果可以则请留言告之,并欢迎来讨论。另外值得说明的是,Lenky的部分文章以及部分内容参考借鉴了网络上各位网友的热心分享,特别是一些带有完全参考的文章,其后附带的链接内容也许更直接、更丰富,而我只是做了一下归纳&转述,在此也一并表示感谢。关于本站的所有技术文章,欢迎转载,但请遵从CC创作共享协议,而一些私人性质较强的心情随笔,建议不要转载。

法律:根据最新颁布的《信息网络传播权保护条例》,如果您认为本文章的任何内容侵犯了您的权利,请以Email或书面等方式告知,本站将及时删除相关内容或链接。

  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.