第一章:Dubbox简介

Dubbox是一个开源的RPC(Remote ProcedureCall Protocol)远程调用框架,是由dangdang对阿里的Dubbo的升级,可以被视为Dubbo的增强版,基本架构没有变动,升级spring2.x到spring3.x,支持restful风格的调用调试方式,丰富了序列化的方式,提高了序列化的性能。

Dubbox的Github官网:

https://github.com/dangdangdotcom/dubbox

第二章 环境搭建(基于注册中心是Zookeeper的搭建)

2.1 dubbo-admin控制台的安装

2.1.1打开dubbox的官网https://github.com/dangdangdotcom/dubbox

点击Clone or download 我们选择最原始的Download ZIP,当前的stable版本是2.8.4

2.1.2下载到某个文件夹下,解压文件夹:

2.1.3 解压dubbox-master.zip

2.1.4按住键盘shift 鼠标右击,选择命令窗口,进入maven编译 :

mvn install -Dmaven.test.skip=true

编译安装大概需要4~5分钟,编译安装成功之后显示如下:

好了,到此为止,dubbox2.8.4就算是编译成功了,接下来我们要先搭建dubbox的控制台,因为可视化是我们最喜欢的模式了

2.1.5进入刚才的文件夹D:\dubboxstudy\dubbox-master\dubbo-admin\target

找到dubbo-admin-2.8.4.war文件,因为这是一个war文件,所以我们就使用tomcat启动,下载apache-tomcat-7.0.40-windows-x64.zip到我们dubbox study目录

解压apache-tomcat.zip,然后将刚才的dubbo-admin-2.8.4.war复制到D:\dubboxstudy\apache-tomcat-7.0.40\webapps文件夹下

因为dubbo的注册中心和管理控制台是依赖zookeeper,所以我们在测试环境下,需要启动一个zookeeper的实例,关于zookeeperwindow环境下的搭建就不赘述了,详细参考:

http://blog.csdn.net/morning99/article/details/40426133

2.1.6启动dubbo-admin控制台之前,先启动一个zookeeper实例(因为只是测试,所以就启动zookeeper集群了):

2.1.7启动tomcat,进入D:\dubbox study\apache-tomcat-7.0.40\bin,双击startup.bat

上图表示启动成功,启动成功之后,我们会发现D:\dubbox study\apache-tomcat-7.0.40\webapps下多了一个文件夹dubbo-admin-2.8.4,进入

D:\dubboxstudy\apache-tomcat-7.0.40\webapps\dubbo-admin-2.8.4\WEB-INF,打开dubbo.properties:

可以看到dubbo默认的注册机制是zookeeper,地址也是本地地址:127.0.0.1:2181,假如你此时zookeeper的实例的地址不是127.0.0.1:2181,或者注册机制是Redis的话,需要修改dubbo.properties的配置,此处就不做修改了

2.1.8打开浏览器。输入http://localhost:8080/dubbo-admin-2.8.4/,账户密码是root/root.就可以看到页面了

2.2 dubbo的Provider/Consumer 消费者和提供者的Demo代码编写

2.2.1环境准备JDK1.7 +Eclipse(STS) + Maven3.x

2.2.2新建WorkingSet

点击finish:

2.2.3新建maven项目

建好之后的目录结构:

2.2.4在bazinga-provider和bazinga-consumer的pom.xml中引入dubbox的依赖(暂时使用2.8.3的依赖,相对简单一点):

[html]  view plain  copy
  1. <properties>
  2. <dubbox.version>2.8.3</dubbox.version>
  3. <slf4j.version>1.7.5</slf4j.version>
  4. <zookeeper.version>3.4.6</zookeeper.version>
  5. </properties>
  6. <dependencies>
  7. <dependency>
  8. <groupId>com.alibaba</groupId>
  9. <artifactId>dubbo</artifactId>
  10. <version>${dubbox.version}</version>
  11. </dependency>
  12. <dependency>
  13. <groupId>org.slf4j</groupId>
  14. <artifactId>slf4j-api</artifactId>
  15. <version>${slf4j.version}</version>
  16. </dependency>
  17. <dependency>
  18. <groupId>org.apache.zookeeper</groupId>
  19. <artifactId>zookeeper</artifactId>
  20. <version>${zookeeper.version}</version>
  21. <exclusions>
  22. <exclusion>
  23. <groupId>io.netty</groupId>
  24. <artifactId>netty</artifactId>
  25. </exclusion>
  26. <exclusion>
  27. <groupId>org.slf4j</groupId>
  28. <artifactId>slf4j-api</artifactId>
  29. </exclusion>
  30. <exclusion>
  31. <groupId>log4j</groupId>
  32. <artifactId>log4j</artifactId>
  33. </exclusion>
  34. <exclusion>
  35. <groupId>org.slf4j</groupId>
  36. <artifactId>slf4j-log4j12</artifactId>
  37. </exclusion>
  38. <exclusion>
  39. <groupId>jline</groupId>
  40. <artifactId>jline</artifactId>
  41. </exclusion>
  42. </exclusions>
  43. </dependency>
  44. <dependency>
  45. <groupId>org.slf4j</groupId>
  46. <artifactId>slf4j-api</artifactId>
  47. <version>${slf4j.version}</version>
  48. </dependency>
  49. <dependency>
  50. <groupId>com.101tec</groupId>
  51. <artifactId>zkclient</artifactId>
  52. <version>0.2</version>
  53. </dependency>
  54. <dependency>
  55. <groupId>ch.qos.logback</groupId>
  56. <artifactId>logback-classic</artifactId>
  57. <version>1.0.13</version>
  58. </dependency>
  59. </dependencies>

2.2.5在bazinga-provider编写调用接口IDemoService:

[java]  view plain  copy
  1. package org.bazinga.service;
  2. public interface IDemoService {
  3. public String sayHello();
  4. }

具体的实现:

[java]  view plain  copy
  1. package org.bazinga.service.impl;
  2. import org.bazinga.service.IDemoService;
  3. public class IDemoServiceImpl implements IDemoService {
  4. public String sayHello() {
  5. return "hello dubbox";
  6. }
  7. }

2.2.6在src/main/resources下配置dubbo基于Spring的配置文件spring-dubbo-provider.xml,在这里需要配置注册中心的地址,通信的协议方式,服务提供者的应用名,最后就是最关键的需要暴露的服务,我们这里就是

[html]  view plain  copy
  1. <?xml version="1.1" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd
  6. http://code.alibabatech.com/schema/dubbo
  7. http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
  8. <dubbo:application owner="lyncc" name="bazinga-app" />
  9. <!--zookeeper注册中心 -->
  10. <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"/>
  11. <dubbo:protocol name ="dubbo" port="20880" />
  12. <!-- 发布这个服务 -->
  13. <dubbo:service  protocol="dubbo"  timeout="4000" connections="100" interface ="org.bazinga.service.IDemoService" ref="demoService" />
  14. <!-- 和本地bean一样实现服务 -->
  15. <bean id="demoService" class="org.bazinga.service.impl.IDemoServiceImpl" />
  16. </beans>

细心的你会发现左侧有报错的提示:

这个报错是因为不识别dubbo的命名空间,所以需要导入xsd文件,dubbo.xsd文件源码中有,网上也可以下载到,下载好或者在源码中找到之后,选择Windw->Perferences->XML->XMLCatelog->User Specifed Entries

点击add,点击FileSystem 选择你下载好的dubbo.xsd,输入key值,key值要与schema值一样,点击OK:

一路保存刚才的设置,重新打开spring-dubbo-provider.xml文件,可以发现报错消失。到此为止,dubbox的服务提供者端的代码已经编写完毕,我们写个测试类测试一下:

[java]  view plain  copy
  1. package org.bazinga.service.test;
  2. import org.springframework.context.support.ClassPathXmlApplicationContext;
  3. public class DubboxProviderDemoService {
  4. public static void main(String[] args) throws InterruptedException {
  5. ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
  6. "spring-dubbo-provider.xml");
  7. context.start();
  8. Thread.sleep(2000000l);
  9. }
  10. }

启动main函数之后,会发现dubbo-admin的控制台中提供者发现了该服务:

2.2.7服务提供者模块的编写,服务消费者只要有服务的接口就可以了,把服务提供者的接口复制到bazinga-consumer项目的同一个package下,注意必须放在同一个package下,也就是说服务消费者和服务提供者的接口的路径必须完全相同,因为这是服务的唯一标识,是一一对应的:

2.2.8服务消费端dubbo的配置文件的编写spring-dubbo-consumer.xml,因为dubbo具有服务自动发现的功能,所以我们这边只需要配置注册中心,服务消费者的名字,和需要订阅的服务接口信息,如下:

[html]  view plain  copy
  1. <?xml version="1.1" encoding="UTF-8"?>
  2. <beans xmlns="http://www.springframework.org/schema/beans"
  3. xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:dubbo="http://code.alibabatech.com/schema/dubbo"
  4. xsi:schemaLocation="http://www.springframework.org/schema/beans
  5. http://www.springframework.org/schema/beans/spring-beans.xsd
  6. http://code.alibabatech.com/schema/dubbo
  7. http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
  8. <dubbo:application owner="lyncc" name="bazinga-consumer" />
  9. <!--zookeeper注册中心 -->
  10. <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"/>
  11. <dubbo:reference id="demoService" interface="org.bazinga.service.IDemoService"/>
  12. </beans>

2.2.9编写测试类DubboConsumerDemoService:

[java]  view plain  copy
  1. package org.bazinga.service.test;
  2. import org.bazinga.service.IDemoService;
  3. import org.springframework.context.support.ClassPathXmlApplicationContext;
  4. public class DubboConsumerDemoService {
  5. public static void main(String[] args) throws InterruptedException {
  6. ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
  7. "spring-dubbo-consumer.xml");
  8. context.start();
  9. IDemoService demoService = (IDemoService)context.getBean("demoService");
  10. System.out.println(demoService.sayHello());
  11. Thread.sleep(2000000l);
  12. }
  13. }

先运行DubboxProviderDemoService的情况下,启动DubboConsumerDemoService的main函数,运行结果:

同时控制台admin页面也会显示消费者的信息:

好了,到此为止,最简单的Dubbo的Helloworld搭建完毕

2.3 本章小结

本章简单的搭建了一个Dubbo的Demo,配置了dubbo-admin控制页面平台,编写了一个简单的Hello World,服务提供者向zookeeper注册中心注册服务,服务消费者从注册中心订阅服务,发现服务的暴露地址,完成远程调用,下一个章节,我们稍微深入体验一下dubbo给我们带来的丰富的RPC的一些特性

Zookeeper+Dubbox 环境搭建日记相关推荐

  1. Zookeeper分布式环境搭建

    Zookeeper分布式环境搭建 一.分布式安装部署 1.前置条件 2.集群规划 3.解压安装 4.配置zoo.cfg文件 5.集群操作 二.配置参数解读 1.tickTime 2.initLimit ...

  2. Linux服务器Zookeeper+Dubbo环境搭建

    快速搭建开发环境,是必不可少的功课之一. 一.环境准备 JDK环境安装与配置:https://jingyan.baidu.com/article/48a42057f1f0a4a925250464.ht ...

  3. Ubuntu双系统+pytorch环境搭建日记

    文章目录 1.卸载挂掉的ubuntu 2.ubuntu系统盘制作 3.bios更改第一启动方式为UEFI 4.保存重启开始安装 5.更换国内源 6.U盘格式化 7.nvidia驱动 8.CUDA8.0 ...

  4. windows下单机版的伪分布式solrCloud环境搭建Tomcat+solr+zookeeper

    前面简单了解了ZooKeeper的相关知识,为SolrCloud的学习作了一层铺垫.在SolrCloud的wiki中,可以很简单地用jetty实现嵌入式ZooKeeper的单机版SolrCloud.但 ...

  5. ZooKeeper 3.4.5 分布式环境搭建详解

    概述 上一篇中,我们说到了关于 Hadoop-2.2.0 集群的搭建.在这个系列中,Zookeeper 是必不可少的.本文会介绍 Zookeeper-3.4.5 的安装,后面会介绍 HBase-0.9 ...

  6. 大数据 -- zookeeper和kafka集群环境搭建

    一 运行环境 从阿里云申请三台云服务器,这里我使用了两个不同的阿里云账号去申请云服务器.我们配置三台主机名分别为zy1,zy2,zy3. 我们通过阿里云可以获取主机的公网ip地址,如下: 通过secu ...

  7. 高吞吐消息中间件Kafka集群环境搭建(3台kafka,3台zookeeper)

    高吞吐消息中间件Kafka集群环境搭建(3台kafka,3台zookeeper) 一.集群搭建要求 1.搭建设计 2.分配六台Linux,用于安装拥有三个节点的Kafka集群和三个节点的Zookeep ...

  8. Hadoop学习笔记—14.ZooKeeper环境搭建

    从字面上来看,ZooKeeper表示动物园管理员,这是一个十分奇妙的名字,我们又想起了Hadoop生态系统中,许多项目的Logo都采用了动物,比如Hadoop采用了大象的形象,所以我们可以猜测ZooK ...

  9. Zookeeper和Kafka环境搭建总结

    前言 由于项目需要涉及到zookeeper和Kafka的使用,快速做了一篇笔记,方便小伙伴们搭建环境. zookeeper 官方定义 What is ZooKeeper? ZooKeeper is a ...

最新文章

  1. 上海浦发银行总行信息科技部大数据专家陈春宝:大数据与机器学习重塑零售银行业务...
  2. 人生致命的8个经典问题
  3. varnish---反向代理web加速缓存服务器和CDN的推送
  4. 2017年CISCN初赛
  5. 做红颜知己就要恪守界限
  6. 代码单元测试工具:gmock
  7. LeetCode 2013. 检测正方形(字典)
  8. [ASP.NET 控件实作 Day12] 继承 TBActiveX 重新改写 TBMediaPlayer 控件
  9. Could not resolve host: 'localhost 报错解决办法
  10. JQuery Dialog UI按钮文字国际化
  11. 【工作手札】日常工作笔记
  12. Oracle数据库详解(超详细)
  13. css精灵图如何取图
  14. 构建嵌入式Linux系统的几种工具
  15. ubuntu20.04+vtd环境搭建
  16. Sequelize多表联合查询案例
  17. 用Git在阿里云下克隆时出现“Please make sure you have the correct access rights and the repository exists”错误
  18. day08---(05)课程大纲-章节和小节列表功能(接口)
  19. Mailgun提供了新的报告仪表板
  20. PATA1142 Maximal Clique(测试点2、3)

热门文章

  1. 总结:Linux安装Java并运行jar遇到的错误
  2. js 动态设置input 不可编辑
  3. NSX-T 架构-(1)
  4. 阿里新一代微服务,内部资深架构师手抄的笔记+脑图不容错过,全是精华
  5. 纠删码项目总结(1.0)
  6. vue实现图片下载功能so easy
  7. 用C语言编程函数求圆台体积,第六篇 AutoCAD二次开发技术.pdf
  8. 什么是 MongoDB,为什么它是当今最受欢迎的数据库之一?
  9. 电机控制FOC——SVPWM
  10. 我们创造世界的过程也是一个我们如何思考的过程,要想改变世界,必须先改变我们的思想