From 768886d0f3958fe31611b9e508322402ff23f374 Mon Sep 17 00:00:00 2001 From: Jan Bols Date: Mon, 14 Jan 2019 14:52:35 +0100 Subject: [PATCH 1/2] Use a fast serialization library like FST for serialization of TbActorMsg instead of the default java serialization because java serialization is notoriously slow. This should improve throughput when serialization/deserialization is the bottleneck. --- application/pom.xml | 18 ++++++++++++++++++ ...ngService.java => ProtoWithFSTService.java} | 9 +++++---- pom.xml | 6 ++++++ 3 files changed, 29 insertions(+), 4 deletions(-) rename application/src/main/java/org/thingsboard/server/service/encoding/{ProtoWithJavaSerializationDecodingEncodingService.java => ProtoWithFSTService.java} (86%) diff --git a/application/pom.xml b/application/pom.xml index d7b560189e..929b55689d 100644 --- a/application/pom.xml +++ b/application/pom.xml @@ -41,6 +41,10 @@ + + de.ruedigermoeller + fst + io.netty netty-transport-native-epoll @@ -180,6 +184,10 @@ org.apache.curator curator-recipes + + org.apache.zookeeper + zookeeper + com.google.protobuf protobuf-java @@ -528,6 +536,16 @@ + boot + + repackage + + + + + + + custom repackage diff --git a/application/src/main/java/org/thingsboard/server/service/encoding/ProtoWithJavaSerializationDecodingEncodingService.java b/application/src/main/java/org/thingsboard/server/service/encoding/ProtoWithFSTService.java similarity index 86% rename from application/src/main/java/org/thingsboard/server/service/encoding/ProtoWithJavaSerializationDecodingEncodingService.java rename to application/src/main/java/org/thingsboard/server/service/encoding/ProtoWithFSTService.java index 2cf9299743..92235cb7cd 100644 --- a/application/src/main/java/org/thingsboard/server/service/encoding/ProtoWithJavaSerializationDecodingEncodingService.java +++ b/application/src/main/java/org/thingsboard/server/service/encoding/ProtoWithFSTService.java @@ -17,8 +17,8 @@ package org.thingsboard.server.service.encoding; import com.google.protobuf.ByteString; import lombok.extern.slf4j.Slf4j; +import org.nustaq.serialization.FSTConfiguration; import org.springframework.stereotype.Service; -import org.springframework.util.SerializationUtils; import org.thingsboard.server.common.msg.TbActorMsg; import org.thingsboard.server.common.msg.cluster.ServerAddress; import org.thingsboard.server.gen.cluster.ClusterAPIProtos; @@ -30,13 +30,14 @@ import static org.thingsboard.server.gen.cluster.ClusterAPIProtos.MessageType.CL @Slf4j @Service -public class ProtoWithJavaSerializationDecodingEncodingService implements DataDecodingEncodingService { +public class ProtoWithFSTService implements DataDecodingEncodingService { + private final FSTConfiguration config = FSTConfiguration.createDefaultConfiguration(); @Override public Optional decode(byte[] byteArray) { try { - TbActorMsg msg = (TbActorMsg) SerializationUtils.deserialize(byteArray); + TbActorMsg msg = (TbActorMsg) config.asObject(byteArray); return Optional.of(msg); } catch (IllegalArgumentException e) { @@ -47,7 +48,7 @@ public class ProtoWithJavaSerializationDecodingEncodingService implements DataDe @Override public byte[] encode(TbActorMsg msq) { - return SerializationUtils.serialize(msq); + return config.asByteArray(msq); } @Override diff --git a/pom.xml b/pom.xml index bfb5caa1ce..173912a222 100755 --- a/pom.xml +++ b/pom.xml @@ -84,6 +84,7 @@ 0.1.14 2.0.0 4.1.1 + 2.57 @@ -795,6 +796,11 @@ bucket4j-core ${bucket4j.version} + + de.ruedigermoeller + fst + ${fst.version} + io.springfox.ui springfox-swagger-ui-rfc6570 From 44c79597f2d37f6c685db71aa23a557fbede49bc Mon Sep 17 00:00:00 2001 From: janbols Date: Mon, 14 Jan 2019 15:50:52 +0100 Subject: [PATCH 2/2] fix missing dependency --- application/pom.xml | 14 -------------- 1 file changed, 14 deletions(-) diff --git a/application/pom.xml b/application/pom.xml index 929b55689d..bc0856beb1 100644 --- a/application/pom.xml +++ b/application/pom.xml @@ -184,10 +184,6 @@ org.apache.curator curator-recipes - - org.apache.zookeeper - zookeeper - com.google.protobuf protobuf-java @@ -536,16 +532,6 @@ - boot - - repackage - - - - - - - custom repackage