现在很多公司用到dubbo,使用起来是很快就学会了。真的要熟悉它还是要花点功夫的。

前面尝试看了些它的源码,这里为了调试源码,先打搭一个能跑的项目,顺别分享出来,以便刚像学习的朋友节约时间,毕竟时间至关重要。

dubbo说白了,就是个远程调用的解决方案。首先我觉得应该清晰的知道,玩这个dubbo,只需要起一个提供方,调用方,然后一个zk即可。其他杂七杂八的不要去管。翻阅了一些其他博客,都比较杂乱,把事情弄复杂了。这也是写下来的原因。dubbo文档:http://dubbo.io
以下内容非常简单,除了dubbo的知识还涉及的内容有:maven,zookeeper,spring
 
我们应该先准备好zookeeper,到官网下一个在本地启动起来,在conf文件里复制zoo_sample.cfg 出zoo.cfg,修改一下端口。
启动命令:sh zkServer.sh start
进入命令模式:sh zkCli.sh -server 127.0.0.1:2181
进入后可以通过ls / 命令查看节点情况。
下面是当我启动好customer后,我在zk上看到的效果:
 
 
注意:这里不推荐搞界面查zk的东西,浪费时间而且无用。直接到官网上看zk的命令,顺别也可以学习下zk的一些基础知识。
 
项目讲解:
把dubbo引进来,一般在实际开发中都是自己在dubbo源码的基础上改造后成为可用的一个组件,提供给上层开发者。比如dubbox。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.5.3</version>
<exclusions>
<exclusion>
<artifactId>spring</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>
这是一个老妈叫儿子出去买吃的的故事。
建一个接口:
public interface BuyFoodService {
String doBuy();
}

作为提供方应该实现它:

public class BuyFoodServiceimpl implements BuyFoodService {
public String doBuy() {
System.out.println("mon whant me to buy food");
return "ok";
}
}

提供方的配置:

<?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: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://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <bean id="buyFoodService" class="com.test.dubbo.service.BuyFoodServiceimpl"></bean> <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" /> <dubbo:protocol accesslog="true" name="dubbo" port="20880" /> <dubbo:application name="son"/> <dubbo:service interface="com.test.dubbo.service.BuyFoodService" ref="buyFoodService"/> </beans>

以上提供方就可以启动将自己的信息注册到zk上了。在zk上可以看到一个叫dubbo的节点,节点里面有个buyFoodService。

调用方的配置类似:

<?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:context="http://www.springframework.org/schema/context"
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://www.springframework.org/schema/context http://www.springframework.org/schema/context/spring-context.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd"> <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" /> <dubbo:protocol accesslog="true" name="dubbo" port="20880" /> <dubbo:application name="mon"/> <dubbo:reference id="buyFoodService" interface="com.test.dubbo.service.BuyFoodService"/> </beans>
调用代码,妈妈发起让儿子去买食物的请求:

public class Customer {
public static void main(String[] args) {
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
"classpath*:spring/provider/applicationContext.xml");
BuyFoodService buyFoodService = (BuyFoodService) context.getBean("buyFoodService");
System.out.println(buyFoodService.doBuy());
}
}
过程中遇到

报错:
java.lang.NoClassDefFoundError: org/I0Itec/zkclient/exception/ZkNoNodeException
解决办法,需要依赖:
<dependency>
<groupId>com.101tec</groupId>
<artifactId>zkclient</artifactId>
<version>0.10</version>
</dependency>
最后,当然把调好的项目共享出来:点我 然后开启你的dubbo之旅吧!

dubbo搭建例子的更多相关文章

  1. 【转】Dubbo使用例子并且和Spring集成使用

    一.编写客户端和服务器端共用接口类1.登录接口类public interface LoginService {    public User login(String name, String psw ...

  2. IntelliJ IDEA下Maven SpringMVC+Mybatis入门搭建例子

    很久之前写了一篇SSH搭建例子,由于工作原因已经转到SpringMVC+Mybatis,就以之前SSH实现简单登陆的例子,总结看看SpringMVC+Mybatis怎么实现. Spring一开始是轻量 ...

  3. 超详细,新手都能看懂 !使用SpringBoot+Dubbo 搭建一个简单的分布式服务

    来自:JavaGuide Github 地址:https://github.com/Snailclimb/springboot-integration-examples 目录: 使用 SpringBo ...

  4. 使用 SpringBoot+Dubbo 搭建一个简单分布式服务

    实战之前,先来看几个重要的概念 开始实战之前,我们先来简单的了解一下这样几个概念:Dubbo.RPC.分布式.由于本文的目的是带大家使用SpringBoot+Dubbo 搭建一个简单的分布式服务,所以 ...

  5. dubbo入门和springboot集成dubbo小例子

    从零开始搭建springboot-dubbo的例子 Dubbo 是一个分布式服务框架,致力于提供高性能和透明化的 RPC 远程服务调用方案,以及 SOA 服务治理方案 一. Dubbo的简单介绍 1. ...

  6. 本地Windows环境Dubbo搭建测试

    Dubbo介绍 Dubbo[]是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案. 其核心部分包含: 远程通讯: 提供对多种基于长连接的NIO框架抽象封装, ...

  7. dubbo 搭建以及使用笔记

    公司使用dubbo做为rpc框架,有必要简单学习一番(自己搭建),自己做下学习记录. dubbo认识: dubbo是分布式SOA(面向服务)架构的rpc服务治理框架.可兼容各种rpc,强势的地方主要还 ...

  8. dubbo 搭建开发环境

    本文是基于maven的,预先使用,先装maven. dubbo是一个分布式服务框架,提供一个SOA的解决方案.简单的说,dubbo就像在生产者和消费者中间架起了一座桥梁,使之能透明交互. 本文旨在搭建 ...

  9. Dubbo搭建HelloWorld-搭建服务提供者与服务消费者并完成远程调用(附代码下载)

    场景 Dubbo简介与基本概念: https://blog.csdn.net/BADAO_LIUMANG_QIZHI/article/details/103555224 Dubbo环境搭建-ZooKe ...

随机推荐

  1. oracle查询第一篇

    第一个小知识点: clear 在oracle中也可以用以清除屏幕上的内容 第二个小知识点: 在一个表中插入自身的查询结果 insert into my_table (id,name,age) sele ...

  2. Vulkan Tutorial 15 Framebuffers

    操作系统:Windows8.1 显卡:Nivida GTX965M 开发工具:Visual Studio 2017 我们在前面的章节中已经讨论了很多次framebuffers帧缓冲区,到目前为止我们配 ...

  3. asp.net core 教程(六)-中间件

    Asp.Net Core-中间件 在这一章,我们将了解如何设置中间件.中间件技术在 ASP.NET Core中控制我们的应用程序如何响应 HTTP 请求.它还可以控制应用程序的异常错误,这是一个在如何 ...

  4. Linq之关键字基本查询

    子句 说明 from 指定数据源和范围变量(类似于迭代变量). where 根据一个或多个由逻辑"与"和逻辑"或"运算符(&& 或 ||)分隔的 ...

  5. CoolBlog开发笔记第3课:创建Django应用

    教程目录 1.1 CoolBlog开发笔记第1课:项目分析 1.2 CoolBlog开发笔记第2课:搭建开发环境 前言 经过上一节我们已经创建了CoolBlog工程,但是关于CoolBlog的功能代码 ...

  6. mkdirs自动创建文件夹

    //保存路径 如file路径是E:\filer\a.jpg File toSaveFile=new File("filePath"); if(toSaveFile!=null){ ...

  7. [leetcode-560-Subarray Sum Equals K]

    Given an array of integers and an integer k, you need to find the total number of continuous subarra ...

  8. 极致精简的webservice例子

    看了网上好多关于webservice的例子,基本上对初学者来说都是模棱两可云里雾里,现在,我将网上关于webservice的讲解提炼出来,通过一个最简单使用并且方便的例子,告诉大家什么是webserv ...

  9. 在当前光标处按指定属性显示字符 - BOIS中断

    在当前光标处按指定属性显示字符 - BOIS中断 最简单的调试方式是打印. 编写MBR时,判断MBR是否加载并运行,最直接的方式就是打印一个字符. INT 0x10 功能描述: 在当前光标处按指定属性 ...

  10. input标签在只允许输入数字的时候添加的代码

    oninput="this.value=this.value.replace(/\D/g, '')"