前言

因为工作原因,需要在项目中集成dubbo,所以去查询dubbo相关文档,发现dubbo目前已经不更新了,所以把目光投向了dubbox,dubbox是当当网基于dubbo二次开发的一个项目,dubbox,因为公司项目中一个是基于spring mvc 3.0的,一个是基于spring boot的,而spring boot相对来说文档少一点,所以此文记录下spring boot下如何继承dubbox

一、安装zookeeper

1、zookeeper简介

ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,是Google的Chubby一个开源的实现,是Hadoop和Hbase的重要组件。它是一个为分布式应用提供一致性服务的软件,提供的功能包括:配置维护、域名服务、分布式同步、组服务等。 
ZooKeeper的目标就是封装好复杂易出错的关键服务,将简单易用的接口和性能高效、功能稳定的系统提供给用户

而dubbo就是依赖zookeeper的一个分布式框架,当然二次开发的dubbox肯定也会依赖于zookeeper,所以我们需要先安装zookeeper

2、下载zookeeper

zookeeper官网地址http://zookeeper.apache.org/ 
下载地址http://apache.fayea.com/zookeeper/

3、安装zookeeper

因为我是在Windows环境配置的,所以就简单说一下windows下面的配置吧,首先解压压缩包,然后进入conf文件夹,复制一下zoosample.cfg创建副本,然后重命名为zoo.cfg,因为zookeeper只识别zoo.cfg,而默认是没有这个文件的,zoosample.cfg是默认的配置文件,但是因为文件名的原因,所以zookeeper无法识别,当然直接重命名zoo_sample.cfg也是可以的,只是看自己喜欢咯

4、启动zookeeper

Windows环境下直接运行bin目录下的zkServer.cmd就可以,如果是Linux环境,则在bin目录下运行

./zkServer.sh start

命令,就可以启动zookeeper

5、添加dubbox依赖

        <dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.8.4</version>
</dependency>
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.9</version>
</dependency>
<dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
<exclusions>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
</exclusion>
<exclusion>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
</exclusion>
</exclusions>
</dependency>

注意,这里的dubbo的2.8.4版本是我自己编译的,这个在maven仓库是没有的,因为dubbo已经不更新了,而2.8.4是当当网的dubbox,所以如果你要使用,要么就编译dubbox,要么就使用旧版本的dubbo


6、添加服务提供者的接口 接口类:

package wang.raye.dubbo.interfaces;

public interface DubboInterface {

    public String hello(String name);
}

接口实现类:

package wang.raye.dubbodemo1;

import org.springframework.stereotype.Service;

import wang.raye.dubbo.DubboInterface;
@Service
public class DubboImpl implements DubboInterface { public String hello(String name) {
return "hello "+name+" this is dubbodemo1";
} }

7、添加dubbo配置xml xml文件放在sources文件夹,名字可以随便命名,我这里是dubbo.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:jee="http://www.springframework.org/schema/jee"
xmlns:tx="http://www.springframework.org/schema/tx"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
xmlns:context="http://www.springframework.org/schema/context"
xsi:schemaLocation="http://www.springframework.org/schema/beans http://www.springframework.org/schema/beans/spring-beans-3.1.xsd
http://www.springframework.org/schema/tx http://www.springframework.org/schema/tx/spring-tx-3.1.xsd
http://www.springframework.org/schema/jee http://www.springframework.org/schema/jee/spring-jee-3.1.xsd
http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd
http://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context-3.1.xsd"
default-lazy-init="false" >
<!-- 提供方应用名称信息,这个相当于起一个名字,我们dubbo管理页面比较清晰是哪个应用暴露出来的 -->
<dubbo:application name="dubbo-provider1"></dubbo:application>
<!--使用注解方式暴露接口
<dubbo:annotation package="wang.raye.dubbodemo1" /> -->
<!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://192.168.1.126:2181" check="false" subscribe="false" register=""></dubbo:registry>
<!-- 要暴露的服务接口-->
<dubbo:service interface="wang.raye.dubbo.interfaces.DubboInterface" ref="dubboImpl" />
</beans>

这里每个节点都有解释了,相信不过过多解释


8、配置消费者

类中引用远程提供者

package wang.raye.dubbodemo3.controller;

import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody; import wang.raye.dubbo.DubboInterface; @Controller
public class DubboControll { @Autowired
private DubboInterface interface1;
@RequestMapping("/hello")
@ResponseBody
public String hello(String name){
return interface1.hello(name);
} }

消费者的xml配置

<beans xmlns="http://www.springframework.org/schema/beans"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
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="dubbo-custom-dsp"/>
<dubbo:registry address="zookeeper://192.168.1.126:2181" />
<!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
<dubbo:reference id="dubboService" interface="wang.raye.dubbo.interfaces.DubboInterface" />
</beans>

这里也是每个接点都有注释,应该不用多说,而且比较本文不是讲究dubbo配置的,主要是讲spring boot集成dubbox


9、引用dubbo配置xml 在Spring boot的Application类添加注解

@ImportResource({"classpath:dubbo.xml"})

因为我的xml名字是dubbo.xml,所以当你用的时候需要换成自己的xml名字,注意:消费者项目和服务提供者的项目的Application类都需要配置此注解

结尾

至此,spring boot集成duubox就说完了,当然这样说肯定很空洞,所以我吧我测试的项目上传到了github,大家可以参考看看,当然要测试的话需要修改dubbo.xml的dubbo:registry 节点中的zookeeper地址。

demo地址,为了显示出dubbo的优势,所以我创建了2个服务提供者,频繁调用的话,会自动选择这2个中的任何一个,连负载均衡都免了,应该是zookeeper自己做了,所以感觉还是挺不错的

Spring boot 集成Dubbox(山东数漫江湖)的更多相关文章

  1. Spring 事务管理(山东数漫江湖)

    最新又重新学习了一遍Spring的事务,这里做点总结,不做如何一步步配置的流水账. 1. 关键类 public interface PlatformTransactionManager { Trans ...

  2. Spring归纳小结(山东数漫江湖)

    前言 如果说有什么框架是Java程序员必然会学习.使用到的,那么Spring肯定是其中之一.本篇博客,将根据博主在日常工作中对Spring的使用做一个系统的归纳小结. Spring的一些概念和思想 S ...

  3. 深入分析Spring 与 Spring MVC容器(山东数漫江湖)

    1 Spring MVC WEB配置 Spring Framework本身没有Web功能,Spring MVC使用WebApplicationContext类扩展ApplicationContext, ...

  4. Spring cookie 实战(山东数漫江湖)

    Cookie是什么 简单来说,cookie就是浏览器储存在用户电脑上的一小段文本文件.cookie 是纯文本格式,不包含任何可执行的代码.一个web页面或服务器告知浏览器按照一定规范来储存这些信息,并 ...

  5. Spring boot集成RabbitMQ(山东数漫江湖)

    RabbitMQ简介 RabbitMQ是一个在AMQP基础上完整的,可复用的企业消息系统 MQ全称为Message Queue, 消息队列(MQ)是一种应用程序对应用程序的通信方法.应用程序通过读写出 ...

  6. 玩转Spring Boot 集成Dubbo

    玩转Spring Boot 集成Dubbo 使用Spring Boot 与Dubbo集成,这里我之前尝试了使用注解的方式,简单的使用注解注册服务其实是没有问题的,但是当你涉及到使用注解的时候在服务里面 ...

  7. 【Swagger】可能是目前最好的 Spring Boot 集成 swagger 的方案

    [Swagger]可能是目前最好的Spring Boot集成 swagger 的方案 ![](https://img2018.cnblogs.com/blog/746311/201909/746311 ...

  8. Spring Boot集成Jasypt安全框架

    Jasypt安全框架提供了Spring的集成,主要是实现 PlaceholderConfigurerSupport类或者其子类. 在Sring 3.1之后,则推荐使用PropertySourcesPl ...

  9. Spring boot集成swagger2

    一.Swagger2是什么? Swagger 是一款RESTFUL接口的文档在线自动生成+功能测试功能软件. Swagger 是一个规范和完整的框架,用于生成.描述.调用和可视化 RESTful 风格 ...

随机推荐

  1. java — 重载和覆盖

    重载(overload):对于类的方法,方法名相同,参数列表不同的方法之间构成了重载关系. 参数列表:参数的类型.参数的个数.参数的顺序. 子类从父类继承来的方法也可以发生重载. 如果多个方法有相同的 ...

  2. iOS开发应用程序更新

    #import "ViewController.h" //1一定要先配置自己项目在商店的APPID,配置完最好在真机上运行才能看到完全效果哦 #define STOREAPPID ...

  3. web 性能测试与报告

    web性能测试大家第一都会想到:loadrunner.ab.siege.http_load等工具.但是这些工具生成的测试报告都不是我想要的. 这里给大家推荐一个sitespeed,使用简单,生成非常详 ...

  4. Sass的命令编译

    [Sass]命令编译 命令编译是指使用你电脑中的命令终端,通过输入 Sass 指令来编译 Sass.这种编译方式是最直接也是最简单的一种方式.因为只需要在你的命令终端输入: 单文件编译: sass & ...

  5. title & abbr & tooltips

    title & abbr & tooltips https://dmitrybaranovskiy.github.io/raphael/ <abbr title="Sc ...

  6. echarts 画 canvas 如果在IE8下不显示图标

    网上说法很多,可能版本问题,也有说script标签位置问题(放在body中) 不过先试已下,清除option对象中多余的逗号(,) 对象的最后一个属性后不要有逗号结尾

  7. BZOJ 2241 打地鼠(特技暴力)

    果然暴力出奇迹.. O(n^2m^2)=1e8 536ms能过. 枚举锤子的长和宽,再验证是否可以满足条件并更新答案. 我们先从左上角为(1,1)的先锤,显然锤的次数是a[1][1]. 锤(i,j)的 ...

  8. 前端基础:JavaScript BOM对象

    JavaScript BOM对象 JavaScript Window - 浏览器对象模型 浏览器对象模型(BOM)使JavaScript有能力与浏览器"对话". 浏览器对象模型(B ...

  9. 推荐算法相关总结表(包括DM)

    推荐算法总结表 表1 推荐算法分类 个性化推荐算法分类 启发式算法 基于模型 基于内容 TF-IDF 聚类 最大熵 相似度度量 贝叶斯分类 决策树 神经网络 专家系统 知识推理 协同过滤 K近邻 聚类 ...

  10. CentOS 文件隐藏属性

    1.chattr用于配置文件的隐藏属性 语法: chattr [-RVf] [-+=aAcCdDeijsStTu] [-v version] files... 选项与参数: +:增加某个特殊参数,其他 ...