欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

SSM秒杀系统(六)

程序员文章站 2022-04-22 08:19:13
...

该部分引入dubbo框架,对项目进行重构

九、项目拆分

十、面向服务的分布式框架dubbo

1.pom中引入dubbo-2.8.4的jar包

2.linux服务器中安装zookeeper-3.1.6,并进行配置:

  1. zookeeper存放的位置为 /usr/local/zk,进入bin文件夹
  2. 启动zookeeper:
#zkServer.sh   start     //启动
#zkServer.sh   status   //查看状态
#zkServer.sh    stop   //停止/关闭
  1. 查看客户端提供的dubbo
zkCli.sh		//查看dubbo
rmr /dubbo 		//删除dubbo节点

通过引入dubbo使service层成为服务的提供者,web层成为服务的消费者。

  1. 注意在项目拆分的过程中,我遇到了一个问题,tomocat一直启动不成功,报出缺少spring包的错误。

解决办法:发现service层和web层的spring-core,spring-bean,spring-aop的版本为3.2.9和spring-mvc的版本4.2.0不一致,找了很久才发现问题。
原来引入dubbo的时候会自动引入spring,并且其版本为3.2.9,而我们子集引入的spring版本为4.2.0,导致spring的版本冲突,解决办法:

方法一
查询了网上的一些资料发现别人都是采用删除dubbo的spring依赖:不知道为什么采用该方法,一直无法去除dubbo中的spring,所以我才用方法二解决了

    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo</artifactId>
        <version>2.5.3</version>
        <!-- 排除spring-->
        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring</artifactId>
            </exclusion>
        </exclusions>
    </dependency>

方法二:spring冲突是因为先引入了dubbo包再引入spring包,spring的版本还是不会改变的,所以我们将Service层和Web层的dubbo包放在最后引入。

10.2 Dubbo在项目中的使用方法

通过dubbo在表示层中访问业务逻辑层中的组件

  • Provider
    暴露服务方称之为“服务提供者”。
  • Consumer
    调用远程服务方称之为“服务消费者”。
  • Registry
    服务注册与发现的中心目录服务称之为“服务注册中心”。我们使用zookeeper
  • Monitor
    统计服务的调用次数和调用时间的日志服务称之为“服务监控中心”。

1.在表示层(web)和业务逻辑层(service)添加dubbo和zookeeper包

2.在linux中安装zookeeper

3.通过dubbo在表示层中访问业务逻辑层中的组件,此步骤需要配置消费者和提供者

服务提供者配置:service层配置:

  • 提供暴露的端口20880
  • zookeeper地址及端口
  • 声明需要暴露的接口,也就是我们的service接口和接口的实现类
<!-- 使用dubbo发布服务 -->
<dubbo:application name="YF_MS_SERVICE"/>

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

<!-- address为虚拟机zookeeper地址及端口号,集群时候可以配置多个地址 -->
<dubbo:registry protocol="zookeeper" address="192.168.220.129:2181"></dubbo:registry>

<!--interface 表示服务者暴漏的接口, ref表示指向这个接口的具体实现类-->
<dubbo:service interface="modules.cart.service.AddToCart" ref="addToCartIMpl"/>
<!--接口的具体实现类-->
<bean id="addToCartIMpl" class="modules.cart.service.impl.AddToCartIMpl"/>

服务消费者配置:web层配置

  • 配置zookeeper地址和端口
  • 配置消费者需要的服务,也就是该web层需要使用的service接口
<!--这个也很简单。配置了项目名称和dubbo的相关信息 -->
     <dubbo:application name="crudCustomer"/>
 
    <dubbo:registry address="zookeeper://127.0.0.1:2181"/>
<!--这个是配置消费者需要的服务-->
    <dubbo:reference   interface="modules.cart.service.AddToCart" id="addtoCart"/>

10.3 项目启动问题

由于使用了dubbo框架,所以我们通常会将表示层和业务逻辑层分别放在不同的服务器上,因为我们必须要先保证业务逻辑层先启动起来,再将表示层项目启动起来,这样表示层才能调用业务逻辑层的方法。

如何实现:
再eclipse中,我们可以配置多个tomcat,将web项目部署到tomcat1,将service项目部署到tomcat2就行了

相关标签: SSM秒杀系统