spring+dubbo入门手记

一.dubbo简介

  1. Dubbo 是阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring 框架无缝集成。

  2. 主要核心部件:

  • Remoting: 网络通信框架,实现了 sync-over-async 和 request-response 消息机制
  • RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能
  • Registry: 服务目录框架用于服务的注册和服务事件发布和订阅
  1. Dubbo 工作原理


    开源官方原理图
  • Provider
    暴露服务方称之为“服务提供者”
  • Consumer
    调用远程服务方称之为“服务消费者”
  • Registry
    服务注册与发现的中心目录服务称之为“服务注册中心”
  • Monitor
    统计服务的调用次调和调用时间的日志服务称之为“服务监控中心”

二. 快速启动

Dubbo 采用全 Spring 配置方式,透明化接入应用,对应用没有任何 API 侵入,只需用 Spring 加载 Dubbo 的配置即可,Dubbo 基于 Spring 的 Schema 扩展 进行加载。
如果不想使用 Spring 配置,可以通过 API 的方式 进行调用。

  1. 提供服务接口与实现(Service与ServiceImpl)
package org.apache.dubbo.demo;

public interface DemoService {
    String sayHello(String name);
}
//实现略 DemoServiceImpl 
  1. 用 Spring 配置声明暴露服务与引用服务
  • 暴露服务 provider.xml:


 
    
    
 
    
    
 
    
    
 
    
    
 
    
    

  • 加载 Spring 配置 要启动spring容器
    Provider.java:
import org.springframework.context.support.ClassPathXmlApplicationContext;
 
public class Provider {
    public static void main(String[] args) throws Exception {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"http://10.20.160.198/wiki/display/dubbo/provider.xml"});
        context.start();
        System.in.read(); // 按任意键退出
    }
}
  • 引用远程服务
    consumer.xml:


 
    
    
 
    
    
 
    
    

  • Consumer.java (也可以使用 IoC 注入)
import org.springframework.context.support.ClassPathXmlApplicationContext;
import org.apache.dubbo.demo.DemoService;
 
public class Consumer {
    public static void main(String[] args) throws Exception {
        ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] {"http://10.20.160.198/wiki/display/dubbo/consumer.xml"});
        context.start();
        DemoService demoService = (DemoService)context.getBean("demoService"); // 获取远程服务代理
        String hello = demoService.sayHello("world"); // 执行远程方法
        System.out.println( hello ); // 显示调用结果
    }
}

你可能感兴趣的:(spring+dubbo入门手记)