Skip to content

Commit cf1e35b

Browse files
authored
add compression to grpc server (#15939) (#16688)
1 parent 184790e commit cf1e35b

File tree

3 files changed

+53
-0
lines changed

3 files changed

+53
-0
lines changed

ydb/core/driver_lib/run/run.cpp

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -946,6 +946,40 @@ void TKikimrRunner::InitializeGRpc(const TKikimrRunConfig& runConfig) {
946946
opts.SetMaxMessageSize(grpcConfig.HasMaxMessageSize() ? grpcConfig.GetMaxMessageSize() : NYdbGrpc::DEFAULT_GRPC_MESSAGE_SIZE_LIMIT);
947947
opts.SetMaxGlobalRequestInFlight(grpcConfig.GetMaxInFlight());
948948
opts.SetLogger(NYdbGrpc::CreateActorSystemLogger(*ActorSystem.Get(), NKikimrServices::GRPC_SERVER));
949+
switch(grpcConfig.GetDefaultCompressionAlgorithm()) {
950+
case NKikimrConfig::TGRpcConfig::YDB_GRPC_COMPRESS_NONE: {
951+
opts.SetDefaultCompressionAlgorithm(GRPC_COMPRESS_NONE);
952+
break;
953+
}
954+
case NKikimrConfig::TGRpcConfig::YDB_GRPC_COMPRESS_DEFLATE: {
955+
opts.SetDefaultCompressionAlgorithm(GRPC_COMPRESS_DEFLATE);
956+
break;
957+
}
958+
case NKikimrConfig::TGRpcConfig::YDB_GRPC_COMPRESS_GZIP: {
959+
opts.SetDefaultCompressionAlgorithm(GRPC_COMPRESS_GZIP);
960+
break;
961+
}
962+
}
963+
964+
switch(grpcConfig.GetDefaultCompressionLevel()) {
965+
case NKikimrConfig::TGRpcConfig::YDB_GRPC_COMPRESS_LEVEL_NONE: {
966+
opts.SetDefaultCompressionLevel(GRPC_COMPRESS_LEVEL_NONE);
967+
break;
968+
}
969+
970+
case NKikimrConfig::TGRpcConfig::YDB_GRPC_COMPRESS_LEVEL_LOW: {
971+
opts.SetDefaultCompressionLevel(GRPC_COMPRESS_LEVEL_LOW);
972+
break;
973+
}
974+
case NKikimrConfig::TGRpcConfig::YDB_GRPC_COMPRESS_LEVEL_MED: {
975+
opts.SetDefaultCompressionLevel(GRPC_COMPRESS_LEVEL_MED);
976+
break;
977+
}
978+
case NKikimrConfig::TGRpcConfig::YDB_GRPC_COMPRESS_LEVEL_HIGH: {
979+
opts.SetDefaultCompressionLevel(GRPC_COMPRESS_LEVEL_HIGH);
980+
break;
981+
}
982+
}
949983

950984
if (appConfig.HasDomainsConfig() &&
951985
appConfig.GetDomainsConfig().HasSecurityConfig() &&

ydb/core/protos/config.proto

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -717,6 +717,23 @@ message TGRpcConfig {
717717
repeated string RatelimiterServicesEnabled = 25;
718718
repeated string RatelimiterServicesDisabled = 26;
719719

720+
enum YdbGrpcCompressionAlgorithm {
721+
YDB_GRPC_COMPRESS_NONE = 0;
722+
YDB_GRPC_COMPRESS_DEFLATE = 1;
723+
YDB_GRPC_COMPRESS_GZIP = 2;
724+
};
725+
726+
optional YdbGrpcCompressionAlgorithm DefaultCompressionAlgorithm = 30 [default = YDB_GRPC_COMPRESS_NONE];
727+
728+
enum YdbGrpcCompressionLevel {
729+
YDB_GRPC_COMPRESS_LEVEL_NONE = 0;
730+
YDB_GRPC_COMPRESS_LEVEL_LOW = 1;
731+
YDB_GRPC_COMPRESS_LEVEL_MED = 2;
732+
YDB_GRPC_COMPRESS_LEVEL_HIGH = 3;
733+
}
734+
735+
optional YdbGrpcCompressionLevel DefaultCompressionLevel = 31 [default = YDB_GRPC_COMPRESS_LEVEL_NONE];
736+
720737
// server socket options
721738
optional bool KeepAliveEnable = 100 [default = true]; // SO_KEEPALIVE
722739
optional uint32 KeepAliveIdleTimeoutTriggerSec = 101 [default = 90]; // TCP_KEEPIDLE

ydb/library/grpc/server/grpc_server.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -104,6 +104,8 @@ struct TServerOptions {
104104
// Mapping to particular compression algorithm depends on client.
105105
DECLARE_FIELD(DefaultCompressionLevel, grpc_compression_level, GRPC_COMPRESS_LEVEL_NONE);
106106

107+
DECLARE_FIELD(DefaultCompressionAlgorithm, grpc_compression_algorithm, GRPC_COMPRESS_NONE);
108+
107109
//! Custom configurator for ServerBuilder.
108110
DECLARE_FIELD(ServerBuilderMutator, std::function<void(grpc::ServerBuilder&)>, [](grpc::ServerBuilder&){});
109111

0 commit comments

Comments
 (0)