dubbo 快速入门

原创 2018年04月17日 15:44:57

dubbo 阿里开源的一个SOA服务治理框架,从目前来看把它称作是一个RCP远程调用框架更为贴切。单从RPC框架来说,功能较完善,支持多种传输和序列化方案,其核心功能如下:

1.远程通讯:提供对多种基于长连接的NIO框架的封装,包括多种线程模型、序列化,以及"请求-响应"模式的信息交换方式。

2.集群容错:提供基于接口方法的透明远程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。

3.自动发现:基于注册中心目录服务,使服务消费当能动态的查找服务 提供方,使地址透明,使服务提供方可以平滑增加或减少机器。

具体参考用户指南http://dubbo.apache.org/books/dubbo-user-book/

项目所需jar包:

<dependencies>
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.5.8</version>
        </dependency>
        <dependency>
            <groupId>redis.clients</groupId>
            <artifactId>jedis</artifactId>
            <version>2.9.0</version>
        </dependency>
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.3.3</version>
        </dependency>
        <!-- https://mvnrepository.com/artifact/com.101tec/zkclient -->
        <dependency>
            <groupId>com.101tec</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.10</version>
        </dependency>
        <dependency>
            <groupId>org.slf4j</groupId>
            <artifactId>slf4j-log4j12</artifactId>
            <version>1.7.22</version>
        </dependency>
        <dependency>
            <groupId>log4j</groupId>
            <artifactId>log4j</artifactId>
            <version>1.2.17</version>
        </dependency>
        <dependency>
            <groupId>org.apache.commons</groupId>
            <artifactId>commons-pool2</artifactId>
            <version>2.4.2</version>
        </dependency>
        <dependency>
            <groupId>org.mortbay.jetty</groupId>
            <artifactId>jetty</artifactId>
            <version>6.1.26</version>
        </dependency>
        <dependency>
            <groupId>com.caucho</groupId>
            <artifactId>hessian</artifactId>
            <version>4.0.51</version>
        </dependency>
        <dependency>
            <groupId>org.apache.httpcomponents</groupId>
            <artifactId>httpclient</artifactId>
            <version>4.5.3</version>
        </dependency>
    </dependencies>

服务提供方:

SampleService接口:

public interface SampleService {
	String sayHello(String name);
}

SampleServiceImpl实现类:

public class SampleServiceImpl implements SampleService {

	public String sayHello(String name) {
		return "Hello " + name;
	}

}

配置文件:spring-dubbo-provider.xml

<?xml version="1.0" encoding="GBK" ?>
<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="sample-provider"/>
   
    <dubbo:registry protocol="zookeeper" address="192.168.50.110:2181" check="true"/>

     <!-- 用dubbo协议在20880端口暴露协议 -->
 	<dubbo:protocol name="dubbo" port="20880"/>
    
    <!-- 声明要暴露的接口 -->
    <dubbo:service interface="com.ty.sample.service.SampleService" ref="sampleServiceImpl"/>
    <bean id="sampleServiceImpl" class="com.ty.sample.service.impl.SampleServiceImpl"/>
</beans>

log4j.properties:

log4j.appender.console=org.apache.log4j.ConsoleAppender
log4j.appender.console.layout=org.apache.log4j.PatternLayout
log4j.appender.console.layout.ConversionPattern=%d{HH:mm:ss,SSS} [%p] [%c] - %m%n
log4j.rootCategory=info, console

服务发布 测试类:

public class DubboProviderTest {
	public static void main(String[] args) throws IOException {
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
				new String[] { "config/spring-dubbo-provider.xml" });
		context.start();
		System.in.read(); // 为保证服务一直开着,利用输入流的阻塞来模拟
	}

}

服务消费方:

配置文件:spring-dubbo-consumer.xml

<?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="sample-consumer" />
	<dubbo:registry protocol="zookeeper" address="192.168.50.110:2181" check="true"/>

	<dubbo:reference id="sampleService" timeout="2000"
		interface="com.ty.sample.service.SampleService"  />
</beans>

测试类:DubboConsumerTest

public class DubboConsumerTest {
	public static void main(String[] args) throws IOException {
		ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(
				new String[] { "config/spring-dubbo-consumer.xml" });
		context.start();
		SampleService sampleService = context.getBean("sampleService", SampleService.class);
		String hello = sampleService.sayHello("wyy");
		System.err.println(hello);
		System.in.read();

	}

}

Dubbo快速入门实例

附上官方资料地址Dubbo  jar包, 源码, 文档, pom.xml  下载地址 http://repo1.maven.org/maven2/com/alibaba/dubbo/ 在eclipse...
  • hjiacheng
  • hjiacheng
  • 2017-02-12 14:18:59
  • 825

Dubbo快速入门

Dubbo是什么? Dubbo[]是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。 其核心部分包含: • 远程通讯: 提供对多种基于长连接的N...
  • qq_41360055
  • qq_41360055
  • 2018-02-04 10:29:43
  • 46

Dubbo入门之HelloWorld篇

一、前言 Dubbo是阿里巴巴推出的分布式服务器,通过Dubbo可以为Web应用提供WebService的功能。把单服务器应用实现分布式,万事开头难,在Dubbo的使用前,必须要部署Dubb...
  • WJW15363193644wjw
  • WJW15363193644wjw
  • 2017-05-29 15:26:04
  • 993

dubbo入门教程

1. 学习大纲 1、 了解什么是dubbo? 2、 我们使用dubbo能做什么? 3、 Dubbo入门 4、 Dubbo管理 2. 什么是dubbo? 2.1. 简介 DUBBO...
  • weixin_40144050
  • weixin_40144050
  • 2018-01-23 08:45:21
  • 127

最简单的dubbo教程-快速入门《一》

所需环境zookeeper作为dubbo的注册中心,dubbo服务提供方和消费方都需要在zookeeper注册中心注册。 可参考:http://blog.csdn.net/jingyangv587/...
  • jingyangV587
  • jingyangV587
  • 2017-12-26 14:29:34
  • 5746

dubbo简单入门(helloworld例子)

Dubbo现在支持的有三种方式: 1.multicast; 2.zookeeper; 3.redis 下面的Demo使用的是multicast方式。提供者项目结构: 消...
  • qq_16055765
  • qq_16055765
  • 2016-05-31 09:56:39
  • 4429

dubbo全套视频教程

  • 2017年11月23日 09:28
  • 48B
  • 下载

dubbo快速入门

  • 2017年04月29日 17:54
  • 18KB
  • 下载

Spring基础:快速入门spring cloud(1):Spring Cloud介绍

分布式系统, 微服务, Java, 当这三个词放到一起的时候, 很多人自然而然地就会想起Spring Cloud. Spring Cloud是Spring总多的Project中的一个,它提供了一整套的...
  • liumiaocn
  • liumiaocn
  • 2016-12-25 08:31:12
  • 14992

Dubbo新手入门实例HelloWorld(zookeeper)

最近刚接触dubbo,新手入门遇到好多麻烦,网上搜来的入门demo也是各种问题,百般周折自己终于倒腾出来了,与大家共享~1.创建服务方项目dubbo-server,在pom.xml中构建项目依赖&am...
  • xingbaozhen1210
  • xingbaozhen1210
  • 2016-05-26 15:47:24
  • 6929
收藏助手
不良信息举报
您举报文章:dubbo 快速入门
举报原因:
原因补充:

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