dubbo的搭建需要用到的工具
本文的写作目的,在于搭建一个Zookeeper单节点、Dubbo的学习环境。
Dubbo的作用:
当服务越来越多时,容量的评估,小服务资源的浪费等问题逐渐显现,此时需要增加一个调度中心基于访问压力实时管理集群容量,提供集群利用率。其中,用于提高机器利用率的资源调度和治理中心是关键。
Dubbo 是阿里巴巴开源项目的一个分布式服务框架。致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,Dubbo就是个服务框架,如果没有分布式的需求,其实是不需要用的,只有在分布式的时候,才有Dubbo这样的分布式服务框架的需求,并且本质上是个服务调用的东西,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSDL,以服务者与消费者的方式在Dubbo上注册)。
名词解释:
- WSDL:Web Services Description Language,网络服务描述语言
- RPC:Remote Procedure Call Protocol,远程过程调用协议
- SOA:Service-Oriented Architecture,面向服务的体系结构
Dubbo工作原理:
调用关系说明:
1) 服务容器启动、加载和运行服务提供者;
2) 服务提供者在启动时,向注册中心注册自己提供的服务;
3) 服务消费者在启动时,向注册中心订阅自己所需的服务;
4) 注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更给消费者;
5) 服务消费者从地址列表中,基于软负载均衡算法选一台服务提供者进行调用,如果调用失败再选另一台;
6) 服务消费者和服务提供者在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
Zookeeper的作用:
Zookeeper 作为一个分布式的服务框架,主要用来解决分布式集群中应用系统的一致性问题,它能提供基于类似于文件系统的目录节点树方式的数据存储,但是 Zookeeper 并不是用来专门存储数据的,它的作用主要是用来维护和监控你存储的数据的状态变化。通过监控这些数据状态的变化,从而可以达到基于数据的集群管理。
Dubbo和zookeeper啥关系?
简单来说打个比方:Dubbo就是动物园的动物,zookeeper是动物园。如果游客想看动物的话那么就去动物园看。比如你要看老虎,那么动物园有你才能看到。换句话说我们把很多不同的Dubbo(动物)放到zookeeper(动物园中)提供给我们游客进行观赏。这个过程中三个关键:场所、供给者、消费者。
再说一个分布式的项目,server(消费)层与 service(供给)层被拆分了开来, 部署在不同的tomcat中, 我在server层需要调用 service层的接口,但是两个运行在不同tomcat下的服务无法直接互调接口,那么就可以通过zookeeper和Dubbo实现。就好比把动物放到动物园,我们要看了直接去动物园就行。而不能直接到动物生活的地方去看,会有性命安全之忧(比如你去看老虎)。
我们通过Dubbo 建立service这个服务,并且到zookeeper上面注册,填写对应的zookeeper服务所在 的IP及端口号。
所需软件如下:
JDK-1.8
Maven-3.5.3
Zookeeper-3.4.12
Tomcat-9
Dubbo-Admin
一、安装JDK 1.8.0_172
- 解压到/usr/local/java
# mkdir -p /usr/local/java
# tar -zxvf jdk-8u172-linux-x64.tar.gz -C /usr/local/java
#做一个软链接,方便以后升级:
# ln -s /usr/local/java/jdk1.8.0_172 /usr/local/java/jdk1.8.0
2.修改环境变量/etc/profile
添加:
export JAVA_HOME=/usr/local/java/jdk1.8.0
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib.tools.jar
export PATH=$JAVA_HOME/bin:$PATH
3.验证安装
# java -version
java version "1.8.0_172"
Java(TM) SE Runtime Environment (build 1.8.0_172-b11)
Java HotSpot(TM) 64-Bit Server VM (build 25.172-b11, mixed mode)
二、安装Maven
Maven的下载地址是:http://maven.apache.org/download.cgi
- 安装Maven-3.5.3
非常简单,只需要将下载的压缩文件解压就可以了。
# cd /usr/local/downloads/
#创建maven的工作路径
# mkdir -p /usr/local/maven
# tar -zvxf apache-maven-3.5.3-bin.tar.gz -C /usr/local/maven/
做一个软链接,方便以后升级:
# ln -s /usr/local/maven/apache-maven-3.5.3 /usr/local/maven/maven3
2.配置环境变量
# vim /etc/profile
#在适当的位置添加
export M2_HOME=/usr/local/maven/maven3
export PATH=$M2_HOME/bin:$PATH
保存退出后运行下面的命令使配置生效,或者重启服务器生效:
# source /etc/profile
验证版本:
# mvn -v
如果安装正确就可以看到Maven的版本了。如果提示以下错误,请检查/etc/profile中PATH环境变量值中是否包含Maven可执行文件的路径,以及是否使该配置生效。
-bash: mvn: command not found
更多关于Maven的用法可以从这里找到:Maven Getting Started Guide
3.创建本地资源仓库
在本地创建一个资源文件的下载目录:
# mkdir -p /home/maven/local-Repository
修改Maven配置文件:
# vim /usr/local/maven/maven3/conf/settings.xml
个人配置如下:
<localRepository>/home/maven/local-Repository</localRepository>
<mirror>
<id>alimaven</id>
<name>aliyun-maven</name>
<url>http://maven.aliyun.com/nexus/content/groups/public/</url>
<mirrorOf>central</mirrorOf>
</mirror>
<mirror>
<id>repo2</id>
<name>Maven Repository2</name>
<url>http://repo2.maven.org/maven2/</url>
<mirrorOf>central</mirrorOf>
</mirror>
三、搭建Zookeeper单机环境
Zookeeper下载地址:
https://www.apache.org/dyn/closer.cgi/zookeeper/
- 解压Zookeeper压缩包
# mkdir -p /usr/local/zookeeper
# tar -zxvf zookeeper-3.4.12.tar.gz -C /usr/local/zookeeper/
#做一个软链接,方便以后升级:
# ln -s /usr/local/zookeeper/zookeeper-3.4.12 /usr/local/zookeeper/zkServer
2.创建数据文件夹
在zkServer目录下新建data、logs两个文件夹
# mkdir -p /usr/local/zookeeper/zkServer/data
# mkdir -p /usr/local/zookeeper/zkServer/logs
3.修改配置文件
进入zkServer/conf目录,把zoo_sample.cfg文件复制一份名字改成zoo.cfg。
# cp zoo_sample.cfg zoo.cfg
#修改zoo.cfg文件,需要修改以下几个地方:
dataDir=/usr/local/zookeeper/zkServer/data
dataLogDir=/usr/local/zookeeper/zkServer/logs
clientPort=2181
server.1=127.0.0.1:2888:3888
4.启动Zookeeper
配置完以后,就可以启动zookeeper服务了,进入zkServer/bin目录,启动zookeeper服务:
# ./zkServer.sh start
启动完成后,查看服务状态:
# ./zkServer.sh status
四、安装Tomcat 9
下载地址:http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.8/bin/apache-tomcat-9.0.8.tar.gz
- 安装Tomcat
创建Tomcat工作的目录,并解压到此目录下:
# mkdir -p /usr/local/tomcat
# tar -zxvf apache-tomcat-9.0.8.tar.gz -C /usr/local/tomcat
# cd /usr/local/tomcat
# ln -s /usr/local/tomcat/apache-tomcat-9.0.8 /usr/local/tomcat/tomcat9
2.修改应用服务端口
配置文件位于tomcat9/conf/目录下,server.xml中的配置项:
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" />
默认的端口为8080,按需修改。
3.配置Tomcat的JVM堆内存
# vim /usr/local/tomcat/tomcat9/bin/Catalina.sh
在配置文件内容有效部分的开头,添加如下:
CATALINA_OPTS="-Xms1024m -Xmx1024m -Xss2048K"
4.制作启动脚本
复制附件中的tomcat的启动脚本(tomcat9.sh)到服务器,并赋予执行权限。
# mkdir -p /home/tomcat/scripts
# cp tomcat9.sh /home/tomcat/scripts
# chmod +x tomcat9.sh
五、安装Dubbo-Admin
为了更好的调试、发现问题、解决问题,因此引入Dubbo-admin。通过Dubbo-admin可以对消费者和提供者进行管理。
- 下载Dubbo-Admin
https://github.com/apache/incubator-Dubbo-ops
Step 1: 下载:
# git clone https://github.com/apache/incubator-Dubbo-ops
Step 2: 编译:
# cd incubator-Dubbo-ops
# mvn package
Dubbo-admin-2.0.0.war in incubator-Dubbo-ops\Dubbo-admin\target directory. You can deploy it into your application server.
2.复制到Tomcat
将Dubbo-admin-2.0.0.war复制到Tomcat的webapps目录下:
# cp Dubbo-admin-2.0.0.war /usr/local/tomcat/tomcat9/webapps/
3.安装Dubbo-admin
注意:Dubbo-admin里面的内容需要放到ROOT下面去(如果不放到ROOT下面会出一些问题),所以这一步算是必须的操作。
先将原来webapps下的ROOT重命名:
# cd /usr/local/tomcat/tomcat9/webapps/
# mv ROOT ROOT.bak
再创建一个ROOT文件夹:
# mkdir ROOT
将Dubbo-admin-2.0.0.war移动到新的ROOT目录下。由于Dubbo-admin-2.0.0.war解压以后没有父目录,如果直接解压,会在webapps目录下直接展开。
# mv Dubbo-admin-2.0.0.war ROOT/
# jar -xvf Dubbo-admin-2.0.0.war
解压完成后,如下图:
此时可以删除webapps/ROOT/Dubbo-admin-2.0.0.war文件。
- 启动Dubbo-admin
在启动Tomcat之前我们需要先把Zookeeper启动起来。
在tomcat启动之后我们就可以访问Dubbo-admin了。我们在浏览器中输入:http://192.168.8.241:8080;
在访问的时候会弹出一个框让你输入用户名和密码;用户名和密码都为root。
Zookeeper和Dubbo-Admin的绑定
进入Dubbo-Admin的配置文件所在的路径,在tomcat/webapps/ROOT/WEB-INF/目录下:
# vim Dubbo.properties
把注册地址改为虚拟机的IP地址,重启Tomcat。