文档章节

Dubbo与Zookeeper、SpringMVC整合和使用

火龙战士
 火龙战士
发布于 2016/06/16 23:04
字数 1108
阅读 5706
收藏 38

 Dubbo与Zookeeper、SpringMVC整合和使用

源码github托管地址:https://github.com/wesley5201314/dubbo

osc码云托管地址:http://git.oschina.net/zhengweishan/dubbo

一、软件环境 

1、zookeeper 下载地址:https://zookeeper.apache.org/releases.html 我下载的版本是 zookeeper-3.4.8(只求稳定)

2、springMVC (maven方式引入,具体参看pom文件)
3、dubbo (maven方式引入,具体参看pom文件)

二、配置启动zookeeper 


将下载的zookeeper压缩包,解压到一个磁盘目录上去,这里我指定的位置:E:\dubbo\zookeeper-3.4.8,我们可以通过启动E:\dubbo\zookeeper-3.4.8\bin\zkServer.cmd直接启动默认配置,默认端口为2181,首先我们需要把E:\dubbo\zookeeper-3.4.8\conf\zoo_sample.cfg,文件复制一份并修改成zoo.cfg(zookeeper默认加载这个配置文件),

然后在修改打开E:\dubbo\zookeeper-3.4.8\conf\zoo.cfg,我们这里在指定一下数据目录以及数据日志目录:

启动zookeeper,如下图所示

三、创建项目

demo源码托管地址:https://github.com/wesley5201314/dubbo

这里我搭建了五个项目,分别为dubbo(父工程),dubbo-api(这里只有接口,最终会打成jar),dubbo-provider(生产者,最终会打成war),dubbo-service(接口的实现都在这里,最终会被打成jar) ,dubbo_customer(消费者,最终会打成war)。他们之间的引用就请自己看源码吧,不在做更多的解释了。相信你们看到项目的结构也应该懂得他们之间的依赖关系。代码就不全贴了,自己看https://github.com/wesley5201314/dubbo

这里放上两个关键配置文件:dubbo_consumer.xml(不好意思这个项目拼错了,你们自己修改下吧)

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
    http://code.alibabatech.com/schema/dubbo
    http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
    
    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="test_consumer" />

    <!-- 使用zookeeper注册中心暴露服务地址 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" />

    <!-- 声明需要暴露的服务接口 -->
    <dubbo:reference interface="com.dubbo.demo.service.TestService" id="testService" check="false" />


</beans>

dubbo_provider.xml

<?xml version="1.0" encoding="UTF-8"?>
<beans xmlns="http://www.springframework.org/schema/beans"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:p="http://www.springframework.org/schema/p"
    xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
    xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
    http://code.alibabatech.com/schema/dubbo
    http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="test_provider" />

    <!-- 使用zookeeper注册中心暴露服务地址 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" />

    <!-- 用dubbo协议暴露服务 让他自己制定端口 -->
    <dubbo:protocol name="dubbo" />

    <!-- 声明需要暴露的服务接口 -->
    <dubbo:service interface="com.dubbo.demo.service.TestService" ref="testService" />

    <!-- 具体的实现bean -->
    <bean id="testService" class="com.dubbo.demo.service.impl.TestServiceImpl" />
</beans>

四、dubbo管理平台搭建

我这里使用的是dubbo-admin-2.5.3.war,下载地址:http://pan.baidu.com/s/1eSnuqEQ

下载之后直接放到tomcat运行就可以了(这里最好要单独放一个tomcat中)。运行之后如图:

用户密码默认是root,root.

登录之后:

这里显示的服务数,应用数,提供者数,消费者数都为零。因为我们还没有发布服务,好了去我们的开发工具中发布服务吧,生产者,消费者要同事部署,最好部署在不同的tomcat下,修改下tomcat的端口。

项目部署之后,显示如下:

这里的两个应用就是我们的生产者,消费者。

服务(这里的截图可能与源码中的服务名字不一样,提交到github的时候我做了修改,请大家已自己运行的效果为主啊)

应用

提供者

消费者:

然后地址栏输入地址http://localhost:9080/dubbo_web1/testSayDubbo(源码中已经修改项目名字为dubbo_customer,请根据源码来,源码中服务的实现也做了修改,请都以源码为主,这里的都是演示,其实源码也是演示啊)

成功调用我们提供的服务。

OK。至此一切完毕,后续继续说有关dubbo的东西,例如权重的问题:这个你们可以自己试试吧生产者在打包一份,并且修改其中服务的实现,部署到另一台服务器上,在dubbo管理平台设置服务的权重,然后你们不停地刷新消费者应用去掉这个服务,你就可以更具出现的结果,判断调用那个的比较多了。

© 著作权归作者所有

火龙战士

火龙战士

粉丝 120
博文 138
码字总数 101234
作品 0
北京
后端工程师
私信 提问
加载中

评论(13)

微笑出品
微笑出品
为什么我的消费者和生产者ip总是变成别的啊 Request processing failed; nested exception is com.alibaba.dubbo.rpc.RpcException: Failed to invoke the method queryUserByAccount in the service com.bibi.user.service.UserService. Tried 3 times of the providers [169.254.37.75:20880] (1/1) from the registry 127.0.0.1:2181 on the consumer 169.254.37.75 using the dubbo version 2.5.3. Last error is: Invoke remote method timeout. method: queryUserByAccount, provider: dubbo://169.254.37.75:20880/com.bibi.user.service.UserService?anyhost=true&application=dubbo-consumer&check=false&dubbo=2.5.3&interface=com.bibi.user.service.UserService&methods=queryUserByAccount&pid=11380&revision=0.0.1-SNAPSHOT&side=consumer×tamp=1502150446378, cause: Waiting server-side response timeout by scan timer. start time: 2017-08-08 08:01:07.521, end time: 2017-08-08 08:01:08.530, client elapsed: 1 ms, server elapsed: 1008 ms, timeout: 1000 ms, request: Request [id=2, version=2.0.0, twoway=true, event=false, broken=false, data=RpcInvocati
H
Hinton
赞只能点一下,不然我可以点一天!!!!!
火龙战士
火龙战士 博主

引用来自“xaoyaoyao”的评论

JDK8运行不了dubbo-admin-2.5.3.war,从新打包
出现什么错误
xaoyaoyao
xaoyaoyao
JDK8运行不了dubbo-admin-2.5.3.war,从新打包
菩提尘
菩提尘
请教,我这个demo一直报java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener

项目部署之后lib没有有这个spring-web.jar (我就部署了生产者,消费者)
火龙战士
火龙战士 博主

引用来自“hahahahha”的评论

我这个demo一直报java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
你在项目部署之后看看lib是不是有这个spring-web.jar
h
hahahahha
我这个demo一直报java.lang.ClassNotFoundException: org.springframework.web.context.ContextLoaderListener
d
duguyifan
楼主厉害,一起学习啊
火龙战士
火龙战士 博主

引用来自“qin13669”的评论

一直想学习一下这个,但都没时间,哎
一起学习
雨落屋檐下
雨落屋檐下
一直想学习一下这个,但都没时间,哎
zookeeper+dubbo分布式环境搭建部署记录

最近在公司用到阿里的dubbo做RPC分布式服务化,记录一下项目服务环境搭建的一些过程,方便后来的同行可以少走些弯路,欢迎大家一起交流分享。 一、环境准备 6台机器如下: 用到的软件如下: ...

xiejunbo
2016/09/23
1K
2
dubbo + zookeeper的相关应用

一、首先介绍下DUBBO的背景 随着互联网的发展,一些大型网站的规模不断扩大,常规的垂直应用架构已经无法满足,分布式架构已经势在必行,DUBBO是一个分布式服务框架,在这种情况下诞生的。 ...

zheng854938169
2018/06/28
0
0
基于开源Dubbo分布式RPC服务框架的部署整合

详细介绍请参照官方地址:http://alibaba.github.io/dubbo-doc-static/Home-zh.htm,不再重复描述,本文主要记录了详细的开发整合步骤。 一、源码构建 这个网上很多教程,大家可以google/ba...

hanfeng
2015/11/03
1K
1
【Spring Boot】26.分布式

简介 在本章节你可以学习到: dubbo和zookeeper的基本特性 一个简单的集成项目 zookeeper可视化工具和dubbo可视化工具 分布式和集群的特点 分布式系统(distributed system)是建立在网络之上...

落花时节又逢卿
2018/12/28
32
2
dubbo使用入门-使用zookeeper注册

关于dubbo的使用,在dubbo的apache官网上其实说的很清楚了,在这里只是记录一下dubbo使用zookeeper作为注册中心的使用例子,简要分析了一下dubbo使用zookeeper的命名服务进行注册的外在表现。...

峡客
2018/06/10
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Mybatis Plus删除

/** @author beth @data 2019-10-17 00:30 */ @RunWith(SpringRunner.class) @SpringBootTest public class DeleteTest { @Autowired private UserInfoMapper userInfoMapper; /** 根据id删除......

一个yuanbeth
今天
4
0
总结

一、设计模式 简单工厂:一个简单而且比较杂的工厂,可以创建任何对象给你 复杂工厂:先创建一种基础类型的工厂接口,然后各自集成实现这个接口,但是每个工厂都是这个基础类的扩展分类,spr...

BobwithB
今天
5
0
java内存模型

前言 Java作为一种面向对象的,跨平台语言,其对象、内存等一直是比较难的知识点。而且很多概念的名称看起来又那么相似,很多人会傻傻分不清楚。比如本文我们要讨论的JVM内存结构、Java内存模...

ls_cherish
今天
4
0
友元函数强制转换

友元函数强制转换 p522

天王盖地虎626
昨天
5
0
js中实现页面跳转(返回前一页、后一页)

本文转载于:专业的前端网站➸js中实现页面跳转(返回前一页、后一页) 一:JS 重载页面,本地刷新,返回上一页 复制代码代码如下: <a href="javascript:history.go(-1)">返回上一页</a> <a h...

前端老手
昨天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部