Dubbo demo 本地搭建
由于Dubbo需要注册中心,这里使用zookeeper 来做注册中心,那就需要一个zookeeper集群,OK,下面就是搭建zookeeper 集群步骤:
- 找到zookeeper的配置文件zoo_sample.cfg, 重命名为 zoo.cfg(zookeeper默认加载zoo.cfg),配置文件常用的配置项:
tickTime:这个时间是作为 Zookeeper 服务器之间或客户端与服务器之间维持心跳的时间间隔,也就是每个 tickTime 时间就会发送一个心跳。
dataDir:顾名思义就是 Zookeeper 保存数据的目录,默认情况下,Zookeeper的日志文件是在bin目录下,有一个zookeeper.out文件。
clientPort:这个端口就是客户端连接 Zookeeper 服务器的端口,Zookeeper 会监听这个端口,接受客户端的访问请求。伪集群模式下,这个端口需要配置成不同的。如果是多台虚拟机或者服务器下,则无需更改。 - 修改dataDir 为自己的路径,然后新建myid文件, 这里面保存的是zookeeper server用于标识自己的唯一id。数值在1 – 255都可以。
- 开始配置zookeeper集群,进入zoo.cfg,在下方添加
server.serverID=serverIp:serverPort:votePort 这里是多台机器,就要将各台服务器的相应配置写上,注意,每台服务器的配置文件都需要写。
启动,zookeeper集群搭建完毕。
下面就开始创建dubbo服务,这里使用的是dubbo官网上的案例
在搭建服务的过程中出现了以下几个问题:
- provider无法注册到zookeeper中,如下:
zookeeper.KeeperException$UnimplementedException: KeeperErrorCode = Unimplemented for {root.path},原因是Zookeeper的版本与curator的版本不匹配造成的,可以降低curator版本解决 - 新版的dubbo 启动会报一个 找不到 EventLoopGroup的错,将netty 依赖写上即可。
- 注意provider.xml
和 consumer.xml
这两个地方的包路径需要一致,不然consumer找不到provider注册到zookeeper集群中的服务。
可以看一下zookeeper集群中的服务,它是直接把这个路径给注册进去了。
dubbo demo 搭建结束!
附:Maven 依赖
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.6.7</version>
</dependency>
<dependency>
<groupId>io.netty</groupId>
<artifactId>netty-all</artifactId>
<version>4.1.32.Final</version>
</dependency>
<dependency>
<groupId>org.apache.curator</groupId>
<artifactId>curator-framework</artifactId>
<version>2.12.0</version>
</dependency>