ITKeyword,专注技术干货聚合推荐

注册 | 登录

Dubbo 入门实例 本地伪集群测试Demo

clz1314521 2016-04-17

相关推荐:Dubbo 入门实例 本地伪集群测试Demo (推荐)

1.   概述   Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案 Dubbo是阿里巴巴SOA服务化治理方案的核心框架,

1.

概述 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点: 那么,Dubbo是什么?Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。其核心部分包含:远程通讯: 提供对多种基于长连接的NIO框架抽象封装,包括多种线程模型,序列化,以及“请求-响应”模式的信息交换方式。集群容错: 提供基于接口方法的透明远程过程调用,包括多协议支持,以及软负载均衡,失败容错,地址路由,动态配置等集群支持。自动发现: 基于注册中心目录服务,使服务消费方能动态的查找服务提供方,使地址透明,使服务提供方可以平滑增加或减少机器。Dubbo能做什么?透明化的远程方法调用,就像调用本地方法一样调用远程方法,只需简单配置,没有任何API侵入。软负载均衡及容错机制,可在内网替代F5等硬件负载均衡器,降低成本,减少单点。服务自动注册与发现,不再需要写死服务提供方地址,注册中心基于接口名查询服务提供者的IP地址,并且能够平滑添加或删除服务提供者。Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。 主要核心部件 Remoting: 网络通信框架,实现了sync-over-async 和 request-response 消息机制.RPC: 一个远程过程调用的抽象,支持负载均衡、容灾和集群功能Registry: 服务目录框架用于服务的注册和服务事件发布和订阅。

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

2.

简单实例实例源码:http://download.csdn.net/detail/morning99/8077301 首先简历maven工程pom.xml引用 dubbo zkclient zookeeper 和 spring jar 包?123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"

xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">

<modelVersion>4.0.0</modelVersion>

<groupId>com.mor.maven</groupId>

<artifactId>dubboserver</artifactId>

<version>0.0.1</version>

<packaging>jar</packaging>

<name>dubboserver</name>

<url>http://maven.apache.org</url>

<properties>

<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>

<spring.version>3.1.4.RELEASE</spring.version>

<slf4j.version>1.6.6</slf4j.version>

</properties>

<dependencies>

<dependency>

<groupId>junit</groupId>

<artifactId>junit</artifactId>

<version>3.8.1</version>

<scope>test</scope>

</dependency>

<!-- Spring -->

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-aop</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-asm</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-core</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-beans</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-context</artifactId>

<version>${spring.version}</version>

</dependency>

<dependency>

<groupId>org.springframework</groupId>

<artifactId>spring-expression</artifactId>

<version>${spring.version}</version>

</dependency>

<!-- spring end -->

<!-- log -->

<dependency>

<groupId>log4j</groupId>

<artifactId>log4j</artifactId>

<version>1.2.16</version>

</dependency>

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-api</artifactId>

<version>${slf4j.version}</version>

</dependency>

<dependency>

<groupId>org.slf4j</groupId>

<artifactId>slf4j-log4j12</artifactId>

<version>${slf4j.version}</version>

</dependency>

<!-- dubbo -->

<dependency>

<groupId>com.alibaba</groupId>

<artifactId>dubbo</artifactId>

<version>2.5.3</version>

</dependency>

<!-- zkclient

-->

<dependency>

<groupId>com.github.sgroschupf</groupId>

<artifactId>zkclient</artifactId>

<version>0.1</version>

</dependency>

<!--

zookeeper -->

<dependency>

<groupId>org.apache.zookeeper</groupId>

<artifactId>zookeeper</artifactId>

<version>3.3.6</version>

</dependency>

</dependencies>

<build>

<finalName>dubbo-demo</finalName>

<plugins>

<plugin>

<groupId>org.apache.maven.plugins</groupId>

<artifactId>maven-compiler-plugin</artifactId>

<version>2.1</version>

<configuration>

<source>1.5</source>

<target>1.5</target>

<encoding>UTF-8</encoding>

<failOnError>false</failOnError>

</configuration>

</plugin>

</plugins>

</build></project>因为要增加zookeeper的注册管理,所以如果有可用的zookeeper就用可用的zookeeper,没有可以按照如下的安装去本地安装一个。http://my.oschina.net/u/567296/blog/340832特别注意:zookeeper的服务端 和 本地调用 客户端的jar包版本最好要一致,否则会出现意想不到的惊喜。本人使用的zookeeper 是3.3.6 版本项目结构图服务端applicationProvider.xml?1234567891011121314151617<?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" />

<!-- 本机 伪集群 测试 -->

<dubbo:registry

protocol="zookeeper"

address="192.9.145.19:2181,192.9.145.19:2182,192.9.145.19:2183"

/>

<dubbo:protocol name="dubbo" port="20880" />

<dubbo:service interface="com.mor.server.dubbo.service.DemoServer"

ref="demoService" />

<!-- 和本地bean一样实现服务 -->

<bean id="demoService" class="com.mor.server.dubbo.service.DemoServerImpl" /></beans>客户端:applicationConsumer.xml?1234567891011<?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" />?1234<span style="white-space:pre">

</span><!-- 使用本地伪集群注册中心暴露发现服务地址 -->

<dubbo:registry

protocol="zookeeper"

address="192.9.145.19:2181,192.9.145.19:2182,192.9.145.19:2183" />

<!-- 生成远程服务代理,可以和本地bean一样使用demoService -->

<dubbo:reference id="demoService" interface="com.mor.server.dubbo.service.DemoServer" /></beans>在客户端要引入服务端生成的jar包服务端代码:demodubboserver\src\main\java\com\mor\server\dubbo\service\DemoServer.java ?1234package com.mor.server.dubbo.service;public interface DemoServer {

String sayHello(String str);}demodubboserver\src\main\java\com\mor\server\dubbo\service\DemoServerImpl.java?12345678910<span style="font-family:Courier New;">package com.mor.server.dubbo.service;import java.util.Date;public class DemoServerImpl implements DemoServer {

public String sayHello(String str) {

str = "Hello " + str + "2:" + new Date();

System.out.println("server:" + str);

return str;

}}</span><strong style="font-family: Arial;"></strong>demodubboserver\src\main\java\com\mor\main\Main.java?123456789101112package com.mor.main;import java.io.IOException;import org.springframework.context.support.ClassPathXmlApplicationContext; public class Main {

public static void main(String[] args) throws IOException {

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationProvider.xml" });

context.start();

System.out.println("按任意键退出");

System.in.read();

}}log4j.properties ?12345678910log4j.appender.Stdout=org.apache.log4j.ConsoleAppenderlog4j.appender.Stdout.layout=org.apache.log4j.PatternLayoutlog4j.appender.Stdout.layout.conversionPattern=%-5p - %-26.26c{1} - %m\n log4j.rootLogger=INFO,Stdout log4j.logger.org.apache.wicket=INFOlog4j.logger.org.apache.wicket.protocol.http.HttpSessionStore=INFOlog4j.logger.org.apache.wicket.version=INFOlog4j.logger.org.apache.wicket.RequestCycle=INFO客户端代码:?12345678910111213package com.mor.client.dubbo.action;import java.util.Date;import org.springframework.context.support.ClassPathXmlApplicationContext;import com.mor.server.dubbo.service.DemoServer; public class ChatAction {

public void SayHello(){

ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext(new String[] { "applicationConsumer.xml" });

context.start();

DemoServer demoServer = (DemoServer) context.getBean("demoService");

System.out.println("client:"+demoServer.sayHello("Morning"+"1:"+new Date())+"3:"+new Date());

}}dubboclient\src\main\java\com\mor\client\dubbo\main\Main.java?123456789package com.mor.client.dubbo.main;import com.mor.client.dubbo.action.ChatAction; public class Main {

public static void main(String[] args){

ChatAction act = new ChatAction();

act.SayHello();

}}============启动顺序================ 1.先启动 zookeeper 集群2.在启动 服务端3.最后 启动客户端调用服务服务端打包

1.   概述 Dubbo是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案Dubbo是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提

相关阅读排行


用户评论

游客

相关内容推荐

最新文章

×

×

请激活账号

为了能正常使用评论、编辑功能及以后陆续为用户提供的其他产品,请激活账号。

您的注册邮箱: 修改

重新发送激活邮件 进入我的邮箱

如果您没有收到激活邮件,请注意检查垃圾箱。