最近在练习dubbo时候:
一、当不用注册中心时:
server端:
1. 建一个父工程,所src 目录删除,pom中加入<dependencyManagement> 把所有的依赖包管理起来。
这样在子工程中引入依赖时,不用写依赖的版本。
2.然后再建两个module 工程,
api-interface:定义好接口函数。
api-provider: 实现接口函数,在resource中建 目录 META-INF/spring/application.xml (模板从dubbo官网copy,把注册中心配置为N/A) 用于dubbo的服务发布。
note: dubbo 会默认启动spring 窗口,log4j 容器,还有一个xx容器。 默认会启动 META-INF/spring/*.xml中定义的容器。
在main()中调用Main.main(new string[]{"spring", "log4j"}). 这样就完成了dubbo服务的发布。
url: dubbo://192.168.110.10:2181
这一步比较顺利。
client: (不用注册中心)
pom中同样加入dubbo的依赖,注意这个没有父工程,要写版本。
在resource下加入application.xml 配置好(从上边provider中copy, 去掉不要的部分), 然后中ClassPathXmlApplicationContext 初始化容器,再getBean(“xxService”), 这样就完成了dubbo的远程客户端调用 。
二、增加zookeeper 注册中心
这一步搞了一晚上,其实很简单。
1. 要搭建好zookeeper的环境,开始我用的kafka自带的zookeeper, 打开了一个,在Provider.xml中加入<dubbo:registry address="zookeeper://192.168.110.10" 发现provider不能正常启动。
随后我又把三台zookeeper的集群打开,在Provider.xml中加入<dubbo:registry address="zookeeper://192.168.110.10:2181?backup=192.168.110.12:2181,192.168.110.14:2181“ .../>
发现还是不行。
然后又单独下载了zookeeper 3.4的版本,想着老一点要稳定点。结果发现zookeeper 以正常启用,但是provider 工程还是连接报错,显示connect refused.
百度了下,可以有版本问题,我查看了下我本地curator 包为v4.0.0.0, 说是和zookeeper 3.5是完美match, 又重新下载了zookeeper 3.5 试了下。安装成功后,启动成功,但是查询./zkServer.sh status 总是显示 没有running.
后边看日志,发现是3.4 之前安装版本的遗留data, 解决方法把zoo.cfg中的 dataDir 改一下,zookeeper 启动成功。
2.用dubbo client 连接server的服务,调用 成功。
总结:
用各种中间件,一定要确认版本,这个已经是第二次入坑了。
然后就是看日志,确认状态。比如 zookeeper 的日志,或者查zkCli.sh 登录zk 查看启动状态。
经此,以后应该更加细心点。