ITKeyword - 技术文章推荐分享

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

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

相关推荐:[android]android自动化测试十之单元测试实例

android源代码中每个app下中都自带了一个test用例,下面主要介绍下camra单元测试用例 在AndroidManifest.xml中标明了测试用例instrumentation函数入口 Java代码 <xml version="1.0" encoding="utf-8"> <!-- Copyright (C) 2008 The Android Open S

原文地址:http://blog.csdn.net/morning99/article/details/40426781学习地址:http://www.cnblogs.com/Javame/p/3632473.html分布式目录(?)[+]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 包[html] view plaincopy<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>

<failOnErro

相关推荐:[Android]单元测试实例

转自:http://yuanzhifei89.iteye.com/blog/1122104 作者:yuanzhifei 测试相关资源 让开发自动化: 用 Eclipse 插件提高代码质量http://www.ibm.com/developerworks/cn/java/j-ap01117/index.html 代码测试覆盖率介绍:http://www.cnblogs.com/coderzh/

r>false</failOnError>

</configuration>

</plugin>

</plugins>

</build>

</project>

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

[html] view plaincopy<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[java] view plaincopypackage com.mor.server.dubbo.service;

public interface DemoServer {

String sayHello(String str);

}

demodubboserver\src\main\java\com\mor\server\dubbo\service\DemoServerImpl.java[java] view plaincopy<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[java] view plaincopypackage 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[html] view plaincopylog4j.appender.Stdout=org.apache.log4j.ConsoleAppender

log4j.appender.Stdout.layout=org.apache.log4j.PatternLayout

log4j.appender.Stdout.layout.conversionPattern=%-5p - %-26.26c{1} - %m\n

log4j.rootLogger=INFO,Stdout

log4j.logger.org.apache.wicket=INFO

log4j.logger.org.apache.wicket.protocol.http.HttpSessionStore=INFO

log4j.logger.org.apache.wicket.version=INFO

log4j.logger.org.apache.wicket.RequestCycle=INFO

客户端代码:[java] view plaincopypackage 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[java] view plaincopypackage 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.最后 启动客户端调用服务服务端打包

相关推荐:(阿里巴巴 dubbo,有数据库,可执行 )dubbo zookeeper spring demo

源码下载 http://download.csdn.net/download/knight_black_bob/9439432如果大家没有 zookeeper可以下载一个 cloudera配置 <dubbo:registry id="zk1" address="quickstart.cloudera:2181" protocol="zookeeper" />测试成功 ,provide

原文地址:http://blog.csdn.net/morning99/article/details/40426781学习地址:http://www.cnblogs.com/Javame/p/3632473.html分布式目录(?)[+]1.???概述?D...

------分隔线----------------------------