Git Product home page Git Product logo

gomicrorpc's Introduction

gomicrorpc

go micro example

go-micro 框架深度学习,持续更新中:-个人博客
go微服务框架go-micro深度学习-目录 https://www.cnblogs.com/li-peng/p/10522084.html

go微服务框架go-micro深度学习(一) 整体架构介绍 https://www.cnblogs.com/li-peng/p/9558421.html

go微服务框架go-micro深度学习(二) 入门例子 https://www.cnblogs.com/li-peng/p/9598879.html

go微服务框架go-micro深度学习(三) Registry服务的注册和发现 https://www.cnblogs.com/li-peng/p/9689786.html

go微服务框架go-micro深度学习(四) rpc方法调用过程详解 https://www.cnblogs.com/li-peng/p/10365251.html

go微服务框架go-micro深度学习(五) stream 调用过程详解 https://www.cnblogs.com/li-peng/p/10510198.html

注意,有些帖子是2018年写的,2019年go-micro的源码有很多变动,默认的注册方式从consul变成了mdns

gomicrorpc's People

Contributors

lpxxn avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

gomicrorpc's Issues

客户端和服务端的双向流问题

我用你的样例2的代码在本地跑了一下,客户端到服务端的单向Stream是可以正常运行的,但是双向Stream的例子一直失败,直观的表现就是客户端的代码被阻塞了(客户端主goroutine的Recv方法和另起的goroutine中的Send方法),没有任何输出产生,想请教下这个会是什么原因导致的,谢谢

example2 中执行到 stream报错

example2 中执行到 stream时总报错

`
msg:"hello world" values:"a" values:"b" header:<key:"name" value:<key:1 values:"abc" > > type:DESCEND
test stream get idx 1 data value:"bnMVrek" value:"OcIipke" value:"IpNrdsG" value:"iBKy" value:"TSYEER" value:"WFCACpnn" value:"olvoyIP"
test stream get idx 2 data value:"aEvAl" value:"ueX" value:"rSxvUDFpV" value:"fAPNnn" value:"GinQ" value:"jgbsrHuGi" value:"vJawJ"
test stream get idx 3 data value:"uLMdJjKi" value:"RAxzum" value:"JqcjnMfqTR" value:"NfQi" value:"XEninrPhHf" value:"ySxcfEPqV" value:"WKWFiLIk"
test stream get idx 4 data value:"vOcJMqbT" value:"Uoagti" value:"smMABH" value:"tQMldlv" value:"Cvilnk" value:"SmtoNK" value:"nMuQfzGAT"
test stream get idx 5 data value:"QST" value:"TIS" value:"tiHgwD" value:"Vftrsf" value:"etozgX" value:"hRDjtT" value:"kQYfHW"
test stream get idx 6 data value:"KiDxDP" value:"AqgzHiZM" value:"gysMeM" value:"qVFaPDw" value:"muZRRTVY" value:"Aod" value:"SeCwUePSzN"
test stream get idx 7 data value:"jPGaUA" value:"GNMXmbCyO" value:"THJxJygj" value:"nvXZIi" value:"ZhMNey" value:"FTeHxJTpps"
test stream get idx 8 data value:"QtoEIOsT" value:"Baczsc" value:"BIP" value:"anSdHzqSRZ" value:"rCXTRIYQJ" value:"uPGvF" value:"NKRvi"
test stream get idx 9 data value:"nzqBx" value:"EMBQcJYIXf" value:"tfx" value:"SVjB" value:"rxf" value:"WVyfV"
test stream get idx 10 data value:"KnTHJEpmgC" value:"UjYxTfvH" value:"DrGk" value:"tJgPbdYTY" value:"vXNJTtFTV" value:"sxiSDt" value:"TWKjIKO"
panic: {"id":"go.micro.client.transport","code":500,"detail":"unexpected EOF","status":"Internal Server Error"}

goroutine 1 [running]:
main.GetStreamValues(0xc6ac80, 0xc00000f300)
/data/code/gopath/src/github.com/lpxxn/gomicrorpc/example2/cli/main.go:63 +0x352
main.main()
/data/code/gopath/src/github.com/lpxxn/gomicrorpc/example2/cli/main.go:30 +0x1c1
exit status 2
`

你好,运行example2时,我手动替换了etcdv3为consul,客户端运行到单向stream测试是出现了问题,从表现上看是客户端只Recv()了一次,在第二次Recv()的时候阻塞了。

以下为控制台输出:
Cli:
msg:"hello world" values:"a" values:"b" header:<key:"name" value:<key:1 values:"abc" > > type:DESCEND
test stream get idx 1 data value:"TQir" value:"NfvXafmU" value:"OyMOF" value:"EloEcZEaO" value:"PfIzI" value:"DWbKk" value:"VfSXx"

Srv:
2019/08/28 17:04:02 Transport [http] Listening on [::]:54023
2019/08/28 17:04:02 Broker [http] Connected to [::]:54024
2019/08/28 17:04:02 Registry [consul] Registering node: lp.srv.exg2-87ee00e1-7e71-4c2a-a8cb-7c2fa914f2d0
2019/08/28 17:04:02 Subscribing lp.srv.exg2-87ee00e1-7e71-4c2a-a8cb-7c2fa914f2d0 to topic: lp.srv.eg2.topic1
received hello server
Received message: Ixe

调试后发现 srv 已经Send了所有消息,而cli一直阻塞在第二次Recv.

代码改动上仅替换了EtcdV3 为 Consul,因为我还没搭etcd

consul是可以正常运行的

SayHello()可以正常请求并返回

程序阻塞在了 GetStreamValues()

目前不知道哪里有问题,望解答。

遇到一个报错, 安装micro的时候报错,请问遇到过吗? 用的 go 1.11 mod

go get github.com/micro/micro
go: finding github.com/micro/go-micro/selector/cache latest
go: finding github.com/micro/go-api/resolver/micro latest
go: finding github.com/micro/go-micro/selector latest
go: finding github.com/micro/go-api/resolver latest
go: finding github.com/nlopes/slack v0.0.0-20190107041900-5911c620bb31
go build github.com/micro/go-api/resolver/micro: no Go files in
go build github.com/micro/go-micro/selector/cache: no Go files in

example1 例子运行报错

[root@saas example1]# go run ./srv/main.go
2019/05/26 12:17:14 Transport [http] Listening on [::]:15538
2019/05/26 12:17:14 Broker [http] Connected to [::]:26588
2019/05/26 12:17:14 Registry [etcdv3] Registering node: lp.srv.eg1-b061f606-6a18-4c51-b00d-3dcd329f8e94
2019/05/26 12:17:19 Server %s-%s register error: %slp.srv.eg1b061f606-6a18-4c51-b00d-3dcd329f8e94context deadline exceeded


// 我这里用的etcd 做为服务发现,如果使用consul可以去掉
reg := etcdv3.NewRegistry(func(op *registry.Options){
	op.Addrs = []string{
		"127.0.0.1:2379",
	}
})

请问该如何解决?

没毛病

for j := lib.Random(3, 5); j < 10; j++ {
rsp.Value = append(rsp.Value, lib.RandomStr(lib.Random(3, 10)))
}
在这里:

/*
模拟得到一些数据
*/
func (s *Say) Stream(ctx context.Context, req *model.SRequest, stream rpcapi.Say_StreamStream) error {

for i := 0; i < int(req.Count); i++ {
	rsp := &model.SResponse{}
	for j := lib.Random(3, 5); j < 10; j++ {
		rsp.Value = append(rsp.Value, lib.RandomStr(lib.Random(3, 10)))
	}
	if err := stream.Send(rsp); err != nil {
		return err
	}
	// 模拟处理过程
	time.Sleep(time.Microsecond * 50)
}
return nil

}

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.