前后端分离:微服实战之Dubbo+zookeeper架构,向未来更进一步

Dubbo+zookeeper框架搭建详解

众所周知,现在的企业技术慢慢向前后台分离发展,分布式架构。其中少不了Dubbo+zookeeper框架,当然时下流行的还有springCloud。在这个周末,闲来无聊写下这篇文章主要讲解如何在maven环境下搭建这个当下比较流行的分布式架构,过多的理论不再多说。
节点角色说明:
Provider(生产者): 暴露服务的服务提供方。
Consumer(消费者): 调用远程服务的服务消费方。
此外,还有一个节点就是common(公共类),这里主要放入一些vo包、service包等公共调用的代码。

一、配置环境

1、首先开启zookeeper

在这里插入图片描述
位置在zookeeper下面的bin目录里面,windows系统下点击后缀名为.cmd的启动项。
在这里插入图片描述
当看到此窗口上所提示的消息则为启动成功,将doc窗口最小化。下面就可以正式建立项目。

2、建立项目

第一步创建一个空的父工程(Maven)
在这里插入图片描述
创建项目名称
在这里插入图片描述
下一步:
在这里插入图片描述
完成父工程的创建后,我们将src删除掉
在这里插入图片描述
完成父工程的创建后,继续在父工程创建下面的三个节点:
common
consumer
provider
在这里插入图片描述
首先创建common:
在这里插入图片描述
在这里插入图片描述
继续一直点击,完成创建。当common(quickstart)模板创建完成以后,下一步创建provider(提供商),选中springBoot模块
在这里插入图片描述
修改项目名称:
在这里插入图片描述
点击下一步进入选配,如果数据库用的是mysql的话将mysql选入
在这里插入图片描述
一直点击下一步完成创建,
在这里插入图片描述
同样需要将provider里面勾选的配置选中,点击下一步完成创建
三个模块创建完成与以后,下一步将对pom文件进行调整,首先找到父级的pom文件,引入pagehelper的jar文件,

  <dependencies>
            <dependency>
                <groupId>com.github.pagehelper</groupId>
                <artifactId>pagehelper-spring-boot-starter</artifactId>
                <version>1.2.3</version>
            </dependency>
 </dependencies>

配置完成父级的pom文件以后继续配置provider的pom文件,内容如下:

  <dependency>
        <groupId>mysql</groupId>
        <artifactId>mysql-connector-java</artifactId>
        <version>5.1.38</version>
    </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
        <!--引入公共模块项目-->
        <dependency>
            <groupId>cn.kgc</groupId>
            <artifactId>common</artifactId>
            <version>1.0-SNAPSHOT</version>
        </dependency>
        <!--这是微服dubbo的核心服务包-->
        <dependency>
            <groupId>com.alibaba</groupId>
            <artifactId>dubbo</artifactId>
            <version>2.5.3</version>
            <exclusions>
                <exclusion>
                    <artifactId>spring</artifactId>
                    <groupId>org.springframework</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--这是zookeeper的服务操作包 但主要这里的版本最好和你的zookeeper版本一致-->
        <dependency>
            <groupId>org.apache.zookeeper</groupId>
            <artifactId>zookeeper</artifactId>
            <version>3.4.6</version>
            <exclusions>
                <exclusion>
                    <artifactId>slf4j-log4j12</artifactId>
                    <groupId>org.slf4j</groupId>
                </exclusion>
            </exclusions>
        </dependency>
        <!--这里是zookeeper的zkCli的操作包 我们读写服务全靠这个包-->
        <dependency>
            <groupId>com.github.sgroschupf</groupId>
            <artifactId>zkclient</artifactId>
            <version>0.1</version>
        </dependency>

同样将以上pom文件放入consumer里面,当consumer和provider都包含了以上的jar文件以后,下一步要配置文件,可以使用.yml文件也可以用.properties文件来进行配置,
在这里插入图片描述
同样,找到consumer的properties文件,注意端口号
在这里插入图片描述
这一步做完以后就需要导入相关xml文件,放入resources资源路径下
在这里插入图片描述
将common的service路径引入进来,继续配置provider的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="myprovider" />

    <!-- 使用zookeeper注册中心暴露服务地址,我的zookeeper是架在本地的 -->
    <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181" timeout="60000"/>

    <!-- 用dubbo协议在20880端口暴露服务 -->
    <dubbo:protocol name="dubbo" port="20880" />

    <!-- 用户服务接口 -->
    <dubbo:service interface="cn.ws.service.AccountService" ref="accountService"/>
    <bean id="accountService" class="cn.ws.service.AccountServiceImpl"/>

    <dubbo:service interface="cn.ws.service.TransactionrecordService" ref="transactionrecordService"/>
    <bean id="transactionrecordService" class="cn.ws.service.TransactionrecordServiceImpl"/>
</beans>

至此所有基本配置完成,在消费者(consumer)的模块中建立controller进行访问测试,在测试之前需要注意将两边的启动类开启,同时,要在启动类头部添加扫描配置:

provider类中需要添加一个mapper映射文件,添加一个资源路径,在consumer里面则只需要添加一个资源路径,不需要再对mapper进行扫描
在这里插入图片描述

将两个模块启动,看见控制台上显示spring为启动成功,否则为不成功
在这里插入图片描述
在成功以后写入controller进行测试:
在这里插入图片描述
通过url进行访问,注意的是,端口号为当时自己设置的consumer端口号:7070
在这里插入图片描述
当页面出现字段以后,配置成功!

ps:对于现在来说,更多的还是运用springcloud微服架构,但是dubbo+zookeeper却不容忽视。我们作为初级开发工程师来说,首先要对当前主流框架掌握精,其次要对自己的知识面进行一个横向拓宽,提高技能水平,不能换了一个公司,换了一种框架技术以后,你就像一个傻狍子呆呆的坐在办公室懵了。未来还很长远,要步步为营。
zym

猜你喜欢

转载自blog.csdn.net/goGoing_/article/details/93326594