首页 > 解决方案 > NodeJS 在服务器上启用 grpc 压缩

问题描述

我已经根据https://github.com/grpc/grpc-node/blob/master/doc/compression.md配置了 grpc 客户端, 因此它们的配置如下所示:

"channelOptions": {
      "grpc.keepalive_time_ms": 1000,
      "grpc.keepalive_timeout_ms": 2000,
      "grpc.keepalive_permit_without_calls": 0,
      "grpc.http2.max_pings_without_data": 0,
      "grpc.http2.min_time_between_pings_ms": 5000,
      "grpc.http2.min_ping_interval_without_data_ms": 3000,
      "grpc.default_compression_algorithm": 2,
      "grpc.default_compression_level": 2
    }

然后我将以下配置添加到 grpc 服务器:

"serverOptions": {
      "grpc.max_concurrent_streams": 1000,
      "grpc.keepalive_time_ms": 1000,
      "grpc.keepalive_timeout_ms": 2000,
      "grpc.keepalive_permit_without_calls": 0,
      "grpc.http2.max_pings_without_data": 0,
      "grpc.http2.min_time_between_pings_ms": 5000,
      "grpc.http2.min_ping_interval_without_data_ms": 3000,
      "grpc.default_compression_algorithm": 2,
      "grpc.default_compression_level": 2
    }

但由于某种原因,我总是收到错误消息:“错误代码:内部,检查:不可用,未知,DEADLINE_EXCEEDED,DATA_LOSS”

似乎没有关于这个问题的明确文档,我已经尝试过不同的 default_compression_algorithm 和 default_compression_level 组合。

谁能解释一下这里发生了什么以及为什么服务器可能会忽略发送给他的消息(我已经记录了接收端,当我在客户端激活压缩时它是无声的)

编辑:库版本:

  1. 客户 -
├─┬ @grpc/grpc-js@1.2.0
├─┬ grpc@1.24.3
├─┬ grpc-tools@1.9.1
├─┬ grpc_tools_node_protoc_ts@2.5.11
  1. 服务器
├─┬ @grpc/grpc-js@1.2.12
├─┬ grpc@1.24.4
├─┬ grpc-tools@1.9.1
├─┬ grpc_tools_node_protoc_ts@2.5.11

标签: node.jsservercompressiongrpc

解决方案


推荐阅读