知识储备
或许继续阅读前,你需要了解下什么是rpc,什么是dubbo,什么是zookeeper,什么是docker。
不懂什么是spring和java开发?那就不要继续了!
实验目标
1、启动一个docker容器挂载zookeeper,提供服务注册与发现
2、启动一个docker tomcat容器部署dubbo admin管理app,用来管理服务提供者、消费者以及负载均衡等
3、开发一个简单的服务并启动三次(端口和输出有差),注册至zookeeper
4、开发一个简单的服务消费者来消费服务,并体验不同的负载均衡策略
架构规划
启动zookeeper服务器
docker pull zookeeper:3.4.10
docker run --name zoo-server --restart always -p 2181:2181 -d zookeeper:3.4.10
务必开启端口映射。将2181用宿主机暴露,这样我们的开发和测试环境才能向其注册服务,EXPOSE 2181 2888 3888 (the zookeeper client port, follower port, election port respectively)
部署并启动dubbo admin
下载的是源码,下载后解压,进入dubbo-admin目录执行
mvn package
进行打包成二进制war包(见target目录),上传到你的docker宿主机上
我的docker宿主机存放该war的路径为:/root/dockerdata
到宿主机上还需要解压缩war包,改改配置文件
cd /root/dockerdata
unzip dubbo-admin-2.5.5.war -d ./dubbo-admin/ROOT
cd dubbo-admin/ROOT/WEB-INF/
vi dubbo.properties
内容先设定为:
dubbo.registry.address=zookeeper://zoo-server:2181
dubbo.admin.root.password=root
dubbo.admin.guest.password=guest
其中zoo-server为启动的zookeeper的主机名
启动tomcat容器并映射dubbo-admin-webapp
至tomcat的webapps/ROOT
docker run --name dubbo-admin -p 8080:8080 -v /root/dockerdata/dubbo-admin/:/usr/local/tomcat/webapps --link zoo-server:zoo-server -d tomcat:8.5-jre8
然后访问http://宿主ip:8080会看到登录界面
用户名密码都是root,登录进去能看到这样的界面:
Java工程规划
一共四个类,两个spring容器配置文件。
服务的开发
maven依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>${dubbo.version}</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>${zookeeper.version}</version>
</dependency>
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>${zkclient.versio