Aerospike - 开发UDF的正确方法

时间:2015-10-08 22:44:29

标签: aerospike

UDF开发背景
我使用的是Aerospike 3.5.12。最初,我远程编写了UDF,然后通过Java客户端的UDF注册方法将其注册到Aerospike。这种方法有点麻烦(需要为每次更改重新注册),但有效。

后来,我发现在Aerospike服务器上直接编辑文件比较方便,位于/aerospike_dir/usr/udf/lua/myUdf.lua。这很方便。所做的更改是永久性的,即使在群集重启时也是如此(如果我没记错的话)。

最近,我升级到3.6.1。我发现直接对/aerospike_dir/usr/udf/lua/myUdf.lua所做的更改会被Aerospike识别,直到群集重新启动。重新启动后,所有更改都将丢失,文件将恢复为原始版本。

问题
这是正常的行为吗?如何禁用此自动恢复功能?或者,如果我没有正确开发UDF,我应该如何处理它?<​​/ p>

1 个答案:

答案 0 :(得分:6)

您不应直接编辑“/ opt / aerospike / usr / udf / lua”维护的文件。您应该始终通过注册机制。它在初期开发过程中很麻烦。但是一旦开发稳定,你就不会经常对你的lua文件进行更改。不直接编辑文件有多种原因。

  1. 当您使用lua缓存(默认情况下处于启用状态)来提高udf的性能时,除非aerospike服务器决定引用其缓存,否则不会选择直接在文件中执行的更改。你无法预测何时会发生这种情况。你不应该依赖于此。注册将刷新缓存
  2. 在多节点群集场景中,如何维护lua文件的同步?您是否会更新所有节点上的文件以及添加新节点后的内容?这不是更麻烦吗?注册机制负责在集群的所有节点上分发lua文件。它还负责分发到稍后可能加入集群的新节点。