我们正在对 kafka 与 jet 流进行 poc,我注意到 kafka 需要序列化器和反序列化器,但在 jet 流中没有看到它,所以只是想知道 jet 如何在集群之间和客户端之间发送数据。
另外,使用其中一种的优缺点是什么。
请注意,我们只比较流式处理部分,而不是 kafka 完全容错的部分,但 jet 并不像 jet 中的全部内存一样。
我们需要在流媒体部分找到更多的利弊。
我们正在对 kafka 与 jet 流进行 poc,我注意到 kafka 需要序列化器和反序列化器,但在 jet 流中没有看到它,所以只是想知道 jet 如何在集群之间和客户端之间发送数据。
另外,使用其中一种的优缺点是什么。
请注意,我们只比较流式处理部分,而不是 kafka 完全容错的部分,但 jet 并不像 jet 中的全部内存一样。
我们需要在流媒体部分找到更多的利弊。
Jet 本身支持默认的 Java 序列化,因此如果您不配置任何内容并且您的数据项是Serializable
,它将起作用。然而,Java 序列化有很大的开销,如果你的管道有很多流量,这很容易成为瓶颈。在这种情况下,您可以为您的对象实现 Hazelcast 序列化,如Jet 参考手册中所述,例如:
SerializerConfig serializerConfig = new SerializerConfig()
.setImplementation(new MyItemSerializer())
.setTypeClass(MyItem.class);
JetConfig config = new JetConfig();
config.getHazelcastConfig().getSerializationConfig()
.addSerializerConfig(serializerConfig);
JetInstance jet = Jet.newJetInstance(config);
Jet 相对于 Kafka Streams 的主要优势在于性能,因为它是在内存中的。
就像 Hazelcast IMDG 一样,Hazelcast Jet 可以容忍配置数量的集群成员的故障。它支持恰好一次和至少一次处理保证。Jet Enterprise Edition 支持将处理状态存储到持久存储中。