centos-install-erlang
2015-03-26Erlang是一种通用的面向并发的编程语言,它由瑞典电信设备制造商爱立信所辖的CS-Lab开发,目的是创造一种可以应对大规模并发活动的编程语言和运行环境。Erlang问世于1987年,经过十年的发展,于1998年发布开源版本。Erlang支持超大量级的并发进程,并且不需要操作系统具有并发机制。
1、首先要先安装GCC GCC-C++ Openssl,ncurses模块,否则在安装中间会出现一些由于没有其依赖的软件模块而失败。:
yum -y install make gcc gcc-c++ kernel-devel m4 ncurses-devel openssl-devel unixODBC unixODBC-devel
libxslt fop *openjdk-devel
2、下载Erang源代码:(217.23)
wget http://www.erlang.org/download/otp_src_R15B03-1.tar.gz
wget http://distfiles.macports.org/erlang/
4、解压安装erlang:
tar -xzvf otp_src_R15B03-1.tar.gz
cd erlang_R15B/
./configure --prefix=/usr/local/erlang \
--with-ssl \
--enable-threads \
--enable-smp-support \
--enable-kernel-poll \
--enable-hipe \
--without-javac
wxWidgets not found, wx will NOT be usable
checking for prebuilt tcl/tk in tcl/binaries/x86_64_linux-gnu.tar.gz... not found
make && make install
//不用java编译,故去掉java避免错误
5、配置erlang环境:
vi /etc/profile
export PATH=$PATH:/usr/local/erlang/bin
6、测试erlang
# whereis erlang
erlang: /usr/local/erlang
#
7、Erlang特性:
● 并发性 - Erlang支持超大量级的并发进程,并且不需要操作系统具有并发机制。
● 分布式 - 一个分布式Erlang系统是多个Erlang节点组成的网络(通常每个处理器被作为一个节点)
● 健壮性 - Erlang具有多种基本的错误检测能力,它们能够用于构建容错系统。
● 软实时性- Erlang支持可编程的“软”实时系统,使用了递增式垃圾收集技术。
● 热代码升级-Erlang允许程序代码在运行系统中被修改。旧代码能被逐步淘汰而后被新代码替换。在此过渡期间,新旧代码是共存的。
●递增式代码装载-用户能够控制代码如何被装载的细节。
●外部接口-Erlang进程与外部世界之间的通讯使用和在Erlang进程之间相同的消息传送机制。
●Fail-fast(中文译为速错),即尽可能快的暴露程序中的错误。
●面向并发的编程(COP concurrency-oriented programming)
●函数式编程
●动态类型
●及早求值或严格求值
●脚本语言
8、RabbitMQ
一个独立的开源实现,服务器端用Erlang语言编写,支持多种客户端,如:Python、Ruby、.NET、Java、JMS、C、PHP、ActionScript、XMPP、STOMP等,支持AJAX。RabbitMQ发布在Ubuntu、FreeBSD平台。
RabbitMQ服务端
rabbitmq-server-generic-unix-3.0.0.tar.gz
RabbitMQ客户端,包含性能测试脚本
abbitmq-java-client-bin-3.0.0.tar.gz
以下是上述版本为例的安装步骤,后续章节描述的内容都对应此版本
RabbitMQ客户端与服务端的安装直接解压安装包即可,客户端的目录中,rabbitmq-client.jar为JAVA版的客户端,编写客户端程序时需要引用,脚本文件为性能测试脚本
$RABBIT_MQ_HOME/sbin目录中的文件说明及命令使用请参考http://www.rabbitmq.com/manpages.html
RabbitMQ的启停:
rabbitmq-server启动服务,如要以后台方式启动,增加-detached参数
rabbitmqctl stop停止服务
rabbitmq-plugins enable rabbitmq_management打开WEB管理界面插件,默认访问地址:
http://服务器IP:15672
单台RabbitMQ的配置
通过配置环境变量或者配置文件,修改诸如端口,绑定IP,broker的名称等,参考配置管理章节
例如:
修改$RABBIT_MQ_HOME/sbin/rabbitmq-env文件,增加配置:
HOSTNAME=broker_138 如果是集群,每台机器的名称要不同
RABBITMQ_NODE_IP_ADDRESS=192.168.100.138 绑定机器IP
RabbitMQ集群的配置
RabbitMQ集群的运行需要集群中的所有节点共享erlang.cookie,以其中一台RabbitMQ中用户目录下~/.erlang.cookie文件为准,复制文件内容,将所有节点的erlang.cookie文件都修改为此值。
先启动所有节点的RabbitMQ,然后依次在每台RabbitMQ中执行命令:
./rabbitmqctl stop_app
./rabbitmqctl join_cluster rabbit@broker_138 //将当前节点与cluster rabbit@broker_138组成集群
./rabbitmqctl start_app
rabbit@broker_138为其中一台RabbitMQ的实例名称,所有RabbitMQ节点都添加同一节点即可。