目前我知道的只有 msgpack,据说 Protocol Buffer 这种需要申明格式的都比它略慢一筹。
那么还有没有别的呢?
1
paoqi2048 2021-02-23 22:53:50 +08:00 2
看看 CBOR
|
2
jaynos 2021-02-23 23:07:20 +08:00
咋一看有点像 redis 的序列化协议 redis.io/topics/protocol
|
3
DoctorCat 2021-02-23 23:10:36 +08:00
自己 diy 就行了,然后 snappy 算法压缩
|
4
abersheeran OP @paoqi2048 感谢,已经看了。加入 TODO 里了。https://github.com/abersheeran/rpc.py/issues/5
|
5
so1n 2021-02-24 00:47:46 +08:00
msgpack 就挺好的...我自己写的 rpc 用的就是 msgpack, 然后复用单链接 速度贼快....
|
6
tsui 2021-02-24 07:06:57 +08:00
https://github.com/FasterXML/jackson-dataformats-binary 支持的看了也就 CBOR 或者 ion
|
7
abersheeran OP @so1n 实际业务里单核每秒能有多少?我希望是能有四位数以上的速度。
|
8
abersheeran OP @abersheeran 因为我司确定要上微服务了……我是主力开发,我不想用 grpc,太蛋疼了。
|
9
Visionhope 2021-02-24 09:31:28 +08:00
@paoqi2048 网上搜了下, 看样子 CBOR 是 msgpack 的 fork, 有很多相似之处.
|
10
so1n 2021-02-24 10:21:13 +08:00 via Android
@abersheeran 本机的话 1000 并发 0.3 秒,线上的还没上去试。简单看一下你那个是依赖 http 一发一收的?这样速度好像不快。
速度这里需要序列化和传输层一起优化,链接复用后速度很快,不过还需要一些问题去解决,我还没弄好。 |
11
so1n 2021-02-24 10:52:26 +08:00 via Android
@abersheeran async 生态的话 grpc 真的不太好用😂
|
12
RobberPhex 2021-02-24 11:46:24 +08:00
虽然题主限定了“无需声明格式”,但是从回复来看,题主是要上微服务。
那么我觉得还是用 dubbo 或者 grpc 这种成熟的序列化、rpc 方案比较好。 选择一个技术其实是选择了它的生态,比如你在初期选择了 msgpack,那么后续的网关(比如网关的 session 粘滞)、mesh (解析协议内容),都需要选择支持 msgpack 的。初期的技术选型会极大地影响后续的选择。 另外,基于 msgpack 自己做 rpc 框架(或者采用现有的),后续很多已有的坑都需要自己踩一遍(加班 N 小时 /天 /月),比如如何实现流式调用,如何实现 rpc 连接池,如何做监控等。从这一方面来说,dubbo 成熟度比 grpc 要高,官方的模块中包含了很多生产中用到的特性,而且 dubbo3 也会支持 grpc,也能享受到 grpc 的生态优势。 总而言之,如果是自己研究,可以多看看一些序列化 /rpc 框架;如果是生产使用,还是看下业界的流行方案。 |
13
abersheeran OP @so1n HTTP 层我没有实现,这个可以用 Python 社区的一些解决方案上 2 甚至 3 来提速。grpc 不也是 HTTP2 的嘛。
@RobberPhex 这些我都思考过,选择 HTTP 而不是 TCP/UDP 自定义协议,就是因为你说的这些在 HTTP 上都有很成熟的解决方案,不需要我自己弄。我唯一需要自己处理的就是 HTTP body 的序列化罢了。 |
14
hj24 2021-02-24 12:31:16 +08:00 via iPhone
你们上微服务后有跨语言的需求吗
|
15
luozic 2021-02-24 13:49:40 +08:00
rsocket 上面可以传输 json grpc 也对于 graphql 还可以自己定义,https://github.com/rsocket/rsocket
|
16
abersheeran OP @luozic 抱歉,阿里的开源项目,我不会用的。
|
17
luozic 2021-02-24 16:38:42 +08:00 via iPhone
@abersheeran 奈飞捐赠给开源的,什么时候成阿里的了? graphql 也是 Facebook 的。
|
18
abersheeran OP @luozic 不好意思,下午看的比较急,看到最近一次 commit 是阿里的人就先入为主了。现在下班了,我再仔细看看。
|
19
lesismal 2021-02-24 21:25:37 +08:00
|
20
lesismal 2021-02-24 21:26:36 +08:00
msgpack 挺好的,数据量比 json 省一点,比 pb 多,但是方便,基本够用了
|
22
LeeReamond 2021-02-25 01:03:42 +08:00 via Android
说个题外话,lz 考虑过压缩 io 流吗,最近发现压缩可以有效缩减传输量
|
23
LeeReamond 2021-02-25 01:12:55 +08:00 via Android
另外 lz 测试过基于 http 相对 tcp 构建的效率吗。我之前测试本地回环,进程间 socket 通信一个来回大概在 100 微秒这个数量级,http2 之类的协议是不是能达到类似效果?
|