dubbo环境搭建及demo程序

dubbo环境搭建及demo程序一 环境搭建 dubbo 读音 d b 是一款高性能 轻量级的开源 JavaRPC 框架 它提供了三大核心能力 面向接口的远程方法调用 智能容错和负载均衡 以及服务自动注册和发现 1 搭建 zooKeeper 注册中心 d

大家好,欢迎来到IT知识分享网。

一、环境搭建

dubbo(读音[ˈdʌbəʊ])是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现;

1、搭建zooKeeper注册中心

2、搭建dubbo管理控制台

3、监控中心搭建

二、demo示例(普通maven项目)

1、新建工程

通过IDEA新建一个项目,选择Maven项目就可以,但觉得设置内容有点多,所以直接选择了springboot的项目,

在这里插入图片描述
由于这次不使用springboot,所以把springboot的依赖项都删除,但是添加dubbo和zookeeper的依赖项,把src目录也删掉。
pom.xml如下:

<?xml version="1.0" encoding="UTF-8"?> <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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-parent</artifactId> <version>2.1.9.RELEASE</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.xyzh</groupId> <artifactId>myduboo-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <name>myduboo-demo</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> </dependencies> <dependencyManagement> <dependencies> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> <version>1.7.28</version> </dependency> <!-- 添加 dubbo 依赖包 --> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> <version>2.6.5</version> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <version>4.0.1</version> <type>bundle</type> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <version>4.0.1</version> <type>bundle</type> </dependency> <!-- 添加 zookeeper 依赖包 --> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> <version>3.4.14</version> </dependency> <!--添加zkclient依赖包 --> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> <version>0.1</version> </dependency> </dependencies> </dependencyManagement> </project> 

2、新建API模块

<?xml version="1.0" encoding="UTF-8"?> <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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.xyzh</groupId> <artifactId>myduboo-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.xyzh</groupId> <artifactId>myduboo-api</artifactId> <version>0.0.1-SNAPSHOT</version> <name>myduboo-api</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> 
public interface IMyService { String helloService(String name); } 

注意需要在 myduboo-demo的pom中添加一行模块声明:

<modules> <module>myduboo-api</module> </modules> 

3、添加服务提供模块

<?xml version="1.0" encoding="UTF-8"?> <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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.xyzh</groupId> <artifactId>myduboo-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.xyzh</groupId> <artifactId>myduboo-provider</artifactId> <version>0.0.1-SNAPSHOT</version> <name>myduboo-provider</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <type>bundle</type> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <type>bundle</type> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> </dependency> <dependency> <groupId>com.xyzh</groupId> <artifactId>myduboo-api</artifactId> <version>0.0.1-SNAPSHOT</version> <scope>compile</scope> </dependency> </dependencies> <build> <plugins> <plugin> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-maven-plugin</artifactId> </plugin> </plugins> </build> </project> 

需要在resources 目录下添加配置文件:mydubbo-provider.xml,内容如下:

<?xml version="1.0" encoding="UTF-8"?> <!-- 添加 DUBBO SCHEMA --> <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="dubbo-provider"/> <!-- 连接到哪个本地注册中心 --> <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"/> <!-- 协议配置,用于配置提供服务的协议信息,协议由提供方指定,消费方被动接受 --> <dubbo:protocol name="dubbo" server="netty" port="20882" serialization="hessian2" /> <!-- 监控中心配置,protocol="registry",表示从注册中心发现监控中心地址 <dubbo:monitor protocol="registry"/> --> <!-- 当ProtocolConfig和ServiceConfig某属性没有配置时,采用此缺省值 --> <dubbo:provider timeout="30000" threadpool="fixed" threads="100" accepts="1000" /> <!-- 声明需要暴露的服务接口 --> <dubbo:service timeout="60000" interface="com.xyzh.mydubooapi.service.IMyService" ref="userService" protocol="dubbo"/> <!--具体实现该接口的 bean--> <bean id="userService" class="com.xyzh.mydubooprovider.service.MyServiceImpl"/> </beans> 

注意这里配置了注册端口,监控地址,协议,暴露的服务接口和 实现接口的bean

添加实现类:

public class MyServiceImpl implements IMyService { @Override public String helloService(String name) { return "hello,"+name; } } 

添加 main 类

public class ProviderApplication { public static void main(String[] args) throws IOException { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("mydubbo-provider.xml"); System.out.println(context.getDisplayName() + ": here"); context.start(); System.out.println("服务已经启动..."); System.in.read(); } } 

4、添加服务调用者

<?xml version="1.0" encoding="UTF-8"?> <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 https://maven.apache.org/xsd/maven-4.0.0.xsd"> <modelVersion>4.0.0</modelVersion> <parent> <groupId>com.xyzh</groupId> <artifactId>myduboo-demo</artifactId> <version>0.0.1-SNAPSHOT</version> <relativePath/> <!-- lookup parent from repository --> </parent> <groupId>com.xyzh</groupId> <artifactId>myduboo-consumer</artifactId> <version>0.0.1-SNAPSHOT</version> <name>myduboo-consumer</name> <description>Demo project for Spring Boot</description> <properties> <java.version>1.8</java.version> </properties> <dependencies> <dependency> <groupId>org.projectlombok</groupId> <artifactId>lombok</artifactId> <optional>true</optional> </dependency> <dependency> <groupId>org.slf4j</groupId> <artifactId>slf4j-api</artifactId> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>dubbo</artifactId> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-framework</artifactId> <type>bundle</type> </dependency> <dependency> <groupId>org.apache.curator</groupId> <artifactId>curator-recipes</artifactId> <type>bundle</type> </dependency> <dependency> <groupId>org.apache.zookeeper</groupId> <artifactId>zookeeper</artifactId> </dependency> <dependency> <groupId>com.github.sgroschupf</groupId> <artifactId>zkclient</artifactId> </dependency> <dependency> <groupId>com.xyzh</groupId> <artifactId>myduboo-api</artifactId> <version>0.0.1-SNAPSHOT</version> <scope>compile</scope> </dependency> </dependencies> </project> 

添加配置文件,在resources目录下添加配置文件 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="dubbo-consumer"/> <!--向 zookeeper 订阅 provider 的地址,由 zookeeper 定时推送--> <!-- <dubbo:registry address="192.168.0.188:2183" protocol="zookeeper"></dubbo:registry> --> <dubbo:registry address="zookeeper://127.0.0.1:2181"/> <!-- 配置全局超时时间--> <!-- <dubbo:consumer timeout="" check="false"></dubbo:consumer> --> <!--使用 dubbo 协议调用定义好的接口--> <dubbo:reference id="userService" interface="com.xyzh.mydubooapi.service.IMyService"/> </beans> 

添加main函数,调用服务

public class MydubooConsumerApplication { public static void main(String[] args) throws IOException { ClassPathXmlApplicationContext context = new ClassPathXmlApplicationContext("consumer.xml"); System.out.println(context.getDisplayName() + ": here"); context.start(); System.out.println("服务已经启动..."); IMyService orderService=context.getBean(IMyService.class); System.out.println(orderService.helloService("test")); System.in.read(); } } 

5、启动测试

在这里插入图片描述

调用成功!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/128387.html

(0)
上一篇 2025-08-31 21:15
下一篇 2025-08-31 21:20

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注微信