本文主要介绍 dubbo 环境的搭建,包括注册中心 zookeeper 及 dubbo admin 的安装。就测试而言,只会环境搭建还是不够的,我们还需要简单了解下 dubbo 的基本原理,这样在遇到问题的时候,才能够更高效地排查和定位问题。
dubbo 的 java 代码实践可以参照文章代码学习与实践 (二):Spring Boot 集成 Dubbo。
在搭建环境之前,我们先来简单地了解下 dubbo 的基本概念及原理。
dubbo 是:
-- 一款分布式服务框架
-- 高性能和透明化的 RPC 远程服务调用方案
-- SOA 服务治理方案
RPC(Remote Procedure Call Protocol)远程过程调用协议,是一种编程模式,把对服务器的调用抽象为过程调用,目的就是要像调用本地服务一样方便地调用他人的远程服务,让调用者对网络通信这些细节透明,提高生产力。
下面我们用一张图,一起来了解下 dubbo 的基本原理:
Provider: 暴露服务的服务提供方。
Consumer: 调用远程服务的服务消费方。
Registry: 服务注册与发现的注册中心。
Monitor: 统计服务的调用次调和调用时间的监控中心。
Container: 服务运行容器。
1、服务容器负责启动,加载,运行服务提供者。服务提供者在启动时,向注册中心注册自己提供的服务。
2、服务消费者在启动时,向注册中心订阅自己所需的服务。
3、注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于长连接推送变更数据给消费者。
4、服务消费者,从提供者地址列表中,基于软负载均衡算法,选一台提供者进行调用,如果调用失败,再选另一台调用。
5、服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次统计数据到监控中心。
zookeeper 有三种运行形式:集群模式、单机模式、伪集群模式。这里我们安装单机模式即可。
我们使用 zookeeper 的官方镜像。
下载镜像:
docker pull zookeeper
在后台启动镜像:
docker run -d --name zookeeper -p 2181 -t zookeeper
登录 zookeeper 镜像:
docker exec -it ${docker-id} /bin/bash
默认进入 zk 的的安装目录:/zookeeper-3.4.10
1、运行 zk
$ ./bin/zkServer.sh start
2、停止 zk
$ ./bin/zkServer.sh stop
3、查看 zk 的状态
$ ./bin/zkServer.sh status
1、运行客户端
$ ./bin/zkCli.sh -server ip:port
如:./bin/zkCli.sh -server 127.0.0.1 2181
不加参数时,默认连接本地的 2181 端口
2、客户端支持的命令
连上客户端后,可使用 help 查看客户端支持的所有命令。
客户端详细命令行操作可参考官方文档:http://zookeeper.apache.org/doc/r3.3.3/zookeeperStarted.html
dubbo admin 是管理 dubbo 服务的 UI 工具。虽然有注册中心、提供者、消费者,就可以正常使用 dubbo 了,但是我们无法看到提供者和消费者是否存在及其状态,可以借助 dubbo admin 管理平台来实时的查看和管理提供者和消费者。
下面我们介绍下 dubbo admin 的安装。
1、需要 3 个安装文件
apache-tomcat-7.0.79.tar.gz
jdk-8u144-linux-x64.tar.gz
dubbo-admin-2.8.4.war
2、解压 dubbo-admin-2.8.4.war,拷贝到/apache-tomcat-7.0.79/webapps/ROOT 下。
3、修改 tomcat 使用的 jdk 版本
tomcat 默认使用的是系统的 JAVA_HOME,我们机器上的是 1.6 版本的,这里我们换成 1.8 版本的,避免后续报错。
在 apache-tomcat-7.0.79/bin/catalina.sh 中添加 JAVA_HOME,指向上面 1.8 版本的 jdk 的目录
如: JAVA_HOME="/home/appuser/java/jdk1.8.0_144"
4、修改 dubbo 配置
zookeeper 地址及 admin 页面的登录密码,都在 apache-tomcat-7.0.79/webapps/ROOT/WEB-INF/dubbo.properties 中修改。
$ vi dubbo.properties
dubbo.registry.address=zookeeper://10.165.124.69:2181 #改成上面zookeeper服务启动的地址
dubbo.admin.root.password=root #root用户密码
dubbo.admin.guest.password=guest #guest用户密码
5、启动 tomcat
在 apache-tomcat-7.0.79/bin/目录下,执行命令 ./startup.sh
6、测试
本地浏览器输入 ip:port,访问 dubbo admin,默认 8080 端口,在弹出的登录框中,输入用户名/密码:root/root,即可看到如下界面:
如上,dubbo 的环境搭建就介绍完了~~
Dubbo 架构与底层实现
从头开始搭建一个 dubbo+zookeeper 平台