02_SSM整合测试与系统间通信(Dubbo)

另附dubbo-admin资源:https://download.csdn.net/download/qq_34598667/12274615

02_SSM整合测试与系统间通信(Dubbo)

1.整合测试

1.1 需求
  • 根据商品id查询商品的信息,并将商品的信息使用json数据返回(只做测试,不需要页面)
1.2 分析设计
  • 请求url:/item/selectByKey/{itemId}
  • 参数:商品id(主键),从请求的url获取
  • 返回值:TbItem对象
1.3 Controller
  • 先在_web下添加依赖, _interface和pojo的依赖
    [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Tz7BAPXT-1585270005362)(images/1583803782436.png)]
  • 在_web项目下ItemController
    在这里插入图片描述
1.4 service业务层
  • _interface中创建接口
    在这里插入图片描述

  • 在_service实现ItemService接口

    • 先添加依赖
      在这里插入图片描述

    • 实现方法
      在这里插入图片描述

1.5 Dao层
  • 使用逆向工程
1.6 启动测试
  • 先启动manager,再启动web
    在这里插入图片描述

  • 因为manager和web是不同的工程,spring容器都是独立,从web工程注入service,但是service对象在manager工程中的spring容器中–系统间的通信


2.系统间通信与Dubbo

1.2 分析
  • 由于商城项目是基于SOA架构的,表现层和服务层是不同的工程,所以要实现两个系统之间的通信才能完成项目的运行
  • 如何实现?
    • WebService:效率不高(基于SOAP协议)。项目中不推荐使用
    • 使用restful形式的服务:http+json,很多项目中用,如果服务过多,调用的关系会比较混乱
      • 工作时肯定会调用接口(其他项目的接口–web层提供给我们访问入口(路径),标注上需要的参数和返回值),
    • 使用dubbo。直接使用rpc进行远程调用,使用socket进行通信,效率比较高,可以计算出系统之间的调用关系和次数(服务治理)。
1.3 什么是Dubbo(了解)?
  • 互联网发展中,网站应用的规模越来越大,常规的垂直架构已经无法应对了(并发量再增加),分布式架构以及流动计算机构肯定会占据较大的使用量,需要一个治理系统确保架构的演进

    • Dubbo实际上就是资源调度和治理中心的管理工具

    • 是一款分布式服务架构

    • 支持SOA的服务治理方案
      在这里插入图片描述

      • 单一应用架构:网站流量较小
      • 垂直应用架构:将应用拆分互不相干的几个应用(系统之间没有通信,各做各的)
      • 分布式服务架构:垂直应用越来越多,应用工程之间是肯定会进行通信的
      • 流动计算架构:服务越来越多,小服务资源的浪费问题逐渐显现,需要增加一个调用中心来实时管理集群容量,提高利用率(SOA)
        • Dubbo资源调度和治理中心的管理工具
1.4 Dubbo的架构(重要)
  • 结构图
    在这里插入图片描述

    • Container:服务运行容器
    • Provider:暴露服务的提供方
    • Register:服务注册与发现的注册中心
    • Consumer:调用远程服务的消费方
    • Monitor:监控中心
      • 统计服务调用的次数和调用时间
  • 运行过程

    • 服务容器负责启动,加载,运行服务的提供者
    • 服务容器启动时,向注册中心注册自己的提供的服务(service)
    • 在启动时,向注册中心订阅自己需要的服务(web)
    • 注册中心可以返回服务提供者地址给消费者(service提供服务的地址:ip,端口号,服务名称)
    • 消费者(web)会根据注册中心返回的地址去调用提供者的服务(service)
    • 每一次调用的数据都会被监控中心统计
1.5 注册中心
  • 服务提供者和消费者只在启动时才会跟注册中心进行交互

  • 建议使用zookeeper作为注册中心

  • 下载:http://archive.apache.org/dist/zookeeper/

  • 使用(win)
    在这里插入图片描述

    • 先在目录内创建一个data目录
      在这里插入图片描述

    • 进入conf,把zoo_sample.cfg文件复制并重命名为zoo.cfg(zookeeper启动时默认加载的文件名)
      在这里插入图片描述

    • 修改zoo.cfg文件,把dataDir的路径改为刚才创建的data的路径
      在这里插入图片描述

    • 启动:进入到bin,点击zkServer.cmd进行启动注册中心

      • 点击zkCli.cmd查看是否启动成功
        在这里插入图片描述
      • 第一次启动的时候测试一下,只要第一次没有问题,后面基本不会出错
1.6 dubbo监控中心
  • dubbo-admin来直接启动

  • 下载:

  • 修改需要监控的注册中心的地址
    在这里插入图片描述

    • 打开properties进行修改
      在这里插入图片描述

    • 把项目打包,运行

      • 进入到目录内,直接在地址栏输出cmd
        在这里插入图片描述

      • 找到打包之后的jar包
        在这里插入图片描述

        • 运行jar包。运行其中的main方法

          java -jar dubbo-admin-0.1.jar
          

          在这里插入图片描述

        • 浏览器方法:localhost:8090
          在这里插入图片描述


3.配置dubbo

先在parent中的zookeeperjar包改成3.4.14(不改也可以)

3.1 Service中配置一下
  • 先在_service中添加依赖

    <!--dubbo-->
    <dependency>
        <groupId>com.alibaba</groupId>
        <artifactId>dubbo</artifactId>
        <!--dubbo本身跟spring有冲突,配置自动解决冲突-->
        <exclusions>
            <exclusion>
                <groupId>org.springframework</groupId>
                <artifactId>spring</artifactId>
            </exclusion>
            <exclusion>
                <groupId>org.jboss.netty</groupId>
                <artifactId>netty</artifactId>
            </exclusion>
        </exclusions>
    </dependency>
    <!--注册中心-->
    <dependency>
        <groupId>org.apache.zookeeper</groupId>
        <artifactId>zookeeper</artifactId>
    </dependency>
    <!--zklicent-->
    <dependency>
        <groupId>com.github.sgroschupf</groupId>
        <artifactId>zkclient</artifactId>
        <version>0.1</version>
    </dependency>
    
  • 在spring容器中向注册中心注册服务

    <?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:context="http://www.springframework.org/schema/context"
           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://www.springframework.org/schema/context
           http://www.springframework.org/schema/context/spring-context.xsd http://code.alibabatech.com/schema/dubbo http://code.alibabatech.com/schema/dubbo/dubbo.xsd">
      <context:component-scan base-package="com.dream.service"/>
      <!--向注册中心注册服务-->
      <!--提供者应用名称-->
      <dubbo:application name="dream_manager"/>
      <!--注册中心的地址-->
      <dubbo:registry protocol="zookeeper" address="127.0.0.1:2181"/>
      <!--用dubbo协议在20880端口暴露服务-->
      <dubbo:protocol name="dubbo" port="20880"/>
    
      <!--
        声明需要暴露的服务接口
        相当于一个bean,给这个bean注入值,通过ref来注入对象
         ref="itemServiceImpl"把实现类的bean注入进来
      -->
      <dubbo:service interface="com.dream.service.ItemService"
                     ref="itemServiceImpl"/>
    </beans>
    
  • 到监控中心中查看服务
    在这里插入图片描述

3.2 在web中从注册中心调用服务
  • 给web添加依赖(同上)

  • 在spring容器中来调用服务

    <!--加上一个ItemService的bean,从manager系统中调用-->
    <dubbo:application name="dream_manaegr_web"/>
    <!--注册中心的地址-->
    <dubbo:registry address="zookeeper://127.0.0.1:2181" register=""/>
    <!--调用服务
            interface="com.dream.service.ItemService" 调用的接口
            会把服务的接口的bean 注入到spring容器中,给bean设置id
            是id="itemService"
            在controller中注入对象时,使用这个id进行注入
        -->
    <dubbo:reference interface="com.dream.service.ItemService"
                     id="itemService"/>
    
  • 启动_web项目

  • 测试报500错误
    在这里插入图片描述

    • MyBatis中使用SqlSession来执行创建statement来执行sql,mapper中的每一个sql标签语句都是一个statement,这里说statament not found 说明要么mapper.xml中的statement的id和mapper接口中的方法名称不一样(逆向生成的,肯定一样),说明就是mapper.xml没有被加载到

    • 在dao的pom.xml中

          <!--默认只会扫描源目录下的【配置文件,设置java下的也扫描-->
          <build>
              <resources>
                  <resource>
                      <directory>src/main/java</directory>
                      <includes>
                          <include>**/*.xml</include>
                          <include>**/*.properties</include>
                      </includes>
                      <filtering>false</filtering>
                  </resource>
              </resources>
          </build>
      
  • 重新测试
    在这里插入图片描述

    .xml</include>
                            <include>**/*.properties</include>
                        </includes>
                        <filtering>false</filtering>
                    </resource>
                </resources>
            </build>
    
  • 重新测试
    在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

robona

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值