初窥Dubbo

关于RPC框架,以前了解过一些,最近刚好有时间,看了下淘宝的dubbo框架。

首先是环境搭建:

git地址:https://github.com/alibaba/dubbo

发现从git上下载下来的Master版本,始终没有找不到dubbo-parent 这个jar,可能是项目结构调整导致的吧。

	<parent>
		<groupId>com.alibaba</groupId>
		<artifactId>dubbo-parent</artifactId>
		<version>2.5.4-SNAPSHOT</version>
	</parent>

解决办法:加入下面镜像

<mirror>
<id>ibiblio.org</id>
<name>ibiblio Mirror of http://repo1.maven.org/maven2/</name>
<url>http://mirrors.ibiblio.org/pub/mirrors/maven2</url>
<mirrorOf>*</mirrorOf>
</mirror>

<mirror>
<id>lvu.cn</id>
<name>lvu.cn</name>
<url>http://lvu.cn/nexus/content/groups/public</url>
<mirrorOf>*</mirrorOf>
</mirror>

此过程可以参考:http://www.cnblogs.com/pengkw/p/3674730.html


接下来就是导入dubbo-demo工程,导入了dubbo-demo-provider 和dubbo-demo-consumer两个工程。

修改dubbo.properties配置文件

注册中心使用:dubbo.registry.address=zookeeper://127.0.0.1:2181

我在本机部署了个单点的zookeeper。


启动provider:ok

06/16 08:02:35:035 CST] main  INFO zookeeper.ZooKeeper: Initiating client connection, connectString=127.0.0.1:2181 sessionTimeout=30000 watcher=org.I0Itec.zkclient.ZkClient@239a0feb
[16/06/16 08:02:35:035 CST] main-SendThread()  INFO zookeeper.ClientCnxn: Opening socket connection to server /127.0.0.1:2181
[16/06/16 08:02:35:035 CST] main-SendThread(localhost:2181)  INFO zookeeper.ClientCnxn: Socket connection established to localhost/127.0.0.1:2181, initiating session
[16/06/16 08:02:35:035 CST] main-SendThread(localhost:2181)  INFO zookeeper.ClientCnxn: Session establishment complete on server localhost/127.0.0.1:2181, sessionid = 0x15551b70aa10022, negotiated timeout = 30000
[16/06/16 08:02:35:035 CST] main-EventThread  INFO zkclient.ZkClient: zookeeper state changed (SyncConnected)
[16/06/16 08:02:35:035 CST] main  INFO zookeeper.ZookeeperRegistry:  [DUBBO] Register: dubbo://192.168.6.33:20880/com.alibaba.dubbo.demo.DemoService?anyhost=true&application=demo-provider&dubbo=2.5.4-SNAPSHOT&generic=false&interface=com.alibaba.dubbo.demo.DemoService&methods=sayHello&pid=60478&side=provider×tamp=1466078554778, dubbo version: 2.5.4-SNAPSHOT, current host: 127.0.0.1
[16/06/16 08:02:35:035 CST] main  INFO zookeeper.ZookeeperRegistry:  [DUBBO] Subscribe: provider://192.168.6.33:20880/com.alibaba.dubbo.demo.DemoService?anyhost=true&application=demo-provider&category=configurators&check=false&dubbo=2.5.4-SNAPSHOT&generic=false&interface=com.alibaba.dubbo.demo.DemoService&methods=sayHello&pid=60478&side=provider×tamp=1466078554778, dubbo version: 2.5.4-SNAPSHOT, current host: 127.0.0.1
[16/06/16 08:02:35:035 CST] main  INFO zookeeper.ZookeeperRegistry:  [DUBBO] Notify urls for subscribe url provider://192.168.6.33:20880/com.alibaba.dubbo.demo.DemoService?anyhost=true&application=demo-provider&category=configurators&check=false&dubbo=2.5.4-SNAPSHOT&generic=false&interface=com.alibaba.dubbo.demo.DemoService&methods=sayHello&pid=60478&side=provider×tamp=1466078554778, urls: [empty://192.168.6.33:20880/com.alibaba.dubbo.demo.DemoService?anyhost=true&application=demo-provider&category=configurators&check=false&dubbo=2.5.4-SNAPSHOT&generic=false&interface=com.alibaba.dubbo.demo.DemoService&methods=sayHello&pid=60478&side=provider×tamp=1466078554778], dubbo version: 2.5.4-SNAPSHOT, current host: 127.0.0.1
[16/06/16 08:02:35:035 CST] main  INFO container.Main:  [DUBBO] Dubbo SpringContainer started!, dubbo version: 2.5.4-SNAPSHOT, current host: 127.0.0.1
[2016-06-16 20:02:35] Dubbo service server started!

启动consumer,发现报错!!!

Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'demoService': FactoryBean threw exception on object creation; nested exception is java.lang.IllegalStateException: Failed to check the status of the service com.alibaba.dubbo.demo.DemoService. No provider available for the service com.alibaba.dubbo.demo.DemoService from the url zookeeper://127.0.0.1:2181/com.alibaba.dubbo.registry.RegistryService?anyhost=true&application=demo-consumer&check=false&dubbo=2.5.4-SNAPSHOT&generic=false&interface=com.alibaba.dubbo.demo.DemoService&loadbalance=roundrobin&methods=sayHello&monitor=dubbo%3A%2F%2F127.0.0.1%3A2181%2Fcom.alibaba.dubbo.registry.RegistryService%3Fapplication%3Ddemo-consumer%26dubbo%3D2.5.4-SNAPSHOT%26pid%3D30625%26protocol%3Dregistry%26refer%3Ddubbo%253D2.5.4-SNAPSHOT%2526interface%253Dcom.alibaba.dubbo.monitor.MonitorService%2526pid%253D30625%2526timestamp%253D1465960778368%26registry%3Dzookeeper%26timestamp%3D1465960778358&owner=william&pid=30625&side=consumer×tamp=1465960778280 to the consumer 192.168.6.33 use dubbo version 2.5.4-SNAPSHOT
	at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.doGetObjectFromFactoryBean(FactoryBeanRegistrySupport.java:173)
	at org.springframework.beans.factory.support.FactoryBeanRegistrySupport.getObjectFromFactoryBean(FactoryBeanRegistrySupport.java:102)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getObjectForBeanInstance(AbstractBeanFactory.java:1467)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:304)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:191)
	at org.springframework.beans.factory.support.BeanDefinitionValueResolver.resolveReference(BeanDefinitionValueResolver.java:328)
	... 17 more

这个蛋疼的问题,纠结了好久,发现是我机器安装了vpn,导致dubbo获取本机ip不对。去掉vpn验证ok


这样dubbo的环境算是搭建起来了。


贴上dubbo的经典架构图:

  Dubbo的总体架构如下图所示:

    

节点角色说明:

  • Provider: 暴露服务的服务提供方。
  • Consumer: 调用远程服务的服务消费方。
  • Registry: 服务注册与发现的注册中心。
  • Monitor: 统计服务的调用次调和调用时间的监控中心。
  • Container: 服务运行容器。

参考:http://dubbo.io/Home-zh.htm

http://www.cnblogs.com/pengkw/p/3674730.html




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值