关闭

duubo入门

标签: dubbo入门dubbo hello world
1296人阅读 评论(0) 收藏 举报
分类:

什么是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


至此结束








0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:23339次
    • 积分:429
    • 等级:
    • 排名:千里之外
    • 原创:20篇
    • 转载:1篇
    • 译文:0篇
    • 评论:2条
    文章分类
    最新评论