duubo入门

原创 2016年05月31日 17:00:51

什么是dubbo

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

其核心部分包含:

  • 远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。
  • 集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。
  • 自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器


入门demo

服务端

public interface DubboTestAble {

    public Integer add(int num1,int num2);

}

public class DubboTest implements DubboTestAble {
    @Override
    public Integer add(int num1, int num2) {
        return num1 + num2 ;
    }
}

配置文件

<?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://code.alibabatech.com/schema/dubbo
           http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="hello-world-app"  />

    <!-- 使用multicast广播注册中心暴露服务地址 -->
    <!--<dubbo:registry address="multicast://224.5.6.7:1234" />-->

    <dubbo:registry address="zookeeper://192.168.1.162:2181" />

    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />

    <bean id="dubbo1" class="cn.zw.dubbo.DubboTest"/>
    <dubbo:service interface="cn.zw.dubbo.provider.DubboTestAble" ref="dubbo1"/>

</beans>

提示:在启动之前需要首先配置zookeeper

消费者

配置文件

<?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://code.alibabatech.com/schema/dubbo        http://code.alibabatech.com/schema/dubbo/dubbo.xsd">

    <!-- 消费方应用名,用于计算依赖关系,不是匹配条件,不要与提供方一样 -->
    <dubbo:application name="consumer-of-helloworld-app"  />

    <!-- 使用multicast广播注册中心暴露发现服务地址 -->
    <!--<dubbo:registry address="multicast://224.5.6.7:1234" />-->

    <dubbo:registry address="zookeeper://192.168.1.162:2181" />

    <!-- 生成远程服务代理,可以和本地bean一样使用demoService -->
    <dubbo:reference id="demoService" interface="cn.zw.dubbo.provider.DubboTestAble" />

</beans>

java 代码

public class DubboClient {

    public static void main(String[] args) throws Exception {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("consumer.xml");
        context.start();
        DubboTestAble demoService = (DubboTestAble)context.getBean("demoService"); // 获取远程服务代理
        for(int i = 0 ; i < 10 ; i++){
            long  start = System.currentTimeMillis();
            int result = demoService.add(1,1); // 执行远程方法
            System.out.println("  server return : " +  result  +" ; times: " +  (System.currentTimeMillis() - start)); // 显示调用结果

        }
    }
}
console:

  server return : 2 ; times: 240
  server return : 2 ; times: 3
  server return : 2 ; times: 3
  server return : 2 ; times: 2
  server return : 2 ; times: 2
  server return : 2 ; times: 2
  server return : 2 ; times: 3
  server return : 2 ; times: 2
  server return : 2 ; times: 3
  server return : 2 ; times: 3


监控页面(dubbo-admin)

yyyy


至此结束








相关文章推荐

Dubbo入门---搭建一个最简单的Demo框架

Dubbo背景和简介Dubbo开始于电商系统,因此在这里先从电商系统的演变讲起。 单一应用框架(ORM) 当网站流量很小时,只需一个应用,将所有功能如下单支付等都部署在一起,以减少部署节点和成本。 ...

zookeeper和dubbo的关系

Dubbo建议使用Zookeeper作为服务的注册中心。 1.   Zookeeper的作用:         zookeeper用来注册服务和进行负载均衡,哪一个服务由哪一个机器来提供必需让调用...
  • daiqinge
  • daiqinge
  • 2016年04月29日 16:50
  • 42892

Dubbo详细介绍与安装使用过程

1 Dubbo介绍1.1 dubbox简介随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。 单一...

duubo duuboMock mockDubbo源代码解析 模拟dubbo调用,类似依赖注入获取对应信息

public class DubboProtocol extends AbstractProtocol { 这里面从请求参数里得到对应的invoker DubboExporter export...

Arcpy基础入门-2、arcpy的批处理功能

教程1中我们简单的说了arcpy的使用方法,这应该特符合中国的国情吧,先会用再说。我们这一节还是讲arcpy的使用。说一下arcpy的批处理功能。 ArcGIS作为世界领先的平台GIS软件,其应用的广...

.net实现的webservice——入门——简单实例分享

原理:WebService是一个SOA(面向服务的编程)的架构,它是不依赖于语言,不依赖于平台,可以实现不同的语言间的相互调用,通过Internet进行基于Http协议的网络应用间的交互。 作用:主...
  • wzwdcld
  • wzwdcld
  • 2014年06月22日 23:22
  • 518

OpenStack入门到实战视频教程全集下载(罗勇老师经典教程系列)

全网最经典的OpenStack 视频教程,现在免费了! 罗老师讲得实在是太好了,目前绝对是全网最好的openstack 入门视频,而且讲得特别细,非常适合初学者学习,收集了好久终于齐了,...

Java 随手笔记(入门篇)_ 3

前言      学习完了第一个java程序,之后就来系统的学习java。先从基础语法开始,这个语法你也可以理解为英语或是汉语里面的语法,只不过大家各有各的特点和区别。学习编程其实也是一个编程语言的学...

【React全家桶入门之九】图书管理与自动完成

图书管理还记得搭建项目的时候在db.json文件里写的book吗
  • awaw00
  • awaw00
  • 2017年02月07日 17:50
  • 3624

[机器学习入门] 李弘毅机器学习笔记-16 (Unsupervised Learning: Neighbor Embedding;无监督学习:邻域嵌套)

[机器学习入门] 李弘毅机器学习笔记-16 (Unsupervised Learning: Neighbor Embedding;无监督学习:邻域嵌套) PDF VIDEOManifold L...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:duubo入门
举报原因:
原因补充:

(最多只允许输入30个字)