Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

能否与原生的grpc服务通信 #86

Closed
yiippee opened this issue Mar 29, 2021 · 9 comments
Closed

能否与原生的grpc服务通信 #86

yiippee opened this issue Mar 29, 2021 · 9 comments

Comments

@yiippee
Copy link

yiippee commented Mar 29, 2021

舒大你好,感谢你的项目。
请教一个问题,我看这个项目的通信协议好像是基于grpc修改后的(符合micro的协议),那能否与原始的grpc 服务端和客户端通信呢?
貌似好像是不行的?那有其他的方式吗?谢谢。

@printfcoder
Copy link
Member

你好呀,只是用了protobuf的协议,通信层面默认没有使用grpc,而采用grpcTransport情况下是可以与原生grpc通信的,不过要预先声明调用的grpc服务地址。

参考:https://github.com/printfcoder/stack-rpc-tutorials/tree/master/examples/deprecated/grpc

该地址已经归档,但是使用方式基本相似,可酌情使用哈。

@yiippee
Copy link
Author

yiippee commented Mar 30, 2021

感谢你的回答。我试了下,是可以的。
反过来可以访问吗?micro风格的client去访问纯grpc server端,貌似好像是不行的,因为micro风格的客户端是需要服务发现的,好像不能指定服务地址。
或者有什么其他的方式吗?再次谢谢。

@printfcoder
Copy link
Member

@yiippee 可以的,定制selector就可以了,从你们的grpc server自己的注册表中读出来即可,参考:
https://github.com/printfcoder/stack-rpc-tutorials/tree/master/examples/deprecated/client/selector/filter/ip

@yiippee
Copy link
Author

yiippee commented Mar 30, 2021

@printfcoder 好像是不行的。我仿照你的做法,写了一个:
`
filter := func(services []*registry.Service) []*registry.Service {
var filtered []*registry.Service
var node []*registry.Node

	node = append(node, &registry.Node{
		Address: ":9090", // 写死grpc服务地址
	})

	filtered = append(filtered, &registry.Service{
		Name: "helloworld",
		Version: "0.01",
		Nodes: node,
	})

	return filtered
}`

出现这样的错误:err: {"id":"go.micro.client","code":500,"detail":"unknown service helloworld.Greeter","status":"Internal Server Error"}
2021-03-30 19:58:28 [email protected]/grpc.go:796 level=info Deregistering node: helloworld-cf7f508b-8d09-4658-af73-9498a6af3667

是我哪里写的不对吗?谢谢。

@printfcoder
Copy link
Member

可以调试一下。

@yiippee
Copy link
Author

yiippee commented Apr 2, 2021

可以调试一下。

感觉是不行的啊,micro风格的客户端请求的格式是 /service.Struct/Method,但纯grpc 是 /Struct/Method
而且我没找到可以修改这个格式的切入点啊。 所以,感觉是不行的。
或者你知道有其他的方式吗?谢谢。

@printfcoder
Copy link
Member

试试把router订制一下

@printfcoder
Copy link
Member

我有个疑问,为什么要互调,其实直接用原生grpc,或micro、stack就可以了。如果是有老的业务,使用网关解耦就好。

@yiippee
Copy link
Author

yiippee commented Apr 6, 2021

micro client如何订制router呢?好像没找到方式,有例子吗?谢谢。
是的,就是为了兼容老的业务,我现在主要想调研一下有什么比较好的解决方式。

@yiippee yiippee closed this as completed Apr 10, 2021
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants