在Apache Ignite中使用Externalizable

时间:2018-06-05 10:16:15

标签: apache java-ee ignite

我有4个疑惑,

  1. 我的模型类是可外部化的。仍然可以使用它们进行查询 服务器节点上的SQLFieldsQuery没有任何问题吗?

  2. 无法从远程客户端节点查询可外部化的项目, 对?有没有办法让它在客户端发生?

  3. 使用externalizable是否会以任何方式影响节点之间的聚类数据?

  4. 使用外部化或任何性能是否存在任何其他限制 关注?

1 个答案:

答案 0 :(得分:2)

  1. 是的,您仍然可以查询对象。
  2. 您可以从客户端和服务器查询。
  3. AffinityFunction使用密钥来计算哈希并获得适当的分区。因此,结果取决于writeExternal / readExternal实现,这意味着可以在分区之间更改密钥分发。
  4. 是的,使用Externalizable总是一个坏主意。
  5. 首先,Ignite将使用速度较慢的OptimizedMarshaller并生成比默认使用的BinaryMarshaller更大的对象。

    其次,SQLFieldsQuery上的Ignite只读取二进制对象表示中的特定字段。在Externalizable的情况下,它必须反序列化整个对象以读取它的字段。因此,这种选择会对性能产生负面影响。

    您可以另外使用Binarylizable界面。在这种情况下,将使用BinaryMarshaller