dubbo
读音 |ˈdʌbəʊ| !不是[dubəʊ]!
环境:
centos6.9+jdk1.8_172+zookeeper3.4.6+dubbo2.6.2
官网
参考手册
http://dubbo.apache.org/books/dubbo-user-book/
架构(图片来源于官网)
0 provider和container启动
1 provider和container启动后注册到注册中心
2 consumer订阅注册中心
3 如果有合适的服务,注册中心通知consumer,返回地址列表
4 consumer获得通知后调用相应服务
5 monitor 监控container,provider和consumer
更详细的架构说明参考官方手册
http://dubbo.apache.org/books/dubbo-user-book/preface/architecture.html
使用前提:
jdk1.6或者以上
maven3或者以上
maven依赖:
1 <dependency> 2 <groupId>com.alibaba</groupId> 3 <artifactId>dubbo</artifactId> 4 <version>${dubbo.version}</version> #当前是2.6.2 5 </dependency>
管理控制台安装 (参考:https://github.com/apache/incubator-dubbo-ops)
step 1、git clone https://github.com/dubbo/dubbo-ops.git /var/tmp/dubbo-ops
step 2、mvn clean package
说明:
1)dubbo admin 是一个spring boot工程,直接下命令 java -jar xxx.jar 运行。注意需要观察tomcat 的端口号,该工程是7001,必须在centos开放防火墙端口号。
首先启动zookeeper!
访问地址:http://ip:7001
2)dubbo monitor dubbo registry
解压dubbo-ops\dubbo-monitor-simple\target目录中的dubbo-monitor-simple-2.0.0-assembly.tar.gz 和dubbo-ops\dubbo-registry-simple\target目录中的dubbo-registry-simple-2.0.0-assembly.tar.gz
运行脚本程序
3)monitor和 registry好像不好使。。。。一直在starting...................??????
4)不建议参考官方手册安装控制台:
http://dubbo.apache.org/books/dubbo-admin-book/install/admin-console.html
官方参考手册是用tomcat,但是git到的代码却是spring boot 2.0.2的,已经内置了tomcat。。。不知道为什么还建议使用tomcat!?而且手册的war包版本写的是2.0.0,但是mvn clean package出来的却是jar包,版本号是0.0.1。dubbo在孵化中,那么手册是不是n年不更新了。。。
5)几点指出
实验:
dubbo-demo
环境:
centos6.8,dubbo2.6.2,zookeeper3.4.6,jdk1.8_172,chrome
工程结构:
dubbo-demo的pom.xml
1 <project xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 2 xmlns="http://maven.apache.org/POM/4.0.0" 3 xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/maven-v4_0_0.xsd"> 4 <modelVersion>4.0.0</modelVersion> 5 6 <groupId>com.alibaba</groupId> 7 <artifactId>dubbo-demo</artifactId> 8 <version>2.6.2-SNAPSHOT</version> 9 <packaging>pom</packaging> 10 <name>dubbo1</name> 11 12 <modules> 13 <module>dubbo-demo-api</module> 14 <module>dubbo-demo-provider</module> 15 <module>dubbo-demo-consumer</module> 16 </modules> 17 18 <properties> 19 <java.version>1.8</java.version> 20 </properties> 21 22 <dependencies> 23 <dependency> 24 <groupId>com.alibaba</groupId> 25 <artifactId>dubbo</artifactId> 26 <version>2.6.2</version> 27 </dependency> 28 29 <dependency> 30 <groupId>org.apache.curator</groupId> 31 <artifactId>curator-recipes</artifactId> 32 <version>2.5.0</version> 33 </dependency> 34 35 <dependency> 36 <groupId>org.springframework</groupId> 37 <artifactId>spring-core</artifactId> 38 <version>4.3.18.RELEASE</version> 39 </dependency> 40 41 <dependency> 42 <groupId>org.springframework</groupId> 43 <artifactId>spring-context</artifactId> 44 <version>4.3.18.RELEASE</version> 45 </dependency> 46 47 <dependency> 48 <groupId>log4j</groupId> 49 <artifactId>log4j</artifactId> 50 <version>1.2.17</version> 51 </dependency> 52 </dependencies> 53 </project>
依赖包:
dubbo-demo-consumer的dubbo-demo-provider.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" 4 xmlns="http://www.springframework.org/schema/beans" 5 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd 6 http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"> 7 8 <!-- provider's application name, used for tracing dependency relationship --> 9 <dubbo:application name="demo-provider"/> 10 11 <!-- use multicast registry center to export service --> 12 <dubbo:registry protocol="zookeeper" address="192.168.0.106:2181"/> 13 14 <!-- use dubbo protocol to export service on port 20880 注:在虚拟机centos6.8开放端口--> 15 <dubbo:protocol name="dubbo" port="20880"/> 16 17 <!-- service implementation, as same as regular local bean --> 18 <bean id="demoService" class="com.alibaba.dubbo.demo.provider.DemoServiceImpl"/> 19 20 <!-- declare the service interface to be exported --> 21 <dubbo:service interface="com.alibaba.dubbo.demo.DemoService" ref="demoService" timeout="1200000"/> 22 23 </beans>
dubbo-demo-provider的dubbo-demo-consumer.xml
1 <?xml version="1.0" encoding="UTF-8"?> 2 <beans xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 3 xmlns:dubbo="http://dubbo.apache.org/schema/dubbo" 4 xmlns="http://www.springframework.org/schema/beans" 5 xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-4.3.xsd 6 http://dubbo.apache.org/schema/dubbo http://dubbo.apache.org/schema/dubbo/dubbo.xsd"> 7 8 <!-- consumer's application name, used for tracing dependency relationship (not a matching criterion), 9 don't set it same as provider --> 10 <dubbo:application name="demo-consumer"/> 11 12 <!-- use multicast registry center to discover service --> 13 <dubbo:registry protocol="zookeeper" address="192.168.0.106:2181"/> 14 15 <!-- generate proxy for the remote service, then demoService can be used in the same way as the 16 local regular interface --> 17 <dubbo:reference id="demoService" check="false" interface="com.alibaba.dubbo.demo.DemoService"/> 18 19 </beans>
开放端口2181,20880,7001
启动zookeeper
启动dubbo-admin(spring boot工程)
启动Chrome,访问:http://192.168.0.106:7001
启动eclipse
先运行Provider
再运行Consumer
查看“服务治理”》“服务”》“提供者”
查看“服务治理”》“服务”》“消费者”