由于最近公司正在进行服务治理和改造,越来越多的项目将会被分拆成服务的形式从原有的高耦合度的项目中剥离。作为(接口)性能测试,也需要跟上变化。本文的写作目的,在于搭建一个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——8月8日改:由于Dubbo-Admin替换为SpringBoot的新版本,不在需要依赖Tomcat运行,可以跳过安装
  • Dubbo-Admin——8月8日改:新版本的编译和执行,补充在末尾

一、安装JDK

1. 安装JDK 1.8.0_172

首先在Oracle的官网下载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. 修改系统环境变量

# vim /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

#执行以下命令,使修改生效:# source /etc/profile

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.tar.gz

1. 安装Maven-3.5.3

非常简单,只需要将下载的压缩文件解压就可以了。

# cd /usr/local/downloads/
# wget http://mirrors.tuna.tsinghua.edu.cn/apache/maven/maven-3/3.5.3/binaries/apache-maven-3.5.3-bin.tar.gz
#创建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

3. 验证安装

# mvn -v
Apache Maven 3.5.3 (3383c37e1f9e9b3bc3df5050c29c8aff9f295297; 2018-02-25T03:49:05+08:00)
Maven home: /usr/local/maven/maven3
Java version: 1.8.0_172, vendor: Oracle Corporation
Java home: /usr/local/java/jdk1.8.0_172/jre
Default locale: en_US, platform encoding: UTF-8
OS name: "linux", version: "3.10.0-693.21.1.el7.x86_64", arch: "amd64", family: "unix"

如果提示以下错误,请检查/etc/profile中PATH环境变量值中是否包含Maven可执行文件的路径,以及是否使该配置生效。

-bash: mvn: command not found

4. 创建本地资源仓库

#在本地创建一个资源文件的下载目录:
# 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/

1. 安装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文件,需要修改以下几个地方:# vim 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

注:由于新版本的Dubbo-Admin基于SpringBoot重新开发,运行是不需要依赖Tomcat,第四和第五段落的部分可以跳过;请快进到第六段落。

下载地址:http://mirrors.tuna.tsinghua.edu.cn/apache/tomcat/tomcat-9/v9.0.8/bin/apache-tomcat-9.0.8.tar.gz

1. 安装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启动脚本

复制tomcat的启动脚本(tomcat9.sh)到服务器,并赋予执行权限。

# mkdir -p /home/tomcat/scripts
# cp tomcat9.sh /home/tomcat/scripts# chmod +x /home/tomcat/scripts/tomcat9.sh

tomcat9.sh文件内容如下:

#!/bin/bash#Location of JAVA_HOME (bin files)
export JAVA_HOME=/usr/local/java/jdk1.8.0#Add Java binary files to PATH
export PATH=$JAVA_HOME/bin:$PATH#CATALINA_HOME is the location of the configuration files of this instance of Tomcat
CATALINA_HOME=/usr/local/tomcat/tomcat9START="$CATALINA_HOME/bin/startup.sh"
SHUTDOWN="$CATALINA_HOME/bin/shutdown.sh"case $1 instart)echo "Start $CATALINA_HOME"$START# Print Tomcat log contenttail -f $CATALINA_HOME/logs/catalina.out;;stop)echo "Shutdown $CATALINA_HOME"$SHUTDOWNcat /dev/null > $CATALINA_HOME/logs/catalina.out;;restart)echo "Shutdown $CATALINA_HOME"$SHUTDOWNcat /dev/null > $CATALINA_HOME/logs/catalina.outsleep 2echo "Start $CATALINA_HOME"$START#Print Tomcat log contenttail -f $CATALINA_HOME/logs/catalina.out;;logs)tail -50f $CATALINA_HOME/logs/catalina.out;;*)echo "Usage: $0 {start|stop|restart}"exit 1
esac

五、安装Dubbo-Admin

为了更好的调试、发现问题、解决问题,因此引入dubbo-admin。通过dubbo-admin可以对消费者和提供者进行管理。

1. 下载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文件。

4. 启动dubbo-admin

在启动Tomcat之前我们需要先把Zookeeper启动起来。

在tomcat启动之后我们就可以访问dubbo-admin了。我们在浏览器中输入:http://192.168.8.241:8080;

在访问的时候会弹出一个框让你输入用户名和密码;用户名和密码都为root。

5. Zookeeper和Dubbo-Admin的绑定

进入Dubbo-Admin的配置文件所在的路径,在tomcat/webapps/ROOT/WEB-INF/目录下:

# vim dubbo.properties#把dubbo服务注册的地址改为虚拟机的IP地址(Zookeeper所在的地址)

重启Tomcat,再次访问Dubbo-Admin的页面,大功告成。

————————————————————————————————————————————————————————————————————————

六、安装Dubbo-Admin

1. 下载Dubbo-Admin

Step 1: 下载:

# cd /opt

# git clone https://github.com/apache/incubator-Dubbo-ops

Step 2: 修改配置信息:

# cd /opt/incubator-Dubbo-ops/dubbo-admin/src/main/resources

# vim application.properties

需要注意的地方是:

  • 默认的访问端口为7001;
  • Zookeeper的地址,如果zkServer和Dubbo-Admin不在同一台机器上,需要修改成zkServer所在的IP地址;
  • 用户root、guest的密码酌情修改。

Step 3: 编译:

# cd incubator-Dubbo-ops

# mvn package

完成后,进入/incubator-Dubbo-ops/dubbo-admin/target目录:

编译获得dubbo-admin-0.0.1-SNAPSHOT.jar,可以直接运行,不需要依赖Tomcat。

将这个jar包复制到合适的路径下,如/home/dubbo-admin/,然后写一个执行脚本:

# vim run-DubboAdmin.sh

java -jar /home/dubbo-admin/dubbo-admin-0.0.1-SNAPSHOT.jar &

# chmod +x run-DubboAdmin.sh

在启动run-DubboAdmin.sh之前我们需要先把Zookeeper启动起来,之后我们就可以访问Dubbo-admin了。

# ./run-DubboAdmin.sh

会生成日志文件:dubbo-governance.log,记录启动和访问的记录。

确认关闭了防火墙,或者允许7001端口的通讯。

在浏览器输入:http://192.168.8.97:7001;输入用户名root和密码后,显示主页:

搭建Dubbo开发学习环境——补充新版本的Dubbo-Admin的编译和执行过程相关推荐

  1. linux搭建python运行环境_centos运行.py centos5.5下搭建python开发运行环境 - Linux - 服务器之家...

    centos运行.py centos5.5下搭建python开发运行环境 发布时间:2017-04-28 来源:服务器之家 我们知道ython可以在windows.linux.android运行了,但 ...

  2. 在Eclipse里搭建Go开发的环境

    在Eclipse里搭建Go开发的环境 谷歌创造了一个叫做Golang或Go的编程语言.据一些技术分析家说,它将最终完全替代Java.这是一种通用型的语言,可以用来开发任何软件--从普通应用到系统编程. ...

  3. web自动化如何在不同浏览器运行_如何给树莓派搭建WEB开发运行环境之JAVA篇

    在上一篇,我们已经脱掉了她华丽的外衣,你不用再添加任何华而不实的装饰,一切都交给CLI来搞定.树莓派WEB开发运行环境之JAVA篇,只需5个步骤: 安装JAVA开发包 安装和运行maven 创建JAV ...

  4. 基于京东云GPU云主机搭建TensorFlow深度学习环境

    TensorFlow是一个开放源代码软件库,用于进行高性能数值计算.借助其灵活的架构,用户可以轻松地将计算工作部署到多种平台(CPU.GPU.TPU)和设备(桌面设备.服务器集群.移动设备.边缘设备等 ...

  5. 使用Linux服务器搭建个人深度学习环境

    使用Linux服务器搭建个人深度学习环境 环境及所需工具 连接服务器 创建自己的python环境 创建深度学习框架的环境(以tensorflow为例) 测试环境 退出环境 删除环境 WinSCP的使用 ...

  6. 在腾讯云主机上搭建pytorch深度学习环境

    在腾讯云主机上搭建pytorch深度学习环境 1.购置[腾讯云主机](https://cloud.tencent.com/? fromSource=gwzcw.234976.234976.234976 ...

  7. 搭建8086汇编语言学习环境——dosbox

    搭建8086汇编语言学习环境 资源网盘链接:链接:https://pan.baidu.com/s/1gamz6WYIWLOv5WP9H8L2Ng 提取码:ydvv 复制这段内容后打开百度网盘手机App ...

  8. Linux平台swift语言开发学习环境搭建

    摘要  介绍在Ubuntu平台搭建Swift开发环境: 介绍Swift脚本解析器swift的使用: 介绍Swift编译器swiftc的使用: 1.序言 这两天一直忙,没来得及记录东西,周三12月4日凌 ...

  9. swift 在linux系统,Linux下搭建Swift语言开发学习环境

    介绍在Ubuntu平台搭建Swift开发环境: 介绍Swift脚本解析器swift的使用: 介绍swift编译器swiftc的使用: 1.序言 周三12月4日凌晨1点多看到苹果正式开源了Swift,国 ...

  10. linux swift开发环境,Linux平台swift语言开发学习环境搭建

    摘要 介绍在Ubuntu平台搭建Swift开发环境: 介绍Swift脚本解析器swift的使用: 介绍Swift编译器swiftc的使用: 1.序言 这两天一直忙,没来得及记录东西,周三12月4日凌晨 ...

最新文章

  1. linux内核创建ubi,UBI文件系统制作和挂载
  2. 通过路由进行参数的传递(方法一)
  3. 今天,送你一份交通行业最全数据集(共享单车、自动驾驶、网约出租车、交通信号识别)
  4. 迁移到其他机器_有赞大数据离线集群迁移实战
  5. android 应用无法安装程序,朋友android设备无法安装我的Android应用程序,我甚至不能为我自己做...
  6. 列车时刻管理c语言程序设计,列车时刻表信息管理系统实践报告C语言源代码
  7. Ajax PHP 边学边练 之二 实例
  8. java jsch shell_仅在JSch shell通道中获取特定命令的输出
  9. Javascript数据类型,类型转换
  10. 5秒钟搭建一个简单版的restful资源服务器
  11. python七种数据类型
  12. Excel数据透视表经典教程十三《打印数据透视表/图》
  13. GitHub 下载单个文件/文件夹
  14. 百度移动搜索冰桶算法公告
  15. android 7 蓝牙版本,Android N及高版本蓝牙适配
  16. 对人工智能的一点看法
  17. 做新时代的忠诚爱国者写一篇议论文800字
  18. 录入查询学生成绩C语言,学生成绩录入查询系统C语言程序
  19. 【扫描线】六道剑「一念无量劫」
  20. C++11使用emplace_back代替push_back

热门文章

  1. jpl数据下载_火星上的AI:喷气推进实验室(JPL)的Tom Soderstrom访谈
  2. 个性化推荐系统_推荐系统,个性化预测和优点
  3. wp-autoblog_AutoBlog简介
  4. 知网搜索论文:如何在知网上查找期刊论文
  5. 安装python3.7的步骤_如何在Debian 9上安装Python 3.7?
  6. 数据丢失与重复_面试官:如何保证消息的可靠性传输?如何处理消息丢失的问题?...
  7. 怎么实现角色权限的分配_在 Go 语言中使用 casbin 实现基于角色的 HTTP 权限控制...
  8. 基于新标注模式的实体和关系联合抽取方法(Joint Extraction of Entities and Relations Based on a Novel Tagging Scheme)
  9. JS基础知识 --变量类型和计算
  10. vue-router页面传值及接收值