1
jetyang 2018-09-06 09:29:32 +08:00
不是大牛,刚好当前项目用到 gRPC。你用什么语言? gRPC Java 是在 Netty 上封装的,不需要写原生的 socket ; C/C++语言是原生的,Python、Ruby、PHP 都是在 C 语言版本上包了一层壳
|
2
koolob 2018-09-06 09:39:36 +08:00
grpc 用的是 http2。
|
3
Kellerman OP @jetyang 哇,快哭了,终于有人可以讨论这个问题了,目前组里就我一个人研究这个,都没有人能讨论,我用的是 C++,主要是源代码看我的晕乎,而且没有文档可以参考,我不知道它具体的 socket 建立过程,大哥能不能详细讨论一下?
|
5
coderscala 2018-09-06 09:53:47 +08:00
为什么要修改? 你是打算修改协议还是打算在会话层做优化呢?在没有完全理解的情况下贸然修改这样合适吗? gRPC 只是一种长链接 RPC 协议封装,与其对一个不了解的项目进行修改,还不如自己动手写一套 RPC 协议(如果是个人的话,当然不建议)
|
6
Kellerman OP @coderscala 没有,我只是想修改一下他的 socket 类型然后看看性能,的确没有完全理解,但是单修改这一部分应该问题不大吧。
|
7
coderscala 2018-09-06 10:12:44 +08:00
你是说要把 tcp 换成 udp?这样做显然不合适,你改了 server,client 也得改,对应的工具链也得改。如果单纯的只是性能测试,你不应该尝试去 hack,这种做法会破坏一个完善的体系,你们的维护成本也会变得异常的高,商业公司肯定不会这么做。
|
8
rockyou12 2018-09-06 10:12:44 +08:00
@Kellerman 说实话你连 http2 协议都没搞懂就想在 4 层上做优化实在是不自量力……建议先学下 http2 协议
|
9
coderscala 2018-09-06 10:17:58 +08:00
贸然的去改 4 层或者 5 层肯定是不合适的
|
10
Kellerman OP @rockyou12 是的我没研究过 http2,也谢谢你的建议,不过我没明白四层上做的改变跟上层使用的协议有什么关系,如果是使用 tcp 的 socket 建立好了,对上层来说有什么区别?其实我也不是做优化,我只是想看一下 grpc 本身在不同 socket 下的性能。谢谢。
|
11
Kellerman OP @coderscala 不是 tcp 换成 udp,是把 family 类型改一下,我们是研究型部门,不是做成熟应用的,只是想看一下不同 family 类型的 grpc 性能。
|
12
Hellert 2018-09-06 10:52:09 +08:00
grpc transports: https://grpc.io/grpc/core/md_doc_core_transport_explainer.html
|