dubbo 是阿里出品的服务框架, 好奇的童鞋肯定很想立马试用下 , 以下是 getting started 过程.
构建核心模块
git clone git@github.com:alibaba/dubbo.git
这里选择使用 dubbo-2.4.11
版本:
cd ~/dubbo |
但是, dubbo 项目活跃度没那么高了, 许多依赖都不能下载, 需要一个个手工寻找并安装.
比如 opensesame , 这个是super POM, dubbo 依赖于这个POM, 可以手工 install.
因为
code.alibabatech.com
站点停止服务了, 更多相关的issue和说明请戳这里:
https://github.com/alibaba/dubbo/issues/22
http://www.jianshu.com/p/0dde591f21d0/comments/45870
构建 demo 模块
构建demo :
cd /dubbo/dubbo-demo |
坑爹啊, 我的使用的是tag-2.4.11, 但是这个demo的parent版本仍旧是2.4.10, 社区的童鞋太粗心了 ?
这是个小问题, 把版本改回来就行了, 三个模块, 手改也行, 如果要装逼, 有 maven 插件可以帮你.
接下来会使用一些 provider 和 comsumer 的 demo 服务进行测试, 这里先使用 multicast
的服务发现方式, 即 dubbo.properties
中使用以下配置:
dubbo.registry.address=multicast://224.5.6.7:1234 |
dubbo-demo-provider
build 成功后, 启动 dubbo-demo-provider:
cd dubbo-demo-provider/target/ |
dubbo-demo-consumer
启动 dubbo-demo-consumer:
cd dubbo-demo-consumer/target/ |
启动之后, 可以看到成功的 response form provider
日志:
[10:32:20] Hello world0, response form provider: 192.168.156.1:20880 |
dubbo-demo-provider 也收到了 consumer 的请求:
[10:30:40] Dubbo service server started! |
dubbo-monitor-simple
构建和启动 dubbo-monitor-simple ( 这个模块还是有相同的问题, 需要更新 parent 版本到 2.4.11 ) :
构建前修改 jetty 端口, vim src/main/assembly/conf/dubbo.properties
, 因为会跟后面的 dubbo-admin 端口重复 (运行在多台机器的话不需要) :
dubbo.jetty.port=8090 |
构建启动:
cd $DUBBO_HOME |
然后访问http://localhost:8090/
.
启动 dubbo-admin
构建并启动:
cd $DUBBO_HOME/dubbo-admin |
启动时, 发现如下错误 (完整的异常stack在后面附录) :
Error creating bean with name 'server': Error setting property values; nested exception is org.springframework.beans.NotWritablePropertyException: Invalid property 'URIType' of bean class [com.alibaba.citrus.service.uribroker.uri.GenericURIBroker]: Bean property 'URIType' |
解决方法参考这里的issue和博客:
https://github.com/alibaba/dubbo/issues/50
http://www.cnblogs.com/BensonHe/p/4135768.html
下面引用
issues/50
中 用户 stirp 的分享:
stirp commented on May 19, 2015 |
okay, 构建成功后重新运行 webapp, 发现 8080 已经被 dubbo-monitor-simple 使用了, 先停掉 dubbo-monitor-simple.
然后访问http://localhost:8080/
, 默认账号/密码: root/root
登录之后, 可以看到管理界面, dubbo 的功能还是很强大的 :
具体功能就不介绍了, 最好自己进去实际使用一下, 后面博客也会具体涉及到.
停止运行
每个模块在bin目录下都有 start.sh 、 stop.sh、restart.sh 等脚本, 不过脚本中有一些问题, 比如执行 stop.sh 时, 不能停止服务, 提示没有找到 PID.
ERROR: The demo-provider does not started! |
其实这个服务是在运行的, 查一下进程确实存在:
ps -ef | grep demo-provider |
只能debug一下脚本,vim stop.sh
,发现有一行:
PIDS=`ps -f | grep java | grep "$CONF_DIR" |awk '{print $2}'` |
通过debug发现, 在脚本运行的时候, ps -f | grep java | grep "$CONF_DIR" |awk '{print $2}'
并没有获取到PIDS, 只要换成 ps -ef
就可以获取到PIDS了.
注意: 这个脚本在 dubbo-container-api 模块,修改后需要重新 install。
最后
可以发现, dubbo get started 起来不容易, 还是有许多问题要处理的, 但 dubbo 确实是一个优秀的服务框架, 不要灰心, 大家多交流分享一些问题和解决方法, 毕竟开源社区的力量是很强大的.
附录: admin 启动错误:
[ERROR] Failed startup of context org.mortbay.jetty.plugin.Jetty6PluginWebAppContext@489543a6{/,/home/niko/dev/git_repos/github/dubbo/dubbo-admin/src/main/webapp} |