ZooKeeper+Dubbo+SpringBoot 微服务Demo搭建

 1、 首先创建springBoot项目,springBoot是一堆组件的集合,在pom文件中对需要的组件进行配置。生成如下目录结构

    

    创建test项目,同步在test创建dubbo-api,dubbo-consume,dubbo-provider三个Model

    dubbo-provider 为服务的提供者,服务的实现层

    dubbo-api 为服务提供者dubbo-provider的接口层 (此处dubbo-provider,dubbo-api相当于一个微服务,dubbo-api为对外接口,由消费者dubbo-consume调用)

    dubbo-consume 为服务的消费者,消费由dubbo-api提供的服务

2、配置pom.xml

  test中的pom.xml是其他三个Module的父文件,所以公共的部分在test中配置即可。

  test 中 pom.xml部分配置  

 1 <modules>
 2         <module>dubbo-provider</module>
 3         <module>dubbo-consume</module>
 4         <module>dubbo-api</module>
 5     </modules>
 6 <parent>
 7         <groupId>org.springframework.boot</groupId>
 8         <artifactId>spring-boot-starter-parent</artifactId>
 9         <version>2.0.3.RELEASE</version>
10         <relativePath/> <!-- lookup parent from repository -->
11     </parent>
12     <properties>
13         <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
14         <project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
15         <java.version>1.8</java.version>
16         <com.alibaba.dubbo.version>2.5.3</com.alibaba.dubbo.version>
17         <org.apache.zookeeper.version>3.4.12</org.apache.zookeeper.version>
18         <com.github.sgroschupf.zkclient.version>0.1</com.github.sgroschupf.zkclient.version>
19     </properties>
20 <dependencies>
21         <dependency>
22             <groupId>org.springframework.boot</groupId>
23             <artifactId>spring-boot-starter-web</artifactId>
24         </dependency>
25
26         <dependency>
27             <groupId>org.springframework.boot</groupId>
28             <artifactId>spring-boot-starter-test</artifactId>
29             <scope>test</scope>
30         </dependency>
31     </dependencies>
32
33     <build>
34         <plugins>
35             <plugin>
36                 <groupId>org.springframework.boot</groupId>
37                 <artifactId>spring-boot-maven-plugin</artifactId>
38             </plugin>
39         </plugins>
40     </build>

pom.xml

  dubbo-api中pom.xml

 1  <parent>
 2         <artifactId>test</artifactId>
 3         <groupId>com.example</groupId>
 4         <version>0.0.1-SNAPSHOT</version>
 5     </parent>
 6
 7     <artifactId>dubbo-api</artifactId>
 8     <packaging>jar</packaging>
 9     <name>dubbo-api</name>
10     <dependencies>
11         <dependency>
12             <groupId>org.springframework.boot</groupId>
13             <artifactId>spring-boot-starter-web</artifactId>
14         </dependency>
15     </dependencies>
16     <build>
17         <plugins>
18             <plugin>
19                 <groupId>org.springframework.boot</groupId>
20                 <artifactId>spring-boot-maven-plugin</artifactId>
21             </plugin>
22         </plugins>
23     </build>

pom.xml

  dubbo-provider中pom.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <modelVersion>4.0.0</modelVersion>
 6     <parent>
 7         <artifactId>test</artifactId>
 8         <groupId>com.example</groupId>
 9         <version>0.0.1-SNAPSHOT</version>
10     </parent>
11
12     <artifactId>dubbo-provider</artifactId>
13     <packaging>jar</packaging>
14     <name>dubbo-provide</name>
15     <dependencies>
16         <dependency>
17             <groupId>org.springframework.boot</groupId>
18             <artifactId>spring-boot-starter</artifactId>
19         </dependency>
20         <dependency>
21             <groupId>com.example</groupId>
22             <artifactId>dubbo-api</artifactId>
23             <version>0.0.1-SNAPSHOT</version>
24         </dependency>
25         <!-- dubbo -->
26         <dependency>
27             <groupId>com.alibaba</groupId>
28             <artifactId>dubbo</artifactId>
29             <exclusions>
30                 <exclusion>
31                     <groupId>org.springframework</groupId>
32                     <artifactId>spring</artifactId>
33                 </exclusion>
34             </exclusions>
35             <version>${com.alibaba.dubbo.version}</version>
36         </dependency>
37         <dependency>
38             <groupId>org.apache.zookeeper</groupId>
39             <artifactId>zookeeper</artifactId>
40             <version>${org.apache.zookeeper.version}</version>
41         </dependency>
42         <dependency>
43             <groupId>com.github.sgroschupf</groupId>
44             <artifactId>zkclient</artifactId>
45             <version>${com.github.sgroschupf.zkclient.version}</version>
46         </dependency>
47     </dependencies>
48     <build>
49         <plugins>
50             <plugin>
51                 <groupId>org.springframework.boot</groupId>
52                 <artifactId>spring-boot-maven-plugin</artifactId>
53             </plugin>
54         </plugins>
55     </build>
56 </project>

pom.xml

  dubbo-consume中pom.xml

 1 <?xml version="1.0" encoding="UTF-8"?>
 2 <project xmlns="http://maven.apache.org/POM/4.0.0"
 3          xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
 4          xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
 5     <modelVersion>4.0.0</modelVersion>
 6     <parent>
 7         <artifactId>test</artifactId>
 8         <groupId>com.example</groupId>
 9         <version>0.0.1-SNAPSHOT</version>
10     </parent>
11
12     <artifactId>dubbo-consume</artifactId>
13      <name>dubbo-consume</name>
14     <packaging>jar</packaging>
15     <dependencies>
16         <dependency>
17             <groupId>org.springframework.boot</groupId>
18             <artifactId>spring-boot-starter-web</artifactId>
19         </dependency>
20         <dependency>
21             <groupId>com.example</groupId>
22             <artifactId>dubbo-api</artifactId>
23             <version>0.0.1-SNAPSHOT</version>
24         </dependency>
25         <!-- dubbo -->
26         <dependency>
27             <groupId>com.alibaba</groupId>
28             <artifactId>dubbo</artifactId>
29             <exclusions>
30                 <exclusion>
31                     <groupId>org.springframework</groupId>
32                     <artifactId>spring</artifactId>
33                 </exclusion>
34             </exclusions>
35             <version>${com.alibaba.dubbo.version}</version>
36         </dependency>
37         <dependency>
38             <groupId>org.apache.zookeeper</groupId>
39             <artifactId>zookeeper</artifactId>
40             <version>${org.apache.zookeeper.version}</version>
41         </dependency>
42         <dependency>
43             <groupId>com.github.sgroschupf</groupId>
44             <artifactId>zkclient</artifactId>
45             <version>${com.github.sgroschupf.zkclient.version}</version>
46         </dependency>
47     </dependencies>
48     <build>
49         <plugins>
50             <plugin>
51                 <groupId>org.springframework.boot</groupId>
52                 <artifactId>spring-boot-maven-plugin</artifactId>
53             </plugin>
54         </plugins>
55     </build>
56 </project>

pom.xml

3、dubbo-api  

  

  定义接口IDubboDemoService

public interface IDubboDemoService {

    public String getString();
}

4、dubbo-provider

首先创建启动类,和dubbo配置文件启动类,mainConfig项目启动类就不多说了

@Configuration
@PropertySource("classpath:dubbo-provider.properties")
@ImportResource({ "classpath:dubbo-provider.xml" })
public class DubboConfig {
}

DubboConfig.java

dubbo读取的两个配置文件

首先对dubbo进行配置

#应用名称
dubbo.application.name=dubbo-provider
#注册中心类型
dubbo.registry.protocol=zookeeper
#注册中心地址
dubbo.registry.address=127.0.0.1:2181
#暴露服务方式
dubbo.protocol.name=dubbo
#暴露服务端口
dubbo.protocol.port=20880

之后对dubbo中的接口进行配置

<?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.application.name}" />

    <!-- 注册中心暴露服务地址 -->
    <!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->

    <!-- <dubbo:registry protocol="zookeeper" address="10.170.219.98:2181,10.173.55.173:2181" /> -->
    <dubbo:registry protocol="${dubbo.registry.protocol}" address="${dubbo.registry.address}" />

    <!-- 暴露服务 -->
    <dubbo:protocol name="${dubbo.protocol.name}" port="${dubbo.protocol.port}" />
  <!-- 暴露的接口 -->
    <dubbo:service interface="com.example.service.IDubboDemoService"
                   ref="dubboDemoServiceImpl" retries="0" timeout="6000" />

</beans>

注意:mainConfig.java和DubboConfg.java 两个文件要放在接口的上一层,否则加载时会找不到接口

  接口实现:

@Service
public class DubboDemoServiceImpl implements IDubboDemoService {
    @Override
    public String   getString() {
        return "成功";
    }
}

5、dubbo-consume

只来看下配置文件

  dubbo.consume.properties:消费者只需要知道注册中心的类型和地址

#应用名称
dubbo.application.name=dubbo-consume
#注册中心类型
dubbo.registry.protocol=zookeeper
#注册中心地址
dubbo.registry.address=127.0.0.1:2181

  dubbo-consume.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.application.name}" />

    <!-- 注册中心暴露服务地址 -->
    <!-- <dubbo:registry address="multicast://224.5.6.7:1234" /> -->

    <!-- <dubbo:registry protocol="zookeeper" address="10.170.219.98:2181,10.173.55.173:2181" /> -->
    <dubbo:registry protocol="${dubbo.registry.protocol}" address="${dubbo.registry.address}" />

    <dubbo:reference id="consumeService" interface="com.example.service.IDubboDemoService" />

</beans>

测试代码

  

 1 @RestController
 2 @RequestMapping("/dubbo")
 3 public class DubboDemoController {
 4
 5         @Resource
 6          public IDubboDemoService service;
 7
 8         @RequestMapping(value = "/getString", method = RequestMethod.GET)
 9         public String getString(){
10             return service.getString();
11         }
12
13 }

DubboDemoController.java

到此简单的配置已经ok了。

6、整个流程为 服务的提供者方面 dubbo将对外的服务注册到zooKeeper上,同时在zooKeeper生成相应的node,对其监控。消费方从zooKeeper中去拿服务,所以服务的接口必须到时提供者和消费者约定好的。这样就利用dubbo+zooKeeper实现的远程RPC调用

原文地址:https://www.cnblogs.com/volare/p/9248836.html

时间: 2024-11-05 02:23:27

ZooKeeper+Dubbo+SpringBoot 微服务Demo搭建的相关文章

SpringBoot 整合 Zookeeper 接入Starring微服务平台

背景 最近接的一个项目是基于公司产品Starring做的微服务支付平台,纯后台项目,实现三方支付公司和银行接口来完成用户账户扣款,整合成通用支付接口发布给前端调用. 但是扯蛋了,这边前端什么都不想做,只想我们提供一个链接,用户可以选择支付方式进行支付,这样的话相当于咱们又得起一个WEB版的收银台Project. 最近SpringBoot挺流行的,那就单独给起一个H5项目跑几个页面,调用后台的支付接口就完事了,如下? 最终的系统架构成了这样吧,随便画一画,请客官别吐槽. 公司的产品的服务都是发布到

SprngCloud微服务框架搭建(一)

参照来源 :https://blog.csdn.net/forezp/article/details/70148833 1.简介 目前来说,SpringCloud是比较完整的微服务解决方案框架.不像其他rpc远程调用框架,只是解决某个微服务中的问题. 2.微服务框架搭建 2.1.服务的注册与发现Eureka(Finchley版本) 本次采用Eureka作为服务注册与发现的组件. 2.1.1.创建服务注册中心 首先创建一个空的maven工程,在其pom文件引入依赖, Spring Boot 版本采

微服务环境搭建

第三章.微服务环境搭建 名词解释: 1.准备 实现配置好Java开发环境,包括jdk的安装.IDEA的安装: 注:SpringBoot2.0版本中要求最低的jdk的版本是1.8: 2.创建一个SpringBoot工程 file—new—project—Spring Initializr—选择SDK—next 填写Group和Artifact——选择默认的Maven工程,其他配置默认——next 开发Java web项目,至少选择一个勾选web中的web——finish——finish: IDEA

基于Openshift的SpringBoot微服务

基于Openshift的SpringBoot微服务 OpenShift是红帽的云开发平台即服务(PaaS).自由和开放源码的云计算平台使开发人员能够创建.测试和运行他们的应用程序,并且可以把它们部署到云中.Openshift广泛支持多种编程语言和框架,如Java,Ruby和PHP等.另外它还提供了多种集成开发工具如Eclipse integration,JBoss Developer Studio和 Jenkins等.OpenShift 基于一个开源生态系统为移动应用,数据库服务等,提供支持.

微服务的搭建

1.什么叫微服务?微服务是一个新兴的软件架构,就是把一个大型的单个应用程序和服务拆分为数十个的支持微服务.一个微服务的策略可以让工作变得更为简便,它可扩展单个组件而不是整个的应用程序堆栈,从而满足服务等级协议. 2.微服务特点微服务的基本思想在于考虑围绕着业务领域组件来创建应用,这些应用可独立地进行开发.管理和加速.在分散的组件中使用微服务云架构和平台,使部署.管理和服务功能交付变得更加简单. 3.微服务搭建在了解以上概念后,相信大家对微服务有大概的了解,现在说下微服务的搭建: 第一步:使用sp

怀仁药店微服务环境搭建记录

怀仁药店微服务环境搭建记录: 基础条件:服务器已安装docker,且开通外网功能. 修改计算机hostname: hostnamectl set-hostname hr-rs 一.建立分区及格式: (注:先确保没有镜像和容器运行在服务器上) [[email protected] ~]# df -h 文件系统 容量 已用 可用 已用% 挂载点 /dev/mapper/centos-root 50G 2.6G 48G 6% / devtmpfs 16G 0 16G 0% /dev tmpfs 16G

JAVA springboot微服务b2b2c电子商务系统-springboot集成swagger2,构建优雅的Restful API(十一)

swagger,中文"拽"的意思.它是一个功能强大的api框架,它的集成非常简单,不仅提供了在线文档的查阅,而且还提供了在线文档的测试.另外swagger很容易构建restful风格的api,简单优雅帅气,正如它的名字. 一.引入依赖 <dependency> <groupId>io.springfox</groupId> <artifactId>springfox-swagger2</artifactId> <vers

基于dubbo的微服务的自我看法

现在虽然微服务以springcloud为主,但是很多公司现在用的还是dubbo,比如我的公司. dubbo的调用方式很简单,dubbo提供者注册在zookeeper里面,供消费者来调用,因为都注册在zookeeper里面,提供者也可以充当消费者,去调用zookeeper里面注册的其它服务. 通常dubbo的普遍架构就是springboot+dubbo+mybatis. springboot充当服务启动和提供大量方法,dubbo充当rpc系统,mybatis充当dao层. 原文地址:https:/

zookeeper+dubbo+springboot入门

zookeeper zookeeper下载地址 http://www.apache.org/dyn/closer.cgi/zookeeper ?随便选择一个提供的路径 我们只需要关注zookeeper目录中的bin目录和conf配置目录就OK了,第一件事我们要做的就是修改配置文件. zookeeper-3.4.10\conf\zoo_sample.cfg,只需要把zoo_sample.cfg重命名为zoo.cfg. zoo.cfg相关配置参数:#tickTime:这个时间是作为 Zookeepe