Dubbo简介
Dubbo是阿里巴巴开源的一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务化治理方案。
Dubbo提供基于接口的透明的远程过程调用,支持多种协议,包括Dubbo、RMI、WebService、Hessian、Http、Thrift、Redis、Memcached。
Dubbo基于注册中心的目录服务,使服务消费方能动态的查找服务提供方,支持平滑的减少或增加服务器。
Dubbo支持软负载均衡、失败容错、地址路由、动态配置、服务降级等集群功能。
实践环境
win7操作系统+Dubbo+Spring+Zookeeper+Dubbo-admin,Zookeeper作为服务注册中心,dubbo-admin是dubbo的管理控制台。
Zookeeper安装
到官网 http://apache.org/dist/zookeeper 下载Zookeeper,用的是3.4.6版本。解压下载包并复制conf目录下的zoo_sample.cfg文件,并重命名为:zoo.cfg。
zoo.cfg文件参数说明参考:http://www.cnblogs.com/xiohao/p/5541093.html
启动zk,运行bin目录下zkServer.cmd,(linux:zkServer.sh)
安装dubbo-admin应用
下载dubbo-admin应用(本例使用2.4.1版本):https://github.com/alibaba/dubbo
查看dubbo-admin的WEB-INF目录的dubbo.properties文件,里面配置连接zk的地址和管理员密码,如:
dubbo.registry.address=zookeeper://127.0.0.1:2181
把dubbo-admin的war包部署到tomcat的ROOT目录,并启动tomcat,访问:http://localhost:8080,输入管理员账号和密码就可以看到管理控制台。
定义服务接口
定义服务接口HelloService,根据dubbo用户指南,该接口需单独打包,在服务提供方和消费方共享。
创建服务提供方应用
本例中服务提供方为一个spring应用,实现HelloService接口。
导入依赖包:根据dubbo用户指南,缺省依赖包:log4j、spring、javassist、netty,由于本例使用zk作为服务注册中心,所以也需导入zk的jar包和zkclient.jar。
实现HelloService接口
配置dubbo服务
dubbo:protocol:指定协议,accepts设置最大连接数
dubbo:registry:服务注册地址
dubbo:service:发布服务,指定接口全称和引用接口实现定义的bean
启动服务提供方应用,可以发布到tomcat,也可以使用main函数启动。
创建服务消费方应用
本例中服务消费方为一个基于spring的web应用,调用服务提供方的HelloService服务。
导入依赖包:与服务提供方相同
调用远程服务:使用Spring MVC定义一个controller,返回的数据格式为json
注册服务消费方:
dubbo:registry:注册地址
timeout:指定服务调用的超时时长
dubbo:reference:引用服务
启动服务消费方应用,访问:http://localhost:8082/dubbo-consumer/sayHello?name=zcl
可以在dubbo的管理控制台中看到服务提供方和消费方
这只是dubbo+zk的一个简单的入门实践,后面会系列介绍dubbo的各种协议实现以及集群部署等。