刚开始学习Dubbo,最近简单实现了Dubbo,Zookeeper,Spring的整合框架,下面写一些自己的理解,如有不足,敬请指点。
说起Dubbo,绕不开zookeeper,提供服务的server,我们定义为provider,消费服务的server,我们定义为consumer。
首先,让我们从大体上了解这几者之间的关系,举一个现实中的例子,zookeeper就像是我爱我家这种房屋中介,在平时,想买房的人consumer和想卖房provider的人互相找不到对方,所以双方约定俗成,找一个第三方登记,以便获取自己需要的信息。而dubbo的功能就像是中介里的服务人员,根据每个人的需求不同,将每个人的具体需求登记在中介的总信息库中。
下面提供了provider的部分spring配置信息:
<!--在 dubbo-admin 或 dubbo-monitor 会显示这个名字,方便辨识身份,是provider还是consumer-->
<dubbo:application name="demotest-provider" owner="programmer" organization="dubbox"/>
<!--使用 zookeeper 注册中心,注意要先开启 zookeeper,此地的ip和port是zookeeper相关属性-->
<dubbo:registry address="zookeeper://localhost:2181"/>
<!-- 用dubbo协议在20880端口暴露服务,我们传递的信息要符合dubbo的protocol协议,定义名字为dubbo1 -->
<dubbo:protocol name="dubbo1" port="20880" />
<!--利用刚刚定义的协议暴露服务 api.DemoService 接口,说明我们实现的是这个服务中所有的私有方法-->
<dubbo:service interface="api.DemoService" ref="demoService" protocol="dubbo1" />
<!--具体实现该接口的 bean,通过spring加载进去进行实现-->
<bean id="demoService" class="provider.DemoServiceImpl"/>
下面提供了consumer
的部分spring配置信息:
<dubbo:application name="demotest-consumer" owner="programmer" organization="dubbox"/> <!--同样适用zookeeper注册中心,由 zookeeper 定时推送,推送配置在zookeeper中完成--> <dubbo:registry address="zookeeper://localhost:2181"/> <!--和zookeeper说,我需要调用zookeeper中注册过的api.DemoService 服务,并指定调用为私有的permissionService方法--> <dubbo:reference id="permissionService" interface="api.DemoService"/> 在这个过程中,绕不开api.DemoService服务,这是自己定义的一个接口,我们需要将其提取出来定义成jar,暴露给在provider端和consumer端。<!--在 dubbo-admin 或 dubbo-monitor 会显示这个名字,方便辨识身份,是provider还是consumer-->
以上都是一些简单搭建,在别的地方看到的Dubbo原理详解,内容需要仔细看看,简单看了看,确实蛮详细的