一、使用zookeeper作为注册中心
首先需要先安装好zookeeper服务器(解压zookeeper安装包-->进入conf/配置好zoo.cfg,在该文件中指定好data目录-->启动)
provider写法:
一般写在applicationContext-service文件中,需要加入dubbo的约束
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
在xsi:schemaLocation标签中加入
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
1)配置提供方的信息,用于计算依赖关系,名称可以随意,一般需要见名思意
<dubbo:application name="provider-name" />
2)配置注册中心的地址。并指定注册中心的协议格式
<!--此处使用的是zookeeper为注册中心,故protocol值为zookeeper
address写的是对应的zookeeper注册中心的IP地址及zookeeper的端口号,默认为2181 -->
<dubbo:registry protocol="zookeeper" address="192.168.1.12:2181" />
3)配置提供服务的协议信息,如端口号等
<!--协议由提供方提供,消费方被动接受,端口指定可以为任意的,但要保证不冲突-->
<dubbo:protocol name="dubbo" port="20880">
4)声明需要暴露的服务接口
<!--interface写相应的服务的接口类全限定名 ref指的是具体的实现类,
一般写实现类的类名,首字母小写-->
<dubbo:service interface="com.xxx.XxxService" ref="xxxServiceImpl" timeout="30000" />
consumer的写法:
一般写在springmvc.xml文件中,需要加入dubbo的约束
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
在xsi:schemaLocation标签中加入
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
1)配置别名,不要和provider中的一致,做到见名知义
<dubbo:application name="consumer-name"/>
2)配置zookeeper注册中心协议格式和IP地址
<dubbo:registry protocol="zookeeper" address="192.168.1.12:2181"/>
3)引用相应的服务
<dubbo:reference interface="com.xxx.XxxService" id="xxxServiceImpl" />
二、使用dubbo直连的形式
consumer直接知道对应的provider的地址,不需要注册中心,常用在本地调试中。步骤与上面的差不多
provider写法:
一般写在applicationContext-service文件中,需要加入dubbo的约束
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
在xsi:schemaLocation标签中加入
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
<!-- 指定provider的名字 用于计算依赖关系 -->
<dubbo:application name="provider-name" />
<!-- 注册中心的地址 用于使用本地直连,指定地址为空-->
<dubbo:registry address="N/A" />
<!-- 配置协议信息,指定host为本地,指定对应的端口号 -->
<dubbo:protocol host="127.0.0.1" port="20880" />
<!-- 暴露相应的服务 -->
<dubbo:service interface="com.xxx.XxxService" ref="xxxServiceImpl" />
consumer的写法:
一般写在springmvc.xml文件中,需要加入dubbo的约束
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
在xsi:schemaLocation标签中加入
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
<!--配置consumer的名字,不要和provider中的一致-->
<dubbo:application name="consumer-name"/>
<!--配置注册中心的配置,本处使用本地直连,address指定为空-->
<dubbo:registry address="N/A"/>
<!--引用相应的服务,指定URL 直接告诉consumer provider的地址,
注意端口号需要和provider配置的一致-->
<dubbo:reference interface="com.xxx.XxxService"
id="xxxServiceImpl" url="127.0.0.1:20880" />
<!--指定十分钟内不校验服务提供方,用来防止consumer比provider先先启动时报错-->
<dubbo:consumer timeout="600000" check="false" />
注意:有时候没有网络或者网络不好时需要配置一下本地的dubbo.xsd文件
关于dubbo的源码及原理可以参考如下:http://dubbo.apache.org/zh-cn/docs/source_code_guide/service-invoking-process.html