Erlang Mnesia 分发的工作原理
Posted
技术标签:
【中文标题】Erlang Mnesia 分发的工作原理【英文标题】:How Erlang Mnesia Distribution Works 【发布时间】:2018-01-21 03:47:28 【问题描述】:我正在浏览在线示例,并且已经可以使用 mnesia ram 副本并连接它们,但我对一些事情有点困惑。
1:起始节点(创建模式的那个)是否只有本地模式? (例如,在根文件夹中 = Mnesia.name@ip)
我问是因为在另一个节点上,我可以简单地启动mnesia,然后change_config(extra_db_nodes, [node]),并自动获取启动节点上的所有数据。
这对我来说似乎很奇怪,如果所有节点都出现故障会发生什么?这意味着需要先运行启动节点,然后才能执行任何操作。
2:似乎有很多不同的方式来连接节点和复制表......我能否获得一份不同方式的列表,以及它们的影响?
3:从第一个问题看,调用change_config后,你怎么知道它已经下载完所有数据才能开始使用呢?例如,如果有人连接到该节点,而您检查他们是否已经在线,则他们可能已连接到另一个节点,而您在检查期间没有获得该数据。
4:连接一个节点后,是否自动连接到所有节点?它是否会自动更新您的本地 ram 副本而不做任何事情?它如何确保读取和写入时的同步?我需要做一些特别的事情吗?
关于问题 1 ——难道你不能运行一个节点进程来保存本地模式,并使用这个节点将所有节点连接在一起吗?如果可能的话,您是否可以禁止 mnesia 将 ram 副本复制到此节点进程?
我知道这很多,所以谢谢你的时间。
【问题讨论】:
【参考方案1】:不是直接回答您的问题,但您可以查看Erlang Performance Lab,它可能通过可视化不同节点之间的消息来帮助您了解 Mnesia 中的某些操作是如何工作的。
【讨论】:
以上是关于Erlang Mnesia 分发的工作原理的主要内容,如果未能解决你的问题,请参考以下文章