关于erlang的-run 的启动参数
在github上,关于erlang的一致性hash,有erlang-ryng和 hash_ring .在这里先聊下erlang-ryng这个. 在erlang-ryng的启动方式上,github上提供了原始的启动方式,即直接在erlang shell下输入 erl -pa ebin -run ryng manual_start
$ erl -pa ebin -run ryng manual_start
Erlang R16B02 (erts-5.10.) [source] [-bit] [smp::] [async-threads:] [kernel-poll:false] [dtrace] Eshell V5.10.3 (abort with ^G)
> ryng:new_ring([{id, my_ring}]).
{ok,<0.47.>}
> ryng:add_node(my_ring, node0).
ok
> %% weight = : counts as when there's one other node of weight 0
> ryng:add_node(my_ring, node1, ).
ok
> %% weight = , priority = : will only be selected if priority is empty
> ryng:add_node(my_ring, node2, , ).
ok
> ryng:sync_ring(my_ring).
ok
> ryng:node_for(my_ring, erlang:now()).
{ok,node1}
> ryng:node_for(my_ring, erlang:make_ref()).
{ok,node1}
> ryng:node_for(my_ring, random:uniform()).
{ok,node1}
> ryng:list_rings().
{ok,[{ryng_ring_v1,my_ring,sha,,#Fun<ryng.2.107634887>,
,
[{,},
{,}],
[{,},{,}],
,,true,undefined}]}
> ryng:list_nodes(my_ring).
{ok,[{ryng_node_v1,node0,,},
{ryng_node_v1,node1,,},
{ryng_node_v1,node2,,}]}
> ryng:balance_summary(my_ring).
{ok,[{,node0,0.3333333333333333},
{,node1,0.6666666666666666},
{,node2,1.0}]}
> ryng:balance_check(my_ring, ).
{ok,{,,1.281043},
[{node0,,0.333425},{node1,,0.666575}]}
> ryng:del_node(my_ring, node1).
ok
> ryng:sync_ring(my_ring).
ok
> ryng:balance_summary(my_ring).
{ok,[{,node0,1.0},{,node2,1.0}]}
> ryng:balance_check(my_ring, ).
{ok,{,,1.15486},[{node0,,1.0}]}
> ryng:del_node(my_ring, node0).
ok
> ryng:sync_ring(my_ring).
ok
> ryng:balance_summary(my_ring).
{ok,[{,node2,1.0}]}
> ryng:balance_check(my_ring, ).
{ok,{,,1.157669},[{node2,,1.0}]}
> ryng:rm_ring(my_ring).
ok
> ryng:list_rings().
{ok,[]}
而-run ryng manual_start ,我们一般不这么用,而根据erlang shell的解释,-run Mod [Func [Arg1, Arg2, ...]](init flag) 解释为 Makes init call the specified function.
这样我们就明白了,使init调用这个指定函数. 而 这个ryng 模块的 manual_start 函数是干什么的呢?
进入代码看下:
%% @doc Manually start ryng and all dependencies.
-spec manual_start() -> ok.
manual_start() ->
require([crypto, ryng]).
而require/2 这个函数的作用是做什么的呢?
%% @doc Start the given applications if they were not already started.
%% @private
-spec require(list(module())) -> ok.
require([]) ->
ok;
require([App|Tail]) ->
case application:start(App) of
ok -> ok;
{error, {already_started, App}} -> ok
end,
require(Tail).
这样就依次启动了application,通过尾递归实现了。 这样的写法还是不错的,而我们在application启动的时候,一般都直接添加个application启动。
关于erlang的-run 的启动参数的更多相关文章
- erlang启动参数记录
不管在erlang的shell下还是脚本里,启动参数都是非常有用的,抽空儿整理下erlang的常用启动参数: +A size 异步线程池的线程数,范围为0~1024,默认为10 +P Number ...
- 如何查看docker run启动参数命令
通过runlike去查看一个容器的docker run启动参数 安装pip yum install -y python-pip 安装runlike pip install runlike 查看dock ...
- Eclipse启动参数
from 网络 eclipse 启动参数 -clean2013-- : eclipse 启动参数介绍(如添加插件时,如果不显示,则使用eclipse -clean启动) 其实,Eclipse是一个可以 ...
- php配置php-fpm启动参数及配置详解
约定几个目录 /usr/local/php/sbin/php-fpm/usr/local/php/etc/php-fpm.conf/usr/local/php/etc/php.ini一,php-fpm ...
- php-fpm 启动参数及重要配置详解
约定几个目录 /usr/local/php/sbin/php-fpm /usr/local/php/etc/php-fpm.conf /usr/local/php/etc/php.ini 一,php- ...
- linux下php-fpm 启动参数及重要配置
约定几个目录 /usr/local/php/sbin/php-fpm/usr/local/php/etc/php-fpm.conf/usr/local/php/etc/php.iniI. php-fp ...
- NetBeansRCP-添加/修改NetBeans的JVM启动参数
NetBeans运行的速度实在是不敢恭维.还好机器配置还可以,修改其JVM启动参数命令行,以期运行的更加顺畅. 那么如何修改NetBeans IDE的JVM参数呢? 1.到NetBeans IDE的安 ...
- JVM启动参数小结
一:JVM启动参数共分为三类: 其一是标准参数(-),所有的JVM实现都必须实现这些参数的功能,而且向后兼容: 其二是非标准参数(-X),指的是JVM底层的一些配置参数, ...
- [置顶] linux内核启动1-启动参数(启动参数的获取和处理,分析setup_arch)
最近公司要求调试一个内核,启动时有问题,所以就花了一点时间看看内核启动. 看的过程中总结了一点东西,希望可以帮助大家调试内核. 当我开始看的时候,第一件事是从网上搜集资料,不看不知道,一看吓一跳!牛人 ...
随机推荐
- 网络上面好用的webserice方法【公开】
原文发布时间为:2009-07-27 -- 来源于本人的百度文章 [由搬家工具导入] 本帖转自 http://www.webxml.com.cn/zh_cn/web_services.aspx?off ...
- linux下解压zip文件
linux下解压zip文件 linux自带的unzip命令可以解压windows下的zip格式的压缩文件. unzip命令 语法:unzip [选项] 压缩文件名.zip 各选项的含义分别为: -x ...
- hdu 1005(找循环节)
Number Sequence Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)T ...
- js遍历函数
function each(arr, callback, thisp) { if (arr.forEach) {arr.forEach(callback, thisp);} else { for (v ...
- 网站优化—MySQL优化
MySQL优化 简介 由于页面静态化技术可以实现对动态数据的缓存,但是有的时候还是需要去请求数据库.所以对数据库的优化也是不可缺少的. 优化思路 设计:存储引擎,字段,范式 自身:索引,自身的缓存 架 ...
- python在程序中通过Windows打开文件
import os os.startfile(r'D:\test_input.html')
- Java中获取当前时间并格式化
主要有两种方式,其中使用Date比较好控制,代码如下: //使用Calendar Calendar now = Calendar.getInstance(); System.out.println(& ...
- Protobuf C#
// ProtoBuf序列化 using(var file = System.IO.File.Create("Person.bin")) ...
- html使用示例
select标签 <select name="Area" id="Area" class="sel"> <option v ...
- linux使用tar命令打包压缩时排除某个文件夹或文件
今天在使用tar命令进行文件夹打包压缩的时候,需要打包压缩masalaPage目录,但是该目录中的2017,2016两个目录中的文件不进行打包压缩 所以通常使用的tar -zcvf masalaPag ...