一、简介
Dubbo是Alibaba开源的分布式服务框架,它最大的特点是按照分层的方式来架构,使用这种方式可以使各个层之间解耦合(或者最大限度地 松耦合)。从服务模型的角度来看,Dubbo采用的是一种非常简单的模型,要么是提供方提供服务,要么是消费方消费服务,所以基于这一点可以抽象出服务提 供方(Provider)和服务消费方(Consumer)两个角色。关于注册中心、协议支持、服务监控等内容。
主要核心部件:
* Remoting: 网络通信框架,实现了 sync-over-async 和 request-response 消息机制.
* RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能
* Registry: 服务目录框架用于服务的注册和服务事件发布和订阅
Dubbo工作原理
* Provider
* 暴露服务方称之为“服务提供者”。
* Consumer
* 调用远程服务方称之为“服务消费者”。
* Registry(使用zookeeper)
* 服务注册与发现的中心目录服务称之为“服务注册中心”。
* Monitor
* 统计服务的调用次调和调用时间的日志服务称之为“服务监控中心”。
二、PROVIDER安装部署
1.JDK安装
1.1 检查和卸载自带jdk
[[email protected] ~]# java -version
java version "1.6.0_24"
[[email protected] ~]# rpm -qa | grep java
[[email protected] ~]# rpm -e --nodeps tzdata-java-2013g-1.el6.noarch
[[email protected] ~]# rpm -e --nodeps java-1.6.0-openjdk-1.6.0.0-1.66.1.13.0.el6.x86_64
[[email protected] ~]# rpm -e --nodeps java-1.7.0-openjdk-1.7.0.45-2.4.3.3.el6.x86_64
1.2 安装jdk1.7
上传jdk
tar -zxvf jdk-7u55-linux-x64.tar.gz
cp -R jdk1.7.0_55 /usr/java
# vim /etc/profile
修改/etc/profile 最后面加入
export JAVA_HOME=/usr/java
export CLASSPATH=.:$JAVA_HOME/jre/lib/rt.jar:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
export PATH=$PATH:$JAVA_HOME/bin
保存退出。运行 #source /etc/profile
# update-alternatives --install /usr/bin/java java /usr/java/jdk1.7.0_55/bin/java 60
# update-alternatives --config java
# java -version
2.TOMCAT安装
2.1 下载&安装
wget http://mirror.bit.edu.cn/apache/tomcat/tomcat-7/v7.0.57/bin/apache-tomcat-7.0.57.tar.gz
tar -xzvf apache-tomcat-7.0.57.tar.gz
#将解压缩后的文件夹拷贝到 /opt/tomcat7:
cp -R apache-tomcat-7.0.57 /opt/tomcat7
#添加专用OS用户
useradd -s /sbin/nologin tomcat
chown -R tomcat:tomcat /opt/tomcat7
#进入tomcat目录设置tomcat 的内存使用情况及其他配置:
cd /opt/tomcat7/bin
vi daemon.sh
#在正文开始的地方加入以下内容(内存等要结合硬件调优)【此脚本可以直接上传 】
# chkconfig: 2345 20 80
# description: simple example to start tomcat
JAVA_HOME=/usr/java
CATALINA_HOME=/opt/tomcat7
CATALINA_OPTS="-Xms1024m -Xmx4096m -XX:PermSize=256m -XX:MaxPermSize=512m -XX:+HeapDumpOnOutOfMemoryError -XX:HeapDumpPath=/var/log/tomcat"
2.2 设置成自启动服务
wget http://mirror.bit.edu.cn/apache//commons/daemon/source/commons-daemon-1.0.15-src.tar.gz
tar -zxvf commons-daemon-1.0.15-src.tar.gz
cd commons-daemon-1.0.15-src/src/native/unix
./configure
make
#复制jsvc到/opt/tomcat7/bin目录下面
cp jsvc /opt/tomcat7/bin
cp jsvc /etc/bin
cd /opt/tomcat7/bin
cp daemon.sh /etc/init.d/tomcat
chmod 755 /etc/init.d/tomcat
chkconfig --add tomcat
chkconfig tomcat on
chkconfig --list tomcat
显示:
tomcat 0:off 1:off 2:on 3:on 4:on 5:on 6:off ← 确认2~5为on的状态就OK
2.3 启动tomcat
service tomcat start
#增加防火墙配置,允许8080端口【暂时不开启防火墙】:
vi /etc/sysconfig/iptables
#在允许ssh的下面增加一条(只面向Web服务器开放权限!!!):
iptables -A INPUT -p tcp -s 192.168.1.1 --dport 8080 -j ACCEPT
/etc/rc.d/init.d/iptables save
service iptables restart
iptables -L -n
2.4 查看tomcat进程
ps aux | grep tomcat
三、ZK+DUBBO安装
TOMCAT参见上方
3.ZOOKEEPER安装【伪集群】
3.1 下载安装
wget http://mirrors.cnnic.cn/apache/zookeeper/zookeeper-3.4.6/zookeeper-3.4.6.tar.gz
tar xzvf zookeeper-3.4.6.tar.gz
cp -R zookeeper-3.4.6 /zookeeper/server1
cp -R zookeeper-3.4.6 /zookeeper/server2
cp -R zookeeper-3.4.6 /zookeeper/server3
#建立data和log目录
mkdir -p /zookeeper/server1/data
mkdir -p /zookeeper/server1/logs
mkdir -p /zookeeper/server2/data
mkdir -p /zookeeper/server2/logs
mkdir -p /zookeeper/server3/data
mkdir -p /zookeeper/server3/logs
3.2 配置
#那么首先进入【data】目录,创建一个myid的文件,里面写入一个数字,比如我这个是server1,那么就写一个1,server2对应myid文件就写入2,server3对应myid文件就写个3
echo 1 >myid
cd /zookeeper/server1/conf
cp zoo_sample.cfg zoo.cfg
mv zoo_sample.cfg zoo_sample.cfg.bak
vi zoo.cfg
# The number of milliseconds of each tick
tickTime=2000
# The number of ticks that the initial
# synchronization phase can take
initLimit=10
# The number of ticks that can pass between
# sending a request and getting an acknowledgement
syncLimit=5
# the directory where the snapshot is stored.
# do not use /tmp for storage, /tmp here is just
# example sakes.
#注意修改
dataDir=/zookeeper/server1/data
dataLogDir=/zookeeper/server1/logs
# the port at which the clients will connect
clientPort=2181
#
# Be sure to read the maintenance section of the
# administrator guide before turning on autopurge.
#
# http://zookeeper.apache.org/doc/current/zookeeperAdmin.html#sc_maintenance
#
# The number of snapshots to retain in dataDir
#autopurge.snapRetainCount=3
# Purge task interval in hours
# Set to "0" to disable auto purge feature
#autopurge.purgeInterval=1
#在文件末尾添加如下内容:
server.1=127.0.0.1:2888:3888
server.2=127.0.0.1:2889:3889
server.3=127.0.0.1:2890:3890
#需要注意的是clientPort这个端口如果你是在1台机器上部署多个server,那么每台机器都要不同的clientPort,
比如我server1是2181,server2是2182,server3是2183,dataDir和dataLogDir也需要区分下。
#最后几行唯一需要注意的地方就是 server.X 这个数字就是对应 data/myid中的数字。你在3个server的myid文件中分别写入了1,2,3,
那么每个server中的zoo.cfg都配server.1,server.2,server.3就OK了。因为在同一台机器上,后面连着的2个端口3个server都不要一样,
否则端口冲突,其中第一个端口用来集群成员的信息交换,第二个端口是在leader挂掉时专门用来进行选举leader所用。
server2和server3配置参见server1
3.3 启动
#分别进入三个服务器的zookeeper-3.4.3/bin目录下,启动服务
./zkServer.sh start
/zookeeper/server1/bin/zkServer.sh start
/zookeeper/server2/bin/zkServer.sh start
/zookeeper/server3/bin/zkServer.sh start
#启动完成后,查看服务器状态
./zkServer.sh status
3.4接入客户端
#进入任意一个服务器的zookeeper/bin目录下,启动一个客户端,接入服务。
./zkCli.sh –server localhost:3181
4.DUBBOADMIN配置
cp dubbo-admin-2.8.4-SNAPSHOT.war /opt/tomcat7/webapps
service tomcat stop
service tomcat start
cd /opt/tomcat7/webapps
mv dubbo-admin-2.8.4-SNAPSHOT dubbo
service tomcat stop
service tomcat start
访问dubbo后台: http://localhost:8080/dubbo 默认用户名/密码:root/root