dubbox 2.8.4的配置和使用分析

http://www.2cto.com/kf/201604/496793.html

关于dubbox的核心原理和细节会另开一篇文章来介绍,这篇文章主要是从配置和应用层面来介绍dubbox 2.8.4的使用。

zookeeper的安装

1、准备工作

-下载zookeeper
官方地址:http://apache.fayea.com/zookeeper/zookeeper-3.4.6/
下载版本:zookeeper-3.4.6.tar.gz

-下载JDK
下载地址:<a href="http://www.oracle.com/technetwork/java/javase/downloads/index-%3Ca%20href=" kf="" web="" jsp="" "="" target="_blank" class="keylink" style="color: rgb(51, 51, 51); text-decoration: none;">jsp-138363.html">http://www.oracle.com/technetwork/java/javase/downloads/index-jsp-138363.html
下载版本:JDK1.7.X版本,32位或64位看操作系统
JDK的安装就跳过了,直接百度一大堆,一定记得设置PATH,classpath,JAVA_HOME环境变量

2、解压和安装zookeeper
zookeeper的目录我是放置在/usr/zookeeper-3.4.6/这个位置,所以:
tar -zxvf ./zookeeper-3.4.6.tar.gz
mv ./zookeeper-3.4.6 /usr/zookeeper-3.4.6/

同样的,设置全局环境变量:
export PATH=/usr/zookeeper-3.4.6/bin:$PATH

好的,安装完成了,是不是简单。接下来,我们讲解一下zookeeper的主配置文件。zookeeper的主配置文件所在的地址是:${您的zookeeper安装位置}/conf/zoo.cfg
但是,解压后的zookeeper并没有这个配置文件,有一个名叫zoo_sample.cfg,所以,我们复制一个zoo.cfg文件:
cp /usr/zookeeper-3.4.6/conf/zoo_sample.cfg /usr/zookeeper-3.4.6/conf/zoo.cfg

最后,使用zkServer.sh start命令,启动zookeeper:

?
1
2
3
4
<code class = "hljs r" >[root @vm2 ~]# zkServer.sh start
JMX enabled by default
Using config: /usr/zookeeper- 3.4 . 6 /bin/../conf/zoo.cfg
Starting zookeeper ... STARTED</code>

dubbox

1、准备工作
下载dubbox的源代码
下载地址:https://github.com/dangdangdotcom/dubbox

2、编译源码(此处默认大家会用maven了)
运行maven命令:mvn clean install -Dmaven.test.skip=true
将dubbox的源码打包发布到本地仓库,目的是为了获取:dubbo-admin-2.8.4.war和dubbo-monitor.war

dubbox-admin管理端

懒人下载:http://download.csdn.net/detail/u011282930/9477514

1、部署dubbo-admin管理端,将dubbo-admin-2.8.4.war放置到准备好的tomcat目录
2、修改WEB-INF下dubbo.properties
主要是修改zookeeper的地址
dubbo.registry.address=zookeeper://127.0.0.1:2181
3、运行tomcat
输入地址:http://localhost:8080/dubbo-admin-2.8.4
默认登录账户和密码均为:root
4、登录后首页
这里写图片描述
到此为止,dubbox的后台管理端就配置成功了

dubbox-monitor监控端

懒人下载:http://download.csdn.net/detail/u011282930/9477515
我们对于dubbo的监控用的是改装后的(页面非常好看)

下载dubbox-monitor的源代码
下载地址:http://git.oschina.net/handu/dubbo-monitor

Dubbo-Monitor配置介绍
1、创建数据库 首先创建名称为monitor数据库,编码格式UTF-8。然后将项目sql文件夹下面的create.sql导入到数据库,生成dubbo_invoke表代表成功导入。

2、编辑项目中application.properties,配置如下:

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<code class = "hljs avrasm" >####Dubbo Settings
dubbo.application.name=dubbo-monitor
dubbo.application.owner=handu.com
dubbo.registry.address=zookeeper: //127.0.0.1:2181
dubbo.protocol.port= 6060
 
####Database Settings
db.url=jdbc:mysql: //<database_host>:<database_port>/monitor?prepStmtCacheSize=517&cachePrepStmts=true&autoReconnect=true&characterEncoding=utf-8
db.username=root
db.password=root
db.maxActive= 500
 
####System Manager
manager.username=admin
manager.password=admin</database_port></database_host></code>

3、打包运行项目 执行maven命令:mvn clean package target文件夹下生成的dubbo-monitor.war即为项目部署文件,将其放置到对应服务器目录下,启动服务器即可。例如:tomcat的webapps文件夹下。

4、访问项目 启动web服务器后,访问地址:http://IP:[port]/dubbo-moniotor,采用配置文件中manager.username和manager.password设置值进行登录。
这里写图片描述
5、透过dubbox服务管理端,我们会发现多了一个monitor的服务
这里写图片描述

下文默认大家已经用maven引入相关依赖或者导入相关包了

具体依赖jar包如下图所示
这里写图片描述
maven依赖库

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
<code class = "hljs xml" ><dependency>
             <groupid>com.alibaba</groupid>
             dubbo</artifactid>
             <version> 2.8 . 4 </version>
         </dependency>
         <dependency>
             <groupid>com.alibaba</groupid>
             dubbo-rpc-rest</artifactid>
             <version> 2.8 . 4 </version>
         </dependency>
         <dependency>
             <groupid>com.alibaba</groupid>
             dubbo-rpc-webservice</artifactid>
             <version> 2.8 . 4 </version>
         </dependency>
         <dependency>
             <groupid>com.101tec</groupid>
             zkclient</artifactid>
             <version> 0.2 </version>
         </dependency>
 
         <dependency>
             <groupid>org.apache.zookeeper</groupid>
             zookeeper</artifactid>
             <version> 3.3 . 6 </version>
             <exclusions>
                 <exclusion>
                     <groupid>log4j</groupid>
                     log4j</artifactid>
                 </exclusion>
             </exclusions>
         </dependency>
         <dependency>
             <groupid>log4j</groupid>
             log4j</artifactid>
             <version> 1.2 . 16 </version>
         </dependency></code>

服务提供者实例开发

1、定义一个Service接口和相关实现类
定义一个接口,IUserService.java

?
1
2
3
4
5
<code class = "hljs cs" > package service;
public interface IUserService {
     public void sayHello();
}
</code>

实现这个接口,UserService.java

?
1
2
3
4
5
6
7
8
9
10
<code class = "hljs java" > package service;
public class UserService implements IUserService {
 
     @Override
     public void sayHello() {
         System.err.println( "HELLO WORLD!" );
     }
 
}
</code>

2、配置这个接口的xml文件,dubbo-provider.xml

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
<code class = "hljs xml" >
        http: //www.springframework.org/schema/beans/spring-beans.xsd  
        http: //code.alibabatech.com/schema/dubbo  
        http: //code.alibabatech.com/schema/dubbo/dubbo.xsd">
     <dubbo:application name= "hello-world-app" owner= "whb" ></dubbo:application>
     <!--zookeeper注册中心 -->
     <dubbo:registry address= "zookeeper://172.17.84.84:2181" ></dubbo:registry>
     <!--使用multicast广播注册中心暴露服务地址 -->
     <!--<dubbo:registry address= "multicast://10.57.41.19:1234" /> -->
     <dubbo:protocol name= "dubbo" port= "20880" ></dubbo:protocol>
     <!-- 配置监控的服务地址和IP-->
     <dubbo:monitor address= "127.0.0.1:7070" ></dubbo:monitor>
     <!-- 发布这个服务 -->
     <dubbo:service connections= "100" interface = "service.IUserService" protocol= "dubbo" ref= "userService" timeout= "2000" ></dubbo:service>      
     <!-- 和本地bean一样实现服务 -->
     <bean class = "service.UserService" id= "userService" ></bean>
</beans>  </code>

3、运行发布我们的接口,LuncherProvider.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
<code class = "hljs cs" > package demo;
import org.springframework.context.ApplicationContext;
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
public class LuncherProvider {
     public static void main(String[] args) throws InterruptedException {
         LuncherProvider luncher = new LuncherProvider();
         luncher.start();
         Thread.sleep( 1000 * 60 * 10 );
     }
 
     void start() {
         String configLocation = "classpath*:/dubbo-provider.xml" ;
         ApplicationContext context = new ClassPathXmlApplicationContext(
                 configLocation);
         String[] names = context.getBeanDefinitionNames();
         System.out.print( "Beans:" );
         for (String string : names)
             System.out.print(string + "," );
         System.out.println();
     }
}</code>

控制台输出如下内容,为成功
这里写图片描述
通过dubbox管理端来查看我们的服务,通过下图,我们可以看到我们的服务已经注册到zookeeper了
这里写图片描述

消费者实例开发

如何调用我们发布的服务呢?
1、定义一个一模一样的接口,IUserService.java

?
1
2
3
4
5
6
<code class = "hljs cs" > package service;
 
public interface IUserService {
     public void sayHello();
}
</code>

2、配置这个接口调用信息,

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<code class = "hljs xml" >
        http: //www.springframework.org/schema/beans/spring-beans.xsd  
        http: //code.alibabatech.com/schema/dubbo  
        http: //code.alibabatech.com/schema/dubbo/dubbo.xsd">
          <!--消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 --> 
          <dubbo:application name= "consumer-of-helloworld-app" ></dubbo:application> 
          <!--zookeeper注册中心 --> 
          <dubbo:registry address= "172.17.84.84:2181" protocol= "zookeeper" ></dubbo:registry>  
          <!--使用multicast广播注册中心暴露的服务地址 --> 
          <!--<dubbo:registryaddress= "multicast://10.57.41.19:1234" /> --> 
           <!--         <dubbo:monitor address= "127.0.0.1:7070"  /> -->
           <!-- 生成远程服务代理,可以和本地bean一样使用IUserService--> 
          <dubbo:reference id= "userService" interface = "service.IUserService" ></dubbo:reference> 
</beans>  </code>

3、测试调用服务的代码,LuncherConsumer.java

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<code class = "hljs java" > package demo;
 
 
 
import org.springframework.context.ApplicationContext; 
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
import service.IUserService; 
 
 
public class LuncherConsumer  { 
          public static void main(String[] args) throws InterruptedException{ 
                    LuncherConsumer luncher= new LuncherConsumer();
                    String configLocation= "classpath*:/dubbo-consumer.xml"
                    ApplicationContext context = new ClassPathXmlApplicationContext(configLocation); 
                    IUserService us=(IUserService) context.getBean( "userService" ); 
                    String[] names=context.getBeanDefinitionNames(); 
                    us.sayHello();
         
}  </code>

观察服务端的控制台,会输出“HELLO WORLD”
这里写图片描述

至此,dubbox的配置和使用就成功了!


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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值