我只在学习期间开发了Erlang应用程序,但通常我们有许多小进程只做一件事,并将消息发送到其他进程。 Erlang的优点在于,如果您在同一台Erlang虚拟机或者同一台计算机,同一个局域网或互联网上发送消息,则无关紧要,调用和指向其他进程的指针总是相同开发商。
所以你真的想为系统的每个小部分都有一个应用程序。
这就是说,它并没有使构建可扩展的应用程序变得更简单。根据经验法则,如果您希望应用程序工作的节点数量是10倍以上,则需要重写,否则消息传递开销将会过大。显然,当你从1开始到2时,你也需要考虑它。
所以如果你发现了一个瓶颈,当处理太多的客户端时,这个应用程序特别慢,你希望第二次运行它,而且你需要实现一些额外的负载平衡,在你开始第二个应用。
让我们假设主管检查消息内容是否有不适当的内容,因此速度很慢。在这种情况下,每个人都在谈论的节点将是简单的路由器应用程序,它将以循环方式将消息转发到管理程序应用程序的不同实例。如果这些1或2个实例不够用,可以用某种方式写路由器,以便通过发送控制消息来操纵实例的数量。
但是,为了自动工作,您需要有另一个进程监视服务器,并发现它们过载或未充分利用。
我知道,动态添加和始终删除资源,当你听到它的声音很大,但你可以看到它是一个大量的工作,你需要有建立了一些消息系统,该系统允许的话,还有一个监控系统可以监控需求。
希望这会给你一些关于如何完成的想法,不幸的是,自从我写了我最后的Erlang应用程序已经过了一年多了,我不想提供可能会出错的代码。
你用什么工具绘制顶部图表? –
我没有画出它,它是截屏的截图。但它来自OmniGaffle。 –
好的,谢谢。 –