SSM秒杀系统(六)

该部分引入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就行了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值