这里有2个Demo,分别是
- Dubbox 2.8.4 + Spring3 + Dubbo协议
- Dubbox 2.8.4 + Spring3 + Hessian协议
两个Demo都可以成功运行。使用了gradle Gretty插件,提供了内嵌的Jetty容器,运行demo不用安装额外的Tomcat或jetty等servlet容器。
使用方法如下:
1. 运行Zookeeper
安装,配置Zookeeper,然后启动Zookeeper的server。Install, configure and sratr Zookeeper server
2. 运行Provoder
进入provider
目录,执行gradle appRun
。会启动web容器并运行应用。
3. 运行Consumer
进入consumer
目录,执行gradle appRun
。
浏览器中访问http://localhost:8082/hello
或http://localhost:8082/user
.其中/hello
是传递简单String作为参数,/user
是传递自定义类型User作为接口参数。
一些问题:
- 现在是在xml中一个个声明dubbo暴露的服务(
dubbo:service
)和依赖的远程引用(dubbo:reference
)。这方式显然不好,最好是使用spring的自动扫描和自动装配。Dubbo提供了这样的annotation,比如@Service和@Reference。当使用的时候,出现了一些问题。客户端调用IHelloService的sayHello方法时,结果调用了远程服务IUserService的sayHello方法去了,抛出异常IUserService没有提供sayHello方法。 - 如果一个服务有部署多个实例,那么服务暴露的端口是不一样的。如何灵活配置。hessian的端口是要和web容器暴露的端口一致的。
=======================================================
Dubbo | Dubbox | |
---|---|---|
Spring 版本 | 2 | 3 |
是否维护 | no | dangdang |
Dubbo和Dubbox在配置方面是否有差异,2者兼容性如何?
Zookeeper配置
- Hession
- HTTP
- REST
- Dubbo
协议 | 传输协议 | 数据格式 | 性能 | 跨平台/语言 |
---|---|---|---|---|
Hession | http | 二进制 | ||
Dubbo | TCP | 二进制 | ||
REST | http | text |
Dubbo提供了Admin的监控中心,研究它的使用。如何部署,能提供什么数据的监控。
使用Zookeeper做配置管理
如何更Zookeeper中的数据,是否需要有一个配置管理界面可以管理更新数据,然后Zookeeer会将更改通知到各个Zookeeper节点。
Zookeeper节点接收到更新通知,节点所在的应用如何去使用新的数据。比如,如果应用只是在第一次启动时去读Zookeeper节点的数据,然后缓存。这样即使Zookeeper节点接收到通知,更新了数据,应用依然读的是缓存中的老数据,所以需要添加一个layer来管理这些数据的更新。