`
Reverie夜
  • 浏览: 21496 次
  • 性别: Icon_minigender_1
  • 来自: 惠州
社区版块
存档分类
最新评论

【简单实例】Dubbo+Zookeeper+Spring

阅读更多

关于Dubbo~不介绍~不介绍~不介绍~(重要的事情要说三遍)

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓官网↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

http://dubbo.io/

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

 

准备:

zookeeper(下载地址:https://zookeeper.apache.org/releases.html#download);

四个项目(只要服务提供端和服务消费端也行后面说~):

    (父项目)dubboparent

    (接口)dubboapi

    (服务提供端)dubboserver

    (服务消费端)dubboclient

 ヽ(  ̄д ̄;) 顺便一说,我用的是maven工具构建的项目

 

 启动zookeeper 

 下载 zookeeper 解压,把zoo_sample.cfg改名为zoo.cfg,因为Zookeeper在启动时会找这个文件作为默认配置文件;可以设置文件里的dataDir,设置为自己喜欢的输出路径~其他设置请找度娘~

设完后启动,为了好看直接用命令了
(linux是zkServer.sh,有点多余谁不知道?)

成功启动后,占用2181端口↓

 
 构建项目:

~写项目~写项目~写项目~写项目 ヽ(  ̄д ̄;)



 

dubboparent          /pom.xml (包括spring、dubbo、zookeeper的jar包)其他子项目需要依赖这货√

<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.night</groupId>
  <artifactId>dubboparent</artifactId>
  <version>1.0-SNAPSHOT</version>
  <packaging>pom</packaging>

  <name>dubboparent</name>
  <url>http://maven.apache.org</url>
  
  <modules>
  	<module>../dubboapi</module>
  	<module>../dubboserver</module>
  	<module>../dubboclient</module>
  </modules>

  <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>

  <dependencyManagement>
  	<dependencies>
  		<dependency>
	    	<groupId>com.night</groupId>
			<artifactId>dubboapi</artifactId>
			<version>1.0-SNAPSHOT</version>
    	</dependency>
  	</dependencies>
  </dependencyManagement>
  
  <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.4.8</version>
	</dependency>
  </dependencies>
  
  <build>
		<plugins>
			<plugin>
				<artifactId>maven-surefire-plugin</artifactId>
				<version>2.12.4</version>
				<configuration>
					<skipTests>true</skipTests>
				</configuration>
			</plugin>
		</plugins>
	</build>
  
  <distributionManagement>
  	<repository>
  		<id>releases</id>
  		<name>Internal Releases</name>
  		<url>http://192.168.1.233:8081/nexus/content/repositories/releases/</url>
  	</repository>
  	<snapshotRepository>
  		<id>snapshots</id>
  		<name>Internal Snapshots</name>
  		<url>http://192.168.1.233:8081/nexus/content/repositories/snapshots/</url>
  	</snapshotRepository>
  </distributionManagement>
  
</project>
 

 

dubboapi:(dubboserver和dubboclient的依赖这货√的接口)


 DemoService.java

package com.night.dubboapi.service;

/**
 * 
 * @author ReverieNight@Foxmail.com
 *
 */
public interface DemoService {
	String sayHi(String name);
}
 

 

dubboserver :


 

DemoServiceImpl.java

package com.night.dubboserver.service;

import java.text.SimpleDateFormat;

import com.night.dubboapi.service.DemoService;

/**
 * 
 * @author ReverieNight@Foxmail.com
 *
 */
public class DemoServiceImpl implements DemoService {

	@Override
	public String sayHi(String name) {
		String s = "Server: Hi~ " + name + " time: " 
				+ new SimpleDateFormat("EEEE HH:mm:ss").format(System.currentTimeMillis());
		System.out.println(s);
		return s;
	}

}

 

Main.java

package com.night.dubboserver;

import java.io.IOException;

import org.springframework.context.support.ClassPathXmlApplicationContext;

/**
 * 
 * @author ReverieNight@Foxmail.com
 *
 */
public class Main {

	public static void main(String[] args) {
		ClassPathXmlApplicationContext content = new ClassPathXmlApplicationContext("applicationProvider.xml");
		content.start();
		System.out.println("按任意键退出");
		try {
			System.in.read();	//输入流阻塞,保持服务
		} catch (IOException e) {
			e.printStackTrace();
		}

	}

}

 

applicationProvider.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="dubboserver-hi" />  
    
    <!-- 使用zookeeper注册中心暴露服务地址 --> 
    <dubbo:registry address="zookeeper://192.168.1.233:2181"  />
     
    <!-- 用dubbo协议在20880端口暴露服务 -->  
    <dubbo:protocol name="dubbo" port="20880" />
          
    <!-- 声明需要暴露的服务接口 -->  
    <dubbo:service interface="com.night.dubboapi.service.DemoService" ref="demoService" />  
    
    <!-- 和本地bean一样实现服务 -->
    <bean id="demoService" class="com.night.dubboserver.service.DemoServiceImpl" />  
    
</beans>  
 

 

dubboclient:


 

Main.java

package com.night.dubboclient;

import java.io.IOException;

import org.springframework.context.support.ClassPathXmlApplicationContext;

import com.night.dubboapi.service.DemoService;

/**
 * 
 * @author ReverieNight@Foxmail.com
 *
 */
public class Main {

	public static void main(String[] args) {
		ClassPathXmlApplicationContext content = new ClassPathXmlApplicationContext("applicationConsumer.xml");
		content.start();
		
		DemoService demo = (DemoService) content.getBean("demoService");
		String s = demo.sayHi("reverie");
		System.out.println(s);
		try {
			System.in.read();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}

}

 

applicationConsumer.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="dubboclient-hi" />  
    
    <dubbo:registry address="zookeeper://192.168.1.233:2181"  />
     
    <!-- 声明需要引用的服务接口 -->  
    <dubbo:reference id="demoService" interface="com.night.dubboapi.service.DemoService" />  
    
    
</beans>  
 

 

运行:

启动顺序

    zookeeper

    服务端 dubboserver

    消费端 dubboclient

 

运行结果

    
服务端:

消费端:
 
  附:ヽ(  ̄д ̄;) 如果只想一个服务端一个消费端(客户端)的话,由于暴露和引用的接口必须一样,所以在消费端需要有一个于消费端暴露的接口一样的接口;可以写一个一模一样的也可以把服务端打包引入消费端。

 

 -------------------------------------------------------华丽的分割线-----------------------------------------------------------

 

 注解方式:

 

 服务端spring配置文件加入:

<dubbo:annotation package="com.night.dubboserver.service" />

 扫描注解包路径,多个包用逗号分隔,不填pacakge表示扫描当前ApplicationContext中所有的类 ← 官方原话

 

消费端spring配置文件加入:

<dubbo:annotation package="com.night.dubboclient" />

 

 

 

 

 

 

 

 

  • 大小: 1.2 KB
  • 大小: 49.6 KB
  • 大小: 2 KB
  • 大小: 12.9 KB
  • 大小: 15.3 KB
  • 大小: 14.1 KB
  • 大小: 3.4 KB
  • 大小: 4.7 KB
  • 大小: 4.4 KB
  • 大小: 5.7 KB
分享到:
评论

相关推荐

    springboot+dubbo+zookeeper构建的分布式调用服务框架

    【SpringBoot + Dubbo + ZooKeeper 构建的分布式调用服务框架】 SpringBoot 是一个由 Pivotal 团队创建的 Java 框架,它简化了在 Spring 框架上创建独立的、生产级别的基于 Java 的应用程序。SpringBoot 通过提供...

    dubbo+zookeeper实例

    【描述】提到的" dubbo+zookeeper+springmvc实例demo"是一个综合性的应用示例,它将Dubbo的远程调用能力、Zookeeper的服务发现和注册功能与Spring MVC的Web开发框架结合在一起。这个实例通常会展示如何在Spring MVC...

    springcloudalibaba微服务dubbo+sentinel+gateway+zookeeper+nacos的demo

    在微服务架构中,ZooKeeper常被用来作为服务注册与发现的中心,维护服务实例的动态信息,保证服务之间的通信可靠性。 5. **Nacos**: Nacos是阿里巴巴开源的动态配置服务和服务中心,它集成了服务注册与发现、配置...

    Dubbo+Zookeeper+SpringMVC整合实例

    1. **设置环境**:确保所有必要的依赖库(如dubbo、zookeeper、spring-mvc等)已添加到项目中,可以通过Maven或Gradle进行管理。 2. **创建服务提供者**:在服务提供者的应用中,配置Dubbo的`application.xml`,...

    dubbo+zookeeper+spring -demo

    这个“dubbo+zookeeper+spring -demo”项目是一个典型的分布式系统架构实践,它展示了如何利用Dubbo构建分布式的微服务,通过Zookeeper实现服务的注册与发现,结合Spring简化服务的管理和调用。这样的架构模式在现代...

    dubbo+sping+zookeeper整合例子完整版(包括步骤文档和所有jar)

    【标题】"dubbo+spring+zookeeper整合案例详解" 【描述】该资源是一个全面的教程,涵盖了将Dubbo、Spring和Zookeeper整合到一起的实际操作步骤,包括完整的配置文件和必要的jar包。遗憾的是,它没有涉及Dubbo与...

    dubbo+zookeeper整合案例

    ### Dubbo与Zookeeper整合案例详解 #### 一、Dubbo简介 Dubbo是由阿里巴巴开源的一款高性能、轻量级的微服务框架,主要用于构建服务化的应用程序。它支持多种协议和服务发现机制,能够帮助开发者轻松地实现服务的...

    Dubbo+zookeeper 入门简单实例

    【标题】"Dubbo+zookeeper 入门简单实例"揭示了如何在Java环境中结合Dubbo和Zookeeper构建一个基础的服务治理框架。Dubbo是阿里巴巴开源的一款高性能、轻量级的Java服务治理框架,而Zookeeper则是一个分布式协调服务...

    ZooKeeper+dubbo+springMvc+Mybatis+Mysql 例子

    ZooKeeper+dubbo+springMvc+Mybatis+Mysql实例,项目是由maven搭建的 整合Dubbo\spring\springMvc\Mybatis,整个压缩包中有两个项目分别是提供者和消费,启动方式是打成WAR形式放到tomcat中启动。

    Dubbo+Zookeeper技术应用集成

    4. 实例演示:通过"Dubbo+Zookeeper技术应用集成.pptx"中的演示案例,理解如何定义服务接口和实现,以及如何在Zookeeper中注册服务。同时,可以参考"dubbo-zkp-demo.rar"提供的示例代码进行实践操作。 5. 测试验证...

    dubbo+zookeeper+spring 注解式开发demo

    在本项目"Dubbo + Zookeeper + Spring 注解式开发 demo"中,我们将深入探讨如何使用Dubbo、Zookeeper以及Spring框架进行分布式服务的注解式开发。Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了服务发现、...

    ssm+maven+dubbo+zookeeper分布式架构

    【SSM + Maven + Dubbo + Zookeeper 分布式架构详解】 在当今的互联网时代,分布式架构已经成为大型项目开发的标准配置。SSM、Maven、Dubbo和Zookeeper这四个技术组件是构建高效、可扩展的分布式系统的关键部分。...

    springboot+dubbo+zookeeper

    SpringBoot以其简洁的配置和快速的应用开发能力深受开发者喜爱,Dubbo作为阿里巴巴开源的高性能RPC框架,使得服务间的通信变得简单高效,而Zookeeper则是一个分布式协调服务,用于管理分布式环境中的配置信息、命名...

    Dubbo+Zookeeper+Spring的demo

    本示例"Dubbo+Zookeeper+Spring的demo"提供了一个整合这三种关键技术的实际应用案例,旨在帮助开发者理解如何将它们协同工作,创建出高效的服务治理解决方案。下面我们将深入探讨这三个组件及其相互作用。 首先,...

    Dubbo+Zookeeper技术架构实践.pdf

    在Spring Boot应用中,可以在`application.properties`文件中配置`dubbo.registry.address`属性,指向MSE提供的Zookeeper实例外网或内网地址。 总之,这份文档详细阐述了如何在MSE平台上使用Zookeeper集成Dubbo,为...

    dubbo+zookeeper+SpringMVC Demo

    【标题】"dubbo+zookeeper+SpringMVC Demo"是一个示例项目,它演示了如何在实际应用中整合这三个关键组件:Dubbo、Zookeeper和SpringMVC。Dubbo是阿里巴巴开源的一个高性能、轻量级的服务框架,用于构建微服务架构;...

    springboot+dubbo+zookeeper整合

    【SpringBoot + Dubbo + ZooKeeper 整合详解】 在现代企业级开发中,SpringBoot以其简洁的配置和快速的启动特性,成为了构建微服务的首选框架。而Dubbo作为阿里巴巴开源的分布式服务框架,专注于服务治理,为大型...

    Dubbo+Zookeeper 项目搭建

    2. **配置中心**:Dubbo可以通过Zookeeper来管理和分发配置,使得配置的更新可以在多个服务实例间同步。 3. **集群管理**:Zookeeper可以监控服务的健康状态,当服务异常时,可以触发故障转移。 了解了基本的配置和...

    Dubbo+Zookeeper入门实例

    【Dubbo+Zookeeper入门实例】深入解析 Dubbo是一个由阿里巴巴开源的高性能、轻量级的Java分布式服务框架,它的主要目标是为开发者提供一套简单易用的微服务治理方案。Dubbo的核心功能包括服务注册与发现、服务调用...

    ZooKeeper+dubbo+spring+springMvc+mybatis实例源码下载

    本实例源码涉及的核心技术栈包括ZooKeeper、dubbo、spring、springMvc和mybatis,这些组件共同构成了一个完整的微服务架构。下面将详细解析这些技术及其在项目中的应用。 首先,ZooKeeper是一个分布式的,开放源码...

Global site tag (gtag.js) - Google Analytics