riak的用户库模块加载问题
基于riak core/pipe构建自己的应用时会遇到如何加载自己的应用模块的问题。在此收集一些常用方法备忘。
指定用户自定义模块的路径
编译好的erlang模块由[url=http://erlang.org/doc/man/code.html]Erlang code server[/url]负责加载到Erlang运行时。code server可以在启动时自动加载基本库模块,也可以在运行时动态加载模块。
当调用某个函数时,如果该函数所在模块没有装载,则code server会自动的装载该模块。
code server会维护一个代码搜索路径(code path),它会在这个路径中搜索erlang模块代码。
code:get_path()可以查看这个搜索路径。
这个路径可以通过code:add_path/1, code:add_patha/1, code:add_pathz/1, code:add_pathsa/1, code:add_pathsz/1等函数修改,(注意a是个字母,z是后一个字母,分别表示新路径添加在前头,新路径添加在后头)
[url=http://erlang.org/doc/man/code.html#add_path-1]code[/url]
1.
在riak操作手册《[url=http://littleriakbook.com]A little riak book[/url]》第3章Developers,第2节Buckets的[url=http://littleriakbook.com/#toc_12]Hooks小节[/url]提到了一种添加用户库路径的办法,修改app.config
{riak_kv,
...
{add_paths, ["../custom"]}
}
custom目录
在[url=http://docs.basho.com/riak/latest/ops/advanced/install-custom-code/]在线文档:安装用户定制代码[/url]中对此有更详细的介绍。
2.
一种是在crdt cookbook中提到一种手工添加应用库路径的办法:
https://github.com/basho/riak_crdt_cookbook/blob/master/counters/README.md#loading-our-module-into-riak
3。
在vm.args中添加启动参数-pa或者-pz, 指定用户加载erlang模块所在的路径。
4.
加载模块并向所有连接节点广播:c:nl(Module)
http://erlang.org/doc/man/c.html#nl-1
————————————————
版权声明:本文为CSDN博主「iteye_13453」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/iteye_13453/article/details/82523630
相关文章