Elixir集群101

Elixir(以及其他BEAM语言)的主要优势之一是内置的节点聚类功能, 并实现集群间透明通信。任何分布式系统通常都会附带严肃的免责声明。 要在集群中正确同步状态非常困难,避免网络分裂时的状态损坏或网络不稳定,有效应对滚动部署和代码版本不匹配。

但这不应该让我们气馁。分布式Elixir(也称为disterl)有广泛的应用场景(以及其他很多东西, 我们真的需要一个统一的名称)。你只需要符合几个基本条件的设备:

如果有些数据丢失也没关系

如果有些数据有误也没关系

只要这些条件符合,分布式灵药和分布式系统其实并不那么可怕。因为它大多数时候都能成功,对于符合这些条件的用例来说,它通常是一个非常好、低成本且性能优良的选择。

从哪里开始

首先,你需要确保你的节点是用集群支持的配置启动的。如果你用的是Phoenix和Releases,这可能只是编辑问题env.sh.eex 以添加类似的内容

导出 RELEASE_DISTRIBUTION = 名称

export RELEASE_NODE = app @$ ( hostname - i | awk '{print $1}' )

并确保DNSCluster已配置。

或者如果你在本地尝试,可以先开几个节点

第一个终端标签

国际经济学——先说名字 @ 127.0。0.1

第二个终端标签页

IEX —— Name Second @ 127.0。0.1

它们以分布式模式启动,但仍然没有连接。我们接下来就这么做。先进入某个节点的标签页。

iex (first @ 127.0. 0.1) 1 >节点。列表

[ ]

iex (first @ 127.0. 0.1) 2 节点>。ping (:“second@127.0.0.1” )

:p ong

iex (first @ 127.0. 0.1) 3 >节点。列表

[:“second@127.0.0.1” ]

iex (first @ 127.0. 0.1) 4 >节点。自我

:“first@127.0.0.1”

我们是康奈......

添加评论
点赞收藏
点踩分享查看原文
评论
?
参与讨论