自己通过网上资料整理一个能在本地搭建集群方式的dubbo服务,尽可能把自己可能遇到的问题的解决方法都单独拿出来,分享一下过程。
一、工具
1.dubbo https://github.com/alibaba/dubbo 是git上的源码demo 版本号2.5.5
2.zookeeper 阿里云开源镜像:http://mirrors.aliyun.com/ 阿里开源镜像里版本3.4.9
3.tomcat7 Apache官网 http://mirrors.shuosc.org/apache/tomcat/tomcat-7/v7.0.82/bin/apache-tomcat-7.0.82.tar.gz。
4.jdk8 这个自行选择 8会出现问题 不过下文会有解决办法
二、配置
zookeeper的配置
/zk/zk1
/zk/zk2
/zk/zk3
创建每个目录下conf/zoo.cfg配置文件
/zk/zk1/conf/zoo.cfg 内容如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/admin/Downloads/software/zk/zk1/data
dataLogDir=/home/admin/Downloads/software/zk/zk1/logs
clientPort=2181
server.1=127.0.0.1:2887:3887
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889
/zk/zk2/conf/zoo.cfg 内容如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/admin/Downloads/software/zk/zk1/data
dataLogDir=/home/admin/Downloads/software/zk/zk1/logs
clientPort=2182
server.1=127.0.0.1:2887:3887
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889
/zk/zk3/conf/zoo.cfg 内容如下:
tickTime=2000
initLimit=10
syncLimit=5
dataDir=/home/admin/Downloads/software/zk/zk1/data
dataLogDir=/home/admin/Downloads/software/zk/zk1/logs
clientPort=2183
server.1=127.0.0.1:2887:3887
server.2=127.0.0.1:2888:3888
server.3=127.0.0.1:2889:3889
注:因为是在一台机器上模拟集群,所以端口不能重复,这里用2181~2183,2887~2889,以及3887~3889相互错开。另外每个zk的instance,都需要设置独立的数据存储目录、日志存储目录,所以dataDir、dataLogDir这二个节点对应的目录,需要手动先创建好。
mkdir /zk/zk1/data
mkdir/zk/zk1/log
mkdir/zk/zk2/data
mkdir/zk/zk2/log
mkdir/zk/zk3/data
mkdir/zk/zk3/log
另外在每个zk server配置文件的dataDir所对应的目录下,必须创建一个名为myid的文件,其中的内容必须与zoo.cfg中server.x 中的x相同:
cd zk/zk1/data
dubbo配置
-
dubbo-common 公共逻辑模块,包括Util类和通用模型。
-
dubbo-remoting 远程通讯模块,相当于Dubbo协议的实现,如果RPC用RMI协议则不需要使用此包。
-
dubbo-rpc 远程调用模块,抽象各种协议,以及动态代理,只包含一对一的调用,不关心集群的管理。
-
dubbo-cluster 集群模块,将多个服务提供方伪装为一个提供方,包括:负载均衡、容错、路由等,集群的地址列表可以是静态配置的,也可以是由注册中心下发。
</