使用Dubbo结合Zookeeper和Spring,

是使用比较广泛的一种组合,下面参考官方文档,做个简单的示例,一步步搭建一个使用dubbo结合Zookeeper和Spring的Demo工程。
代码已经上传到github,地址:https://github.com/bingyue/dubbodemo

1.集成Zookeeper

(1)安装Zookeeper

(2)启动Zookeeper服务

2.配置Dubbo的管理界面

Dubbo官方提供了几个管理工具,包括管理控制台dubbo-admin及简易监控中心等。
这里的Demo学习使用了最新的稳定的2.5.3版本。
官网指出在阿里巴巴内部广泛使用的GA版本为2.4.9,并且推荐此版本,
在实际项目中可以使用这一稳定版本。

(1)下载dubbo-admin,修改相关的配置

下载地址http://dubbo.io/Download-zh.htm,下载后解压war包,
找到dubbo.properties配置文件,修改其中的zookeeper地址为上面部署的zk地址。

(2)启动dubbo-admin工程

把工程文件夹放在Tomcat的工程目录下,启动后登录即可。

3.创建Demo项目,集成Spring

Demo项目主要是使用了CXF整合Spring创建WebService的技术,关于CXF可以参考:
WebService CXF学习(高级篇1):整合Spring框架

(1)创建服务提供接口项目

服务端接口需要单独打包,服务提供方和消费方共享,同时被提供端和消费端依赖。
1.新建Maven项目

创建dubbo-demo-api工程,pom文件如下:

<groupId>dubbo-demo</groupId>
<artifactId>dubbo-demo-api</artifactId>
<version>0.1</version>
<packaging>jar</packaging>
<name>dubbo-demo-api</name>

2.编写服务接口

public interface TestService {
public String sayHello(String name);
}

(2)创建项目实现接口

1.创建具体接口实现项目

public class TestServiceImpl implements TestService {
/**
* 服务提供方实现接口:(对服务消费方隐藏实现)
*/
public String sayHello(String name) {
System.out.println("调用provider服务");
return "hello"+name;
}
}

添加api的依赖,添加Spring、dubbo和zookeeper的依赖,pom文件如下:

<groupId>dubbo-demo</groupId>
<artifactId>dubbo-demo-provider</artifactId>
<version>0.1</version>
<packaging>jar</packaging> <name>dubbo-demo-provider</name> <properties>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
</properties> <dependencies>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- 添加Dubbo服务接口的依赖 -->
<dependency>
<groupId>dubbo-demo</groupId>
<artifactId>dubbo-demo-api</artifactId>
<version>0.1</version>
</dependency>
<!-- 添加Spring context依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>org.springframework.context</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>
<!-- 引入Dubbo依赖 -->
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
</dependency>
<!-- zookeeper依赖 -->
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
</dependency>
<!-- zookeeper客户端 zkclient -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
</dependency>
</dependencies>

2.暴露服务,整合Spring完成服务提供者

配置provider.xml:

<!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="dubbo-demo-provider"  />
    <!-- 使用multicast广播注册中心暴露服务地址 -->
    <dubbo:registry address="multicast://192.168.106.129:2182" />
    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />
    <!-- 声明需要暴露的服务接口 -->
    <dubbo:service interface="bingyue.dubbo.provider.TestService" ref="testService" />
    <!-- 和本地bean一样实现服务 -->
    <bean id="testService" class="bingyue.dubbo.provider.TestServiceImpl" />

  

(3)创建服务消费端项目

1.创建项目和相关配置
在pom.xml中依赖接口项目:

<groupId>dubbo-demo</groupId>
<artifactId>dubbo-demo-consumer</artifactId>
<version>0.1</version>
<packaging>jar</packaging> <dependencies>
<!-- 添加Spring context依赖 -->
<dependency>
<groupId>org.springframework</groupId>
<artifactId>org.springframework.context</artifactId>
<version>3.1.2.RELEASE</version>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>3.8.1</version>
<scope>test</scope>
</dependency>
<!-- 添加Dubbo服务接口的依赖 -->
<dependency>
<groupId>dubbo-demo</groupId>
<artifactId>dubbo-demo-api</artifactId>
<version>0.1</version>
</dependency>
</dependencies>

配置consumer.xml:

<!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
<dubbo:application name="dubbo-demo-consumer" /> <!-- 使用multicast广播注册中心暴露发现服务地址 -->
<dubbo:registry address="multicast://192.168.106.129:2182" /> <!-- 把接口的声明引入到本项目中,通过jar或者maven依赖都可以 -->
<!-- 生成远程服务代理,可以和使用本地bean一样使用服务者提供的服务 -->
<dubbo:reference id="testService" interface="bingyue.dubbo.provider.TestService" />

  

2.配置和启动消费者服务
加载配置文件后,消费端调用服务端接口的方式有多种,可以从上下文中获取bean,也可以使用注解。

public class Tester {
//使用注解或者使用远程服务代理取得接口实例
// @Autowired TestService testService; public static void main(String[] args){
//加载同级目录下的消费者配置文件
ClassPathXmlApplicationContext ctx=new ClassPathXmlApplicationContext("consumer.xml");
ctx.start();
TestService testService = (TestService) ctx.getBean("testService");
String result=testService.sayHello("cnblogs");
System.out.println(result);
}
}

  

3.使用Maven结合Dubbo

这种Dubbo使用方式可以不用考虑Maven如何单独对接口打包,
在顶层的服务提供方项目中编写接口,
消费端项目会依赖服务提供方项目的jar包,从中获得接口实例,
然后在服务方项目中新建单独的子项目去编写接口的实现类,
这样通过Maven的继承,将消费端项目和具体的接口实现类代码分离开。

Dubbo集成Spring与Zookeeper实例的更多相关文章

  1. 如何使用Dubbo服务和集成Spring

    Dubbo是什么? Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点. Dubbo是一个 ...

  2. 集成Dubbo服务(Spring)

    Dubbo是什么? Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点. Dubbo[]是 ...

  3. dubbo集成zookeeper rpc远程调用

    注:下面使用dubbo依赖的是zookeeper注册中心,这里没有详细的介绍.在配置之前,请自行准备好zookeeper环境. 后续如果写zookeeper的配置会补放链接 添加Gradle依赖 co ...

  4. SpringBoot+Dubbo+Zookeeper 实例

    前言 当下Java 生态环境里面,微服务占据了非常大的份额,现在大部分新开发的 Java选型的后台程序都很奇妙的会跟微服务发生一些关系.那目前市面上主流的微服务方向主要有 Spring 家族推出的Sp ...

  5. Spring Cloud ZooKeeper集成Feign的坑2,服务调用了一次后第二次调用就变成了500,错误:Servlet.service() for servlet [dispatcherServlet] in context with path [] threw exception [Request processing failed; nested exception is com.n

    错误如下: 2017-09-19 15:05:24.659 INFO 9986 --- [ main] s.c.a.AnnotationConfigApplicationContext : Refre ...

  6. Dubbo和Spring Cloud微服务架构'

    微服务架构是互联网很热门的话题,是互联网技术发展的必然结果.它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.虽然微服务架构没有公认的技术标准和规范或者草案,但业 ...

  7. Dubbo和Spring Cloud微服务架构比较

    Dubbo 出生于阿里系,是阿里巴巴服务化治理的核心框架,并被广泛应用于中国各互联网公司:只需要通过 Spring 配置的方式即可完成服务化,对于应用无入侵,设计的目的还是服务于自身的业务为主. 微服 ...

  8. 你真的了解微服务架构吗?听听八年阿里架构师怎样讲述Dubbo和Spring Cloud微服务架构

    微服务架构是互联网很热门的话题,是互联网技术发展的必然结果.它提倡将单一应用程序划分成一组小的服务,服务之间互相协调.互相配合,为用户提供最终价值.虽然微服务架构没有公认的技术标准和规范或者草案,但业 ...

  9. 听听八年阿里架构师怎样讲述Dubbo和Spring Cloud微服务架构

    转自:https://baijiahao.baidu.com/s?id=1600174787011483381&wfr=spider&for=pc 微服务架构是互联网很热门的话题,是互 ...

随机推荐

  1. windows程序是如何开始执行的??

    windows的资源管理器侦测到使用者执行了一个程序————>windows调用加载器加载该程序————>调用C start code——>C start code 调用WinMai ...

  2. The Adapter of ListView: Just adapt data to view, don’t do anything else

    The design of SimpleAdapter is not good in my opinion. An adapter should just adapter the data to vi ...

  3. MySQL重复数据

    delete from porn where Id not in (select minid from (select min(id) as minid from porn group by view ...

  4. Hifiman:一个国产音频厂商的忧伤[转]

    一则苹果计划32亿美元收购音频设备厂商Beats的消息,让音频设备——这个极少被人们重视又时刻离不开的产品重新引发了关注. 国产数码品牌通常都被自然的贴上低端.低质的标签.然而难能可贵的是,国产音频设 ...

  5. UINavigationItem UINavigationBar 关系分析

    目录 1.关系分析 2.关系综述 3.概念点 4.疑问 1.关系分析 UIBarItem-> UIBarButtonItem -> UINavigationItem 1.1 UIBarIt ...

  6. git rebase简介(高级篇)

    原文:http://gitbook.liuhui998.com/4_3.html 一.基本   对于git rebase,你亦可以选择进行交互式的rebase.这种方法通常用于在向别处推送提交之前对它 ...

  7. Oracle 11g 下载|Oracle 11g 官网下载|Oracle 11g 官网下载 带登录用户和密码

    本文转载自 Oracle 11g 下载|Oracle 11g 官网下载|Oracle 11g 官网下载 带登录用户和密码 oracle 下载还需要用户名我自己注册了个方便大家使用下载直接点击提示找不到 ...

  8. Java中 final static super this instanceof 关键字用法

    一.final关键字 final可以修饰变量.方法及类: 1.当定义一个final变量时,jvm会将其分配到常量池中,其所修饰的对象只能赋值一次,对基本类型来说是其值不可变,引用类型(包括作为函数形参 ...

  9. poj3341

    AC自动机,用40^4 * 50 * 10的空间进行dp. 最大的难点在于hash. hash一个数列f,数列中的每一位都有一个上限g,即f[i]<=g[i]. 那么可以将该数列hash为这样一 ...

  10. ffmpeg-20160806-bin.7z

    ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 f ...