Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。

我也不明白这是什么意思,使用了之后大概就是提供一个将多个项目进行联合的一种分布式,使用的是一种长链接的方法,具体没有深入研究,只是试用了一下。

其核心部分包含:

  • 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。(具体应该是一种长连接的方式,所以速度较快)
  • 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。(使用dubbo,一般会使用zookeeper来做集群)
  • 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。(统一的注册中心,如果注册中心挂掉了,已经注册的会存在于缓存中,不会断掉。)

Dubbo能做什么?

  • 透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。
  • 软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。
  • 服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。

另外dubbo进行了与spring的完全融合,所以可以直接通过spring的xml文件进行配置,至于怎么与spring-boot整合,还不知道。

上实现:

1.首先需要一个zookeeper;具体用法请百度。

2.启动zookeeper,以这个服务作为注册中心

3.生产者,首先引入zookeeper的jar

<!-- zookeeper -->
<dependency>
<groupId>com.github.sgroschupf</groupId>
<artifactId>zkclient</artifactId>
<version>0.1</version>
<scope>provided</scope>
</dependency> <dependency>
<groupId>org.apache.zookeeper</groupId>
<artifactId>zookeeper</artifactId>
<version>3.4.6</version>
<exclusions>
<exclusion>
<artifactId>jmxtools</artifactId>
<groupId>com.sun.jdmk</groupId>
</exclusion>
<exclusion>
<artifactId>jmxri</artifactId>
<groupId>com.sun.jmx</groupId>
</exclusion>
<exclusion>
<artifactId>jms</artifactId>
<groupId>javax.jms</groupId>
</exclusion>
</exclusions>
</dependency>

然后是dubbo

    <dependency>
<groupId>com.alibaba</groupId>
<artifactId>dubbo</artifactId>
<version>2.4.9</version>
<scope>compile</scope>
<exclusions>
<exclusion>
<artifactId>spring</artifactId>
<groupId>org.springframework</groupId>
</exclusion>
</exclusions>
</dependency>

别忘了还有spring的,这里就不贴了

3.1:

首先定义一个接口,用来发布的:

public interface ProvideService {

    public String sayHello(String name);
}

进行实现:

@Service(value = "provideService")
public class ProvideServiceImpl implements ProvideService { public String sayHello(String name){
System.out.println ("ProvideServiceImpl sayHello 走到了");
return name + " say Hello";
} }

然后是最关键的spring 配置dubbo

applicationContext.xml

    <!-- 启动spring注解扫描 -->
<context:annotation-config /> <context:component-scan base-package="com.dubbo.*" /> <!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="lclc_provider" /> <!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181" /> <!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" /> <!-- 声明需要暴露的服务接口 -->
<dubbo:service interface="com.dubbo.ProvideService"
ref="provideService" />

启动spring即可

 public static void main(String[] args){
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext ("applicationContext.xml");
context.start ();
try {
System.in.read ();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace ();
}// 按任意键退出
}

4.然后是消费者

引入的jar包与生产者一样,但是需要多加一个,即生产者方提供的接口,因为是通过接口进行代理的

4.1:消费

  public static void main(String[] args){
ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext ("applicationContext.xml"); context.start (); ProvideService demoService = (ProvideService) context.getBean ("ProvideService");// 获取远程服务代理 String hello = demoService.sayHello ("lclc");// 执行远程方法 System.err.println (hello);// 显示调用结果
}

application.xml

<!-- 启动spring注解扫描 -->
<context:annotation-config /> <context:component-scan base-package="com.dubbo.*" /> <!-- 提供方应用信息,用于计算依赖关系 -->
<dubbo:application name="lclc_consumer" /> <!-- 使用zookeeper注册中心暴露服务地址 -->
<dubbo:registry address="zookeeper://127.0.0.1:2181" /> <!-- 用dubbo协议在20880端口暴露服务 -->
<dubbo:protocol name="dubbo" port="20880" /> <dubbo:reference id="ProvideService" interface="com.dubbo.ProvideService" />

请注意:生产者与消费者是两个项目,是部署在两个服务器上的,通过dubbo进行链接起来,消费者调用生产者的接口就像调用本地一样。

dubbo示例的更多相关文章

  1. SpringBoot系列之集成Dubbo示例教程

    一.分布式基本理论 1.1.分布式基本定义 <分布式系统原理与范型>定义: "分布式系统是若干独立计算机的集合,这些计算机对于用户来说就像单个相关系统" 分布式系统(d ...

  2. dubbo & zookeeper & springMVC

    一.安装准备 1.环境简介 名称 版本 OS Mac OS X 10.11.5 JDK 1.8.0_51 dubbo 2.5.4 tomcat 8.0.35 Zookeeper 3.4.8 maven ...

  3. 简单易懂dubbo入门实例

    一.创建Maven多模块项目 项目结构如下 模块介绍: dubbo-api            ----API接口 dubbo-consumer ----消费者 dubbo-provider     ...

  4. dubbo问题集合

    背景:用于整理在开发过程中遇到的相关问题. Dubbo Server的时候出现“Will not attempt to authenticate using SASL (unknown error)” ...

  5. 俯瞰Dubbo全局,阅读源码前必须掌握这些!!

    写在前面 在上一篇<冰河开始对Dubbo下手了!>一文中,我们重点介绍了为何要学习Dubbo,而且还是要深入理解Dubbo的原理和核心源码.既然是要写深度解析Dubbo源码的系列专题,我们 ...

  6. 分布式服务通讯框架XXL-RPC

    <分布式服务通讯框架XXL-RPC>    一.简介 1.1 概述 XXL-RPC 是一个分布式服务通讯框架,提供稳定高性能的RPC远程服务调用功能.现已开放源代码,开箱即用. 1.2 特 ...

  7. 分布式服务框架XXL-RPC

    <分布式服务框架XXL-RPC>      一.简介 1.1 概述 XXL-RPC 是一个分布式服务框架,提供稳定高性能的RPC远程服务调用功能.拥有"高性能.分布式.注册中心. ...

  8. spring boot入门与进阶

    视频课程包含: SpringBoot入门.SpringBoot进阶.Spring Cloud微服务.Spring Ecosystem 微服务相关.Spring Boot 入门 IDEA 版本.Spri ...

  9. spring boot入门与进阶教程

    SpringBoot入门.SpringBoot进阶.Spring Cloud微服务.Spring Ecosystem 微服务相关.Spring Boot 入门 IDEA 版本.Spring Boot集 ...

随机推荐

  1. VC6.0加载lib文件的三种方法

    MFC编写程序,都要用到动态链接库,MFC相关的动态库有MFCD42和MFC42等,MFC框架程序已经自动加载,那么如何引入第三方的动态链接库到工程中呢? 静态链接库是要先把程序中所需要使用的函数编译 ...

  2. [LeetCode 题解]: Permutations

    Given a collection of numbers, return all possible permutations. For example,[1,2,3] have the follow ...

  3. elasticsearch(0.90.10)安装配置+超多插件!!

    一)安装elasticsearch 1)下载elasticsearch-0.90.10,解压,运行\bin\elasticsearch.bat (windwos) 2)进入http://localho ...

  4. 使用web API和NPOI导出Excel

    使用MVC controller输出excel的例子,自不待言,例子满天飞. 由于本项目使用的是Asp.net MVC API,因此在本项目使用API,实现了文件下载功能.代码的原理很简单,基本上是老 ...

  5. C# usb设备的自动退出

    using System; using System.Collections.Generic; using System.Text; using System.Runtime.InteropServi ...

  6. django静态文件路径配置

    在settings.py中加入 STATICFILES_DIRS = [ os.path.join(BASE_DIR,'static') ] 即可在html中引用该目录下的静态文件 <!DOCT ...

  7. Python【filter、map、reduce】

    filter和map和reduce map(function,iterable...) -> list 映射,对列表中的每个值操作 返回操作后的数值组成列表 # 给列表值+1 l = [1,2, ...

  8. HAOI2010 订货

    题目链接:戳我 费用流. 将每天分成早上和晚上两个点.源点向早上连容量INF,费用为进货量的边.早上向汇点连容量供货量,费用0.早上向晚上连容量为S,费用为0的边.晚上向第二天早上连容量S,费用0.之 ...

  9. JVM_垃圾收集器

    最近刚好有时间,就简单的看了下JVM的几种垃圾回收器,它们都是计算机历史发展的产物,先简单的做一个整理,并没有哪一款垃圾收集器就一定是最优,还需要结合使用场景.参数配置等进行考量,根据系统情况搭配出尽 ...

  10. 【spring】SpringBoot之Servlet、Filter、Listener配置

    转载自 http://blog.csdn.net/king_is_everyone/article/details/53116744 1.介绍 通过之前的文章来看,SpringBoot涵盖了很多配置, ...