dubbox 2.8.4的配置和使用分析
来源:互联网 发布:缸中之脑 知乎 编辑:程序博客网 时间:2024/05/22 14:18
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:
<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,配置如下:
<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依赖库
<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
<code
class
=
"hljs cs"
>
package
service;
public
interface
IUserService {
public
void
sayHello();
}
</code>
实现这个接口,UserService.java
<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
<code
class
=
"hljs xml"
>
<beans xmlns=
"http://www.springframework.org/schema/beans"
xmlns:dubbo=
"http://code.alibabatech.com/schema/dubbo"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemalocation="http://www.springframework.org/schema/beans
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
<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
<code
class
=
"hljs cs"
>
package
service;
public
interface
IUserService {
public
void
sayHello();
}
</code>
2、配置这个接口调用信息,
<code
class
=
"hljs xml"
>
<beans xmlns=
"http://www.springframework.org/schema/beans"
xmlns:dubbo=
"http://code.alibabatech.com/schema/dubbo"
xmlns:xsi=
"http://www.w3.org/2001/XMLSchema-instance"
xsi:schemalocation="http://www.springframework.org/schema/beans
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
<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的配置和使用就成功了!
- dubbox 2.8.4的配置和使用分析
- dubbox 2.8.4的配置和使用
- dubbox 2.8.4的配置和使用
- dubbox 2.8.4的配置和使用
- dubbox 2.8.4的配置和使用
- dubbox的使用和安装
- dubbox-admin-2.8.4和dubbox-monitor安装
- dubbo/dubbox 和SpringMVC 使用
- Dubbo和Dubbox简单使用
- dubbox配置
- 关于dubbox-2.8.4血与泪的总结
- dubbox 的各种管理和监管
- dubbox 的各种管理和监管
- Dubbox的介绍和简单示例
- Dubbox的介绍和简单示例
- 在DubboX中使用高效的Java序列化(Kryo和FST)
- dubbox拦截器配置
- logstash日志分析的配置和使用
- spring注入:设值注入
- Class.getResource和ClassLoader.getResource的区别分析
- linux下tomcat发布网站验证码获取不到
- System函数处理路径有空格问题函数
- spring注入:构造注入
- dubbox 2.8.4的配置和使用分析
- 设计模式之9 - 装饰模式Decorator
- 巧用第三方快速开发Android App 热门第三方SDK及框架
- Zookeeper入门
- 微信支付 支付授权目录 多域名处理 代理转发
- 数据结构家族谱问题(map)
- 设计模式之10 - 门面模式Facade
- type为text的input标签的相关事件对比
- 哈理工OJ 2256 南西群岛海域·冲之岛近海(线段树区间更新+前缀和优化)