Dubbo介绍java
当服务愈来愈多时,容量的评估,小服务资源的浪费等问题逐渐显现,此时须要增长一个调度中心基于访问压力实时管理集群容量,提供集群利用率。其中,用于提升机器利用率的资源调度和治理中心是关键。git
Dubbo 是阿里巴巴开源项目的一个分布式服务框架。致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。简单的说,Dubbo就是个服务框架,若是没有分布式的需求,实际上是不须要用的,只有在分布式的时候,才有Dubbo这样的分布式服务框架的需求,而且本质上是个服务调用的东西,说白了就是个远程服务调用的分布式框架(告别Web Service模式中的WSDL,以服务者与消费者的方式在Dubbo上注册)。github
名词解释:算法
WSDL:Web Services Description Language,网络服务描述语言apache
RPC:Remote Procedure Call Protocol,远程过程调用协议vim
Dubbo工做原理:浏览器
调用关系说明:tomcat
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——8月8日改:因为Dubbo-Admin替换为SpringBoot的新版本,不在须要依赖Tomcat运行,能够跳过安装 Dubbo-Admin——8月8日改:新版本的编译和执行,补充在末尾
(可选) 卸载已有的open jdk
# rpm -qa | grep jdk java-1.6.0-openjdk-1.6.0.0-1.45.1.11.1.el6.i686 # yum -y remove java-1.6.0-openjdk-1.6.0.0-1.45.1.11.1.el6.i686 remove java-1.6.0-openjdk-1.6.0.0-1.45.1.11.1.el6.i686
安装步骤, 请见 http://qiangsh.blog.51cto.com/3510397/1771748
Maven的下载地址是:http://maven.apache.org/download.cgi
下载最新版本的Maven-3.5.4.tar.gz
1. 安装Maven-3.5.4
#下载maven cd /data/packages wget http://mirrors.hust.edu.cn/apache/maven/maven-3/3.5.4/binaries/apache-maven-3.5.4-bin.tar.gz #建立maven的工做路径 mkdir -p /usr/local/maven tar -zvxf apache-maven-3.5.4-bin.tar.gz -C /usr/local/maven/ #作一个软连接,方便之后升级: ln -s /usr/local/maven/apache-maven-3.5.4 /usr/local/maven/maven3
2. 修改系统环境变量
# vim /etc/profile #在适当的位置添加 export M2_HOME=/usr/local/maven/maven3 export PATH=$M2_HOME/bin:$PATH #执行如下命令,使修改生效: # source /etc/profile
3. 验证安装
# mvn -v
4. 建立本地资源仓库
#在本地建立一个资源文件的下载目录: mkdir -p /data/maven/local-Repository #修改Maven配置文件: vim /usr/local/maven/maven3/conf/settings.xml #我的配置以下: <localRepository>/data/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下载地址:
https://www.apache.org/dyn/closer.cgi/zookeeper/
1. 安装Zookeeper
tar -zxvf zookeeper-3.4.13.tar.gz -C /usr/local/ mv /usr/local/zookeeper-3.4.13 /usr/local/zookeeper
2. 建立Zookeeper项目目录
mkdir /data/zookeeper #项目目录 mkdir /data/zookeeper/zkdata #存放快照日志 mkdir /data/zookeeper/zkdatalog #存放事物日志
3. 修改配置文件
#进入 /usr/local/zookeeper/conf目录,复制zoo_sample.cfg文件并更名为zoo.cfg。 cd /usr/local/zookeeper/conf cp zoo_sample.cfg zoo.cfg #修改zoo.cfg文件,须要修改如下几个地方: # vim zoo.cfg ----- tickTime=2000 initLimit=10 syncLimit=5 dataDir=/data/zookeeper/zkdata dataLogDir=/data/zookeeper/zkdatalog clientPort=12181 server.1=127.0.0.1:12888:13888
4. 配置zookeeper的环境变量
# vim /etc/profile export ZOOKEEPER_HOME=/usr/local/zookeeper export PATH=$PATH:$ZOOKEEPER_HOME/bin # source /etc/profile
5. 启动Zookeeper
#进入bin目录 cd /usr/local/zookeeper/bin # 启动zookeeper服务 ./zkServer.sh start # 启动完成后,查看服务状态: ./zkServer.sh status
6. 配置 zookeeper 开机启动
echo '/usr/local/zookeeper/bin/zkServer.sh start' >>/etc/rc.local
为了更好的调试、发现问题、解决问题,所以引入dubbo-admin。经过dubbo-admin能够对消费者和提供者进行管理。
1. 下载Dubbo-Admin
#下载 cd /opt git clone https://github.com/apache/incubator-Dubbo-ops
2. 修改配置信息
cd /opt/incubator-Dubbo-ops/dubbo-admin/src/main/resources vim application.properties
须要注意的地方是:
3: 编译
cd /opt/incubator-Dubbo-ops/ mvn package
完成后,编译得到dubbo-admin-0.0.1-SNAPSHOT.jar,能够直接运行,不须要依赖Tomcat。
ls /opt/incubator-Dubbo-ops/dubbo-admin/target classes generated-sources maven-status dubbo-admin-0.0.1-SNAPSHOT.jar generated-test-sources surefire-reports dubbo-admin-0.0.1-SNAPSHOT.jar.original maven-archiver test-classes
4: 启动
#将这个jar包复制到合适的路径下,如/usr/local/dubbo-admin/ mkdir /usr/local/dubbo-admin cp /opt/incubator-Dubbo-ops/dubbo-admin/target/dubbo-admin-0.0.1-SNAPSHOT.jar /usr/local/dubbo-admin/ #而后启动服务 nohup java -jar /usr/local/dubbo-admin/dubbo-admin-0.0.1-SNAPSHOT.jar & #加入开机自启: echo 'nohup java -jar /usr/local/dubbo-admin/dubbo-admin-0.0.1-SNAPSHOT.jar &' >>/etc/rc.local
在启动run-DubboAdmin.sh以前咱们须要先把Zookeeper启动起来,以后咱们就能够访问Dubbo-admin了。
会生成日志文件:dubbo-governance.log,记录启动和访问的记录。
确认关闭了防火墙,或者容许7001端口的通信。