关于Dubbo~不介绍~不介绍~不介绍~(重要的事情要说三遍)
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓官网↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑
准备:
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" />
相关推荐
【SpringBoot + Dubbo + ZooKeeper 构建的分布式调用服务框架】 SpringBoot 是一个由 Pivotal 团队创建的 Java 框架,它简化了在 Spring 框架上创建独立的、生产级别的基于 Java 的应用程序。SpringBoot 通过提供...
【描述】提到的" dubbo+zookeeper+springmvc实例demo"是一个综合性的应用示例,它将Dubbo的远程调用能力、Zookeeper的服务发现和注册功能与Spring MVC的Web开发框架结合在一起。这个实例通常会展示如何在Spring MVC...
在微服务架构中,ZooKeeper常被用来作为服务注册与发现的中心,维护服务实例的动态信息,保证服务之间的通信可靠性。 5. **Nacos**: Nacos是阿里巴巴开源的动态配置服务和服务中心,它集成了服务注册与发现、配置...
1. **设置环境**:确保所有必要的依赖库(如dubbo、zookeeper、spring-mvc等)已添加到项目中,可以通过Maven或Gradle进行管理。 2. **创建服务提供者**:在服务提供者的应用中,配置Dubbo的`application.xml`,...
这个“dubbo+zookeeper+spring -demo”项目是一个典型的分布式系统架构实践,它展示了如何利用Dubbo构建分布式的微服务,通过Zookeeper实现服务的注册与发现,结合Spring简化服务的管理和调用。这样的架构模式在现代...
【标题】"dubbo+spring+zookeeper整合案例详解" 【描述】该资源是一个全面的教程,涵盖了将Dubbo、Spring和Zookeeper整合到一起的实际操作步骤,包括完整的配置文件和必要的jar包。遗憾的是,它没有涉及Dubbo与...
### Dubbo与Zookeeper整合案例详解 #### 一、Dubbo简介 Dubbo是由阿里巴巴开源的一款高性能、轻量级的微服务框架,主要用于构建服务化的应用程序。它支持多种协议和服务发现机制,能够帮助开发者轻松地实现服务的...
【标题】"Dubbo+zookeeper 入门简单实例"揭示了如何在Java环境中结合Dubbo和Zookeeper构建一个基础的服务治理框架。Dubbo是阿里巴巴开源的一款高性能、轻量级的Java服务治理框架,而Zookeeper则是一个分布式协调服务...
ZooKeeper+dubbo+springMvc+Mybatis+Mysql实例,项目是由maven搭建的 整合Dubbo\spring\springMvc\Mybatis,整个压缩包中有两个项目分别是提供者和消费,启动方式是打成WAR形式放到tomcat中启动。
4. 实例演示:通过"Dubbo+Zookeeper技术应用集成.pptx"中的演示案例,理解如何定义服务接口和实现,以及如何在Zookeeper中注册服务。同时,可以参考"dubbo-zkp-demo.rar"提供的示例代码进行实践操作。 5. 测试验证...
在本项目"Dubbo + Zookeeper + Spring 注解式开发 demo"中,我们将深入探讨如何使用Dubbo、Zookeeper以及Spring框架进行分布式服务的注解式开发。Dubbo是一款高性能、轻量级的开源Java RPC框架,它提供了服务发现、...
【SSM + Maven + Dubbo + Zookeeper 分布式架构详解】 在当今的互联网时代,分布式架构已经成为大型项目开发的标准配置。SSM、Maven、Dubbo和Zookeeper这四个技术组件是构建高效、可扩展的分布式系统的关键部分。...
SpringBoot以其简洁的配置和快速的应用开发能力深受开发者喜爱,Dubbo作为阿里巴巴开源的高性能RPC框架,使得服务间的通信变得简单高效,而Zookeeper则是一个分布式协调服务,用于管理分布式环境中的配置信息、命名...
本示例"Dubbo+Zookeeper+Spring的demo"提供了一个整合这三种关键技术的实际应用案例,旨在帮助开发者理解如何将它们协同工作,创建出高效的服务治理解决方案。下面我们将深入探讨这三个组件及其相互作用。 首先,...
在Spring Boot应用中,可以在`application.properties`文件中配置`dubbo.registry.address`属性,指向MSE提供的Zookeeper实例外网或内网地址。 总之,这份文档详细阐述了如何在MSE平台上使用Zookeeper集成Dubbo,为...
【标题】"dubbo+zookeeper+SpringMVC Demo"是一个示例项目,它演示了如何在实际应用中整合这三个关键组件:Dubbo、Zookeeper和SpringMVC。Dubbo是阿里巴巴开源的一个高性能、轻量级的服务框架,用于构建微服务架构;...
【SpringBoot + Dubbo + ZooKeeper 整合详解】 在现代企业级开发中,SpringBoot以其简洁的配置和快速的启动特性,成为了构建微服务的首选框架。而Dubbo作为阿里巴巴开源的分布式服务框架,专注于服务治理,为大型...
2. **配置中心**:Dubbo可以通过Zookeeper来管理和分发配置,使得配置的更新可以在多个服务实例间同步。 3. **集群管理**:Zookeeper可以监控服务的健康状态,当服务异常时,可以触发故障转移。 了解了基本的配置和...
【Dubbo+Zookeeper入门实例】深入解析 Dubbo是一个由阿里巴巴开源的高性能、轻量级的Java分布式服务框架,它的主要目标是为开发者提供一套简单易用的微服务治理方案。Dubbo的核心功能包括服务注册与发现、服务调用...
本实例源码涉及的核心技术栈包括ZooKeeper、dubbo、spring、springMvc和mybatis,这些组件共同构成了一个完整的微服务架构。下面将详细解析这些技术及其在项目中的应用。 首先,ZooKeeper是一个分布式的,开放源码...