Maven-maven多模块项目搭建+Dubbo分布式服务框架

maven多模块项目搭建

最近呢学校校企合作培训,老师给我们出了一道题让做一个秒杀系统。要求前后端分离,要有独立的商品服务,独立的库存服务,独立的交易服务。经过团队的协商我们决定使用maven多模块,来将这些服务进行整合,到最后统一一键暴露接口服务,而不用再一个个启动服务了。


1.新建maven项目

New
2.选择项目存放的路径后,选择创建一个简单的maven项目
图片描述
3.填写Group Id和Artifact Id,也可以自定义版本号
图片描述
4.项目的目录结构很简单
图片描述
5.这里我们要看一下pom.xml,这里Packaging需要改为pom
图片描述


接下来我们构建里面的子模块(seckill_interface)

1.在已经建成的项目上右键新建project此时选择创建Maven Module
图片描述
2.此时项目类型选择为maven-archetype-quickstart
图片描述
3.建成之后的项目结构为
图片描述


接下创建提供服务的模块儿(user_backService,business_backService,commodity_backService,stock_backService)

这四个独立的服务项目构建过程与seckill_interface构建过程一样
最终结构如下图
图片描述


为了使这些服务能跑起来需要我们去创建一个如下类型的maven子项目(web)

图片描述
然后填写Group Id和Artifact Id,也可以自定义版本号
图片描述
到现在为止,整个项目的架子是搭好了。(搭建webApp类型的maven子项目其实是依赖前面的接口的4个服务的。)
图片描述
最终open_backService是被打成war包进行发布的,其他的依赖都会被打成jar被Open_backService引用。


接下来我们配置相关接口服务整个项目结构如下图
图片描述
最主要的在于包【top.softzztiedu.service】中。
我们将服务写成接口通过Dubbo进行服务治理
我们的服务如何暴露呢,当然是在open_backService中了(见下图)
图片描述
【1】配置remote-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:service interface="top.softzztiedu.service.UserService" ref="UserService" timeout="100000"/>
    <dubbo:service interface="top.softzztiedu.service.BusinessService" ref="BusinessService" timeout="100000"/>
    <dubbo:service interface="top.softzztiedu.service.CommodityService" ref="CommodityService" timeout="100000"/>
    <dubbo:service interface="top.softzztiedu.service.StockService" ref="StockService" timeout="100000"/>

    <!-- 和本地bean一样实现服务 -->
    <bean id="UserService" class="top.softzztiedu.service.impl.UserServiceImpl"/>
    <bean id="BusinessService" class="top.softzztiedu.service.impl.BusinessServiceImpl"/>
    <bean id="CommodityService" class="top.softzztiedu.service.impl.CommodityServiceImpl"/>
    <bean id="StockService" class="top.softzztiedu.service.impl.StockServiceImpl"/>

</beans>

【2】配置spring-dubbo.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:consumer check="false" />

    <!-- 提供方应用信息,用于计算依赖关系 -->
    <dubbo:application name="seckill_backService"/>

    <!-- 使用multicast广播注册中心暴露服务地址 -->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" client="zkclient"/>

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

</beans>

注:详情查看源码与环境部署文档

https://github.com/iamsongci/seckill_backService/

作者: 宋鎏鑫
链接:https://www.imooc.com/article/18212
来源:慕课网

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.