虽然Erlang有很长的历史,并且也被应用到很多领域中,在编程语言众多,新编程语言还在继续涌现的今天,Erlang却并不为普通大众所知,仅仅在一个小众圈子里面备受推崇。Erlang既是一个编程语言,更是一个操作系统加一整套工具集。对于服务器端的各种编程任务,Erlang使不可能做到的事情成为了可能,让可能做到的事情变得更简单。
首先举个生活中的例子吧,当我们打电话的时候当我们发短信的时候,我们很有可能正在使用基于Erlang构建的系统,但是我们却从来没有听说电信公司发布公告说系统要维护系统要更新,有一段时间不能使用,请用户耐心等待。其实电信公司一直在不断的修复软件bug,升级软件和硬件,和我们最常见过的的web 应用程序服务器或者游戏服务器的维护升级是没有区别的。我们能这么平滑和不间断的使用手机上的各种业务,很有可能里面就有Erlang的功劳。
接着我们来讲本来我们应该解决,但是目前我们却很少去解决的问题,可能这个问题第一目前还不突出还不明显,第二可能这个问题解决起来比较麻烦,事情一麻烦真心想去解决的积极性就低很多。
1.支持动态扩展系统能力,在web程序这类相对比较成熟的领域,我们用集群,负载均衡来解决了这类问题。但是对于面向连接的状态更复杂多变的游戏服务器,却很少是能够动态扩展的,于是简单而粗暴的解决方案就是分服务器。庆幸的是我们打电话的时候不需要先选择服务器,也不需要通信的对方必须在同一个服务器。有且只有一个世界,并且能够动态扩展处理能力和连接能力才是理论上完善的解决之道。Erlang的地址透明的消息传递机制,不再区分消息是发给本地的进程,还是远程的进程。加上本地和全局命名服务,和完善的组网基础设施,让这些变的非常简单。
2.热升级&