erlang/otp是分布式系统的一种解决方案,由erlang启动的节点组成集群,然后节点内部保持通讯确定节点的存活信息。在集群中,每个节点都跟其他所有节点保持通讯,在数量较小的时候,erlang网络通讯的流量还可以忍受;但节点数量级一爆增,这个内部网络通讯的流量就很是问题。
对于这个问题,erlang团队也提出了一些解决方案。例如隐藏节点,管理脚本一般都是使用这个特性;内部通讯的端口进行流量控制,riak_core里面就有使用到这个。但erlang的网络一旦是联通的,那就是整个集群都是可见的,这也带来了一些安全问题。例如不能使用root运行erlang程序,否则则会有被乱使用root权限的问题。
SD-erlang则带来了新的解决方案,它的思路就是,分布式系统不一定要全局联通,只要局部联通就可以了。项目得到了欧盟的支持,基于erlang 17.4得到了发展,但一直都没有合并到otp的主干上,而且一度停止开发,我还以为这个已经失去了活力。它的官网是:
http://www.release-project.eu/https://github.com/release-project/otp
但这几天,有人在erlang邮件里面问道这个项目是否继续开发:
http://erlang.org/pipermail/erlang-questions/2016-September/090065.html
得到回应,这个项目筹集到一些资金来继续开发,进行良好测试、分离已有的代码来整理代码,以适应工业的要求但不确定是否合并到otp的主干上。
另外一个好消息就是erlang社区开始讨论otp包中的软件是否有其他的优秀的替代品:
https://gist.github.com/tsloughter/4d18c474f009dd3a3eeb094f8933e90b
现在有好的提议有:
使用cowboy替换httpd集成gprocerlang默认的rpc不能很好规模扩展
大家可以去看看,这些对erlang开发都是很有帮助的。