写在最前面
本人是dubbo的初学者,本文是前几个星期写的,对一些概念的理解摘自其他文章,未写明出处,现在找不到各自的原文了,深表歉意。
dubbo是什么?
- 远程服务调用(rpc)的分布式框架
* 什么是rpc?与restful区别? 参考: https://www.cnblogs.com/lilixin/p/5724976.html
为什么要用dubbo?
- 为什么使用dubbo以及dubbo的起源: https://blog.csdn.net/cmj6706/article/details/78928801
- dubbo在应用之间提供和使用服务的时候,没有了地址的概念,而是换成了服务名,这样一方面省却了变化地址的问题,另一个方面也省却了增加或者减少地址的麻烦,因为对于dubbo来说,只需要增或减相关的服务即可。
如何使用dubbo?
要想实现dubboServer和dubboClient之间完成调用,首先服务端和客户端需要一个接口来公用。可以有两种方式
1) 接口写在一个应用中,服务端和客户端都对这个应用进行引用
2) 更多的时候,两个应用是不太可能引用同一个应用。这个时候应该把接口以jar包的形式给Server和Client共同使用
然后,Server对jar包中的接口进行实现,并且向dubbo进行注册,而Client端调用jar包中的接口中的方法名,dubbo会去自动的寻找这个由Server端注册的方法的实现。
dubbo包括哪几部分?
- 如图:
- 节点角色说明: 详情参看http://dubbo.apache.org/books/dubbo-user-book/preface/architecture.html 1.3架构
测试机zookeeper(单机模式)的连接方式
zk在dubbo起到什么作用: 注册服务,负载均衡
如果想安装到mac本机上,请参考: https://www.cnblogs.com/xinxiucan/p/7245647.html
如何搭建dubbo?(以源代码中demo为例在macbook pro上搭建)
- 环境准备:
- java 1.8
- maven 3.5.3
- eclipse
- zookeeper
- 下载dubbo代码
- wget https://github.com/alibaba/dubbo/archive/dubbo-2.6.0.zip
- unzip dubbo-2.6.0.zip
- cd dubbo-dubbo-2.6.0/
- 执行编译命令: mvn clean install -DskipTests=true 等其编译完成
- 修改demo中provider和consumer xml的zookeeper地址:
编辑文件:dubbo-demo/dubbo-demo-provider/src/main/resources/META-INF/spring/dubbo-demo-provider.xml和dubbo-demo/dubbo-demo-consumer/src/main/resources/META-INF/spring/dubbo-demo-consumer.xml中dubbo的注册中心信息:
<dubbo:registry address="zookeeper://xxxxxxxxxx:2181"/>
注: zookeeper地址应为自己的zookeeper地址。
- 把provider和consumer导入eclipse
具体操作是:
file -> import-> General->Existing Projects into Workspace -> next->Select root directory点击后面Browse 选择dubbo-demo/dubbo-demo-provider目录 -> finish。
导入consumer操作相同。
- 运行provider和consumer:
在左侧找到Provider.java文件,右键 -> run as -> java application。
启动consumer操作相同。
启动都启动之后,如果没报错,就会在eclipse下方的Console框中看到consumer调用provider方法时打印的信息。
消费者打印信息:
生产者打印信息:
至此demo运行OK。
provider和consumer可以打成jar包,然后通过命令运行。
打成jar包之前需要在provider根目录的pom.xml加入build信息:
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>1.7</source>
<target>1.7</target>
</configuration>
</plugin>
<plugin>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-maven-plugin</artifactId>
<executions>
<execution>
<goals>
<goal>repackage</goal>
</goals>
</execution>
</executions>
</plugin>
</plugins>
</build>
然后在provider和consumer跟目录使用命令:
mvn clean install -e -U进行打包,打好的包在target目录下。此时就可以执行运行(按道理,但是有问题。。。)
nohup java -jar dubbo-demo-consumer-2.6.0.jar &
nohup java -jar dubbo-demo-provider-2.6.0.jar &
不过现在还有问题没搞定:
1 provider打成jar包,本地mac运行起来后,consumer无法调用,并且30秒左右会从zk和监控中消失;
2 consumer打好jar包,在mac本地可以正常运行,放到测试机上,无法运行。报错时获取本地ip为null。
dubbo 管理控制台安装
管理控制台为内部裁剪版本,开源部分主要包含:路由规则,动态配置,服务降级,访问控制,权重调整,负载均衡,等管理功能。
按照此文档即可:
http://dubbo.apache.org/books/dubbo-admin-book/install/admin-console.html
管理中心启动后,会看到我们刚才运行的provider和consumer服务。
dubbo 监控中心安装(非必须)
监控中心负责统计各服务器调用次数,调用时间等,统计先在内存汇总后每分钟一次发送到监控中心服务器,并以报表展示。
按照此文档即可:
http://blog.51cto.com/4925054/2113903
监控中心启动后,会看到我们刚才运行的provider和consumer服务
dubbo官方文档
本文介绍的仅仅是最简单的介绍,深入了解和学习,请看:
使用文档:
http://dubbo.apache.org/books/dubbo-user-book/
开发文档:
http://dubbo.apache.org/books/dubbo-dev-book/