学习使用erlang已经有一段时间了,期间开发了一些文件传输服务和游戏服务,效果还不错,托erlang的福,程序至今未出过bug,稳定性那是刚刚的。
最近在实际工作过程中发现传统的基于openfire开发的服务,并发性能不是很理想。其实openfire本身还是非常不错的,那些插件和外部组件是同事写的,可能是设计得不够合理,受到了这些东东的拖累吧,加上我们的业务处理涉及的数据量比较大一些,用户量也比较庞大,虽然openfire使用的mina框架本身可以提供不错的性能,但是扩展起来比较麻烦,集群以及更新都不是很方便(可能是我不太熟练吧,嘿嘿)。比较而言,基于erlang开发的ejabberd服务器在高并发响应、稳定性、扩展性和热插拔方面还是有点优势的。openfire我不是很熟,不知道他能否实现不停机更新,有说得不对的地方,还望大家批评指正。
首先,找了一台机子,重新做了个ubuntu系统,用的是ubuntu14桌面版。
先安装了erlangotp17.4,已经装过很多次,按照文档去编译安装,基本不会出问题,编译erlang的时候我先编译安装了openssl1.0.1g以便支持erlang的crypto模块,此项工作顺利完成。
打开ejabberd的主页,把最新的ejabberd14.07下下来,因为后面想自己定制,所以果断是源码编译啊。看官网上说在*nix下编译ejabberd十分方便,只要安装好ibexpat,libyaml, openssl这几个必须的库,然后./configure ,make,makeinstall就可以了。我很听话,就照做了,configure的时候没有任何问题,进入make后确出了问题,总是提示找不多ssl库和相关的头文件。这就怪了,我明明安装了openssl了,提示缺少的头文件也都是有的,可就是提示找不到。被这个问题纠结了很长一段时间,看网上有些朋友在windws上编译的时候需要设置相关依赖库的路径,而linux不存在这个问题,所有路径基本都是默认的,无语,有知道的同学可以告诉我,本人不胜感激。
后来得到提示,使用apt-getinstall安装build-essensial,libssl等,我试着弄了一下,问题解决,在编译通过的那一瞬间,我惊呆了,怎么会这样呢,难道两者有什么区别吗?有时间一定细细研究下,还是抓紧时间研究erjabberd要紧啊。