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