概述
利用Alibaba Cloud Toolkit 快速搭建dubbo + zookeeper工程, 以及如何调通zookeeper
此文前提: 已安装好Docker~没有就看标题1, 已安装略过
1. Docker
我自己用于开发测试学习的神器安装redis,mysql等就像安装软件一样简单~
本人环境: 阿里云CES , 系统: Centos7
1.1 Docker环境安装
-
安装yum-utils:
yum install -y yum-utils device-mapper-persistent-data lvm2Copy to clipboardErrorCopied
-
为yum源添加docker仓库位置:
yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repoCopy to clipboardErrorCopied
-
安装docker:
yum install docker-ceCopy to clipboardErrorCopied
-
启动docker:
systemctl start docker
docker 拉取镜像通过 docker pull [镜像名称], 不过速度很蜗牛,配置一下阿里云镜像加速即可
1.2 配置阿里云镜像加速
https://help.aliyun.com/document_detail/60750.html
2. Alibaba Cloud Toolkit 插件
插件市场直接搜 Alibaba Cloud Toolki ,我已安装好。
2.1 新建项目
先参考: 开源软件 Apache Dubbo 牵手 IDE 插件,开发部署提速不止 8 倍 , 不过该篇文章已是一年前的了,Alibaba Cloud Toolkit 也更新了不少, 添加Regsitry 和 Confiuration Method的选择
1. 安装插件重启侯,new - > Project 可以看到多了个Apache Dubbo
,就像 可以用Spring Initalizr
直接创建Springboot工程一样,不在需用maven
慢慢添加依赖。
2. 选择 Zookeeper, 也可以用阿里的Mulicast的注册中心,供于测试的~
3. 完创建出来的 Dubbo 样例工程是一个 Spring boot + Dubbo + Zookeeper工程,pom配置好了dubbo和zookeeper, 只需换成自己的zookeeper的地址即可。
2.2 启动项目
1.启动Provider
首先修改配置: application.properties文件
dubbo.registry.address=zookeeper://自己的IP:2181
出现下图说明服务端已经成功启动。
2020-07-24 09:29:13.014 INFO 162700 --- [ main] c.d.s.provider.DubboProviderBootstrap : Started DubboProviderBootstrap in 3.484 seconds (JVM running for 4.41)
2020-07-24 09:29:13.018 INFO 162700 --- [pool-1-thread-1] .b.c.e.AwaitingNonWebApplicationListener : [Dubbo] Current Spring Boot Application is await...
2. 启动Consumer
同样的启动丢应工程下的 启动程序 com.dubbo.saiuna.consumer.DubboConsumerBootstrap, 同样修改对应的 application.properties文件
dubbo.registry.address=zookeeper://自己的IP:2181
修改一下输出:com.dubbo.saiuna.consumer.DubboConsumerBootstrap.Java下,每秒调用一次。
@Bean
public ApplicationRunner runner() {
return args ->{
while (true) {
TimeUnit.SECONDS.sleep(1);
logger.info(demoService.sayHello("Provider-saiuna"));
}
};
}
最后启动DubboConsumerBootstrap
2020-07-24 11:46:15.683 INFO 224684 --- [ main] c.d.s.consumer.DubboConsumerBootstrap : Started DubboConsumerBootstrap in 3.16 seconds (JVM running for 3.636)
2020-07-24 11:46:16.942 INFO 224684 --- [ main] c.d.s.consumer.DubboConsumerBootstrap : Hello Provider-saiuna, response from provider: 192.168.163.195:12345
2020-07-24 11:46:17.955 INFO 224684 --- [ main] c.d.s.consumer.DubboConsumerBootstrap : Hello Provider-saiuna, response from provider: 192.168.163.195:12345
2020-07-24 11:46:18.967 INFO 224684 --- [ main] c.d.s.consumer.DubboConsumerBootstrap : Hello Provider-saiuna, response from provider:
按照预期的每秒调用一次并打印。这次整个过程调通,省去了大量的cv
工作, 用于测试/学习
非常便利。
细心的发现缺了一个环节,注册中心zookeeper
呢?
就像rabbitMQ一样需要安装。我直接用Docker安装在阿里云服务器上了。
3. Docker安装 zookeeper
1. 查看zookeeper镜像
docker search zookeeper
2. 拉取zookeeper
docker pull zookeeper
3. 运行安装
docker run -d \ -p 2181:2181 \
-v /mydata/zookeeper/data/:/data/ \
--name=zookeeper \
--privileged zookeeper
4. 参数含义
贴心的我怎么会忘了贴上参数含义呢:
-p 2181:2181 //将容器的2181端口映射到主机的2181端口, 也可以和主机的端口分开
--name=zookeeper //创建的容器名称
-v /mydata/zookeeper/data/:/data/ //设置数据及文件放置的地方
--privileged /*使用该参数,container内的root拥有真正的root权限。
否则,container内的root只是外部的一个普通用户权限。 */
关于 --privileged
参数也是找了网上的说话,众说纷纭,具体最好还是看官方文档~ 至此不做深究,有错误恳请指出,互相学习。
注 反斜杠 \ 是为了转义 换行
对于复杂的RUN命令,用反斜线换行,合成一条命令
shell命令行下反斜线""有两种含义:
1.对有特殊含义的字符进行转义. 例如 echo “123$”,结果是123$
2.\Enter,反斜杠后面紧跟回车,表示下一行是当前行的续航 ,合成一条命令。
mydata为自定义的文件夹,统一放docker安装的地方,便于打理。 放一下我自己的
6.查看zookeeper的进程
docker ps
7. 进入 zkCli.sh 可跳过
至此zookeeper已经安装成功。当然,zookeeper也像redis、mysql那样有可视化客户端。
8. ZooInspector 客户端连接
-
zookeeper图像化客户端工具的下载地址zookeeper;
-
下载完后解压压缩包,打开地址为ZooInspector\build\zookeeper-dev-ZooInspector.jar的jar包;
-
老规矩,
IP + Port
可以看到 dubbo下的一开始建立的demo中的包名下的providers 和 consumers了,以及zookeeper。至此一个dubbo + zookeeper的案例就搭建起来了~
今天不学习,明天变辣鸡