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的依赖
    02_SSM整合测试与系统间通信(Dubbo)_第1张图片
  • 在_web项目下ItemController
    02_SSM整合测试与系统间通信(Dubbo)_第2张图片
1.4 service业务层
  • _interface中创建接口
    02_SSM整合测试与系统间通信(Dubbo)_第3张图片

  • 在_service实现ItemService接口

    • 先添加依赖
      02_SSM整合测试与系统间通信(Dubbo)_第4张图片

    • 实现方法
      02_SSM整合测试与系统间通信(Dubbo)_第5张图片

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的服务治理方案
      02_SSM整合测试与系统间通信(Dubbo)_第6张图片

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

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

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

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

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

  • 使用(win)
    02_SSM整合测试与系统间通信(Dubbo)_第8张图片

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

    • 进入conf,把zoo_sample.cfg文件复制并重命名为zoo.cfg(zookeeper启动时默认加载的文件名)
      02_SSM整合测试与系统间通信(Dubbo)_第9张图片

    • 修改zoo.cfg文件,把dataDir的路径改为刚才创建的data的路径
      02_SSM整合测试与系统间通信(Dubbo)_第10张图片

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

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

  • 下载:

  • 修改需要监控的注册中心的地址
    02_SSM整合测试与系统间通信(Dubbo)_第11张图片

    • 打开properties进行修改
      02_SSM整合测试与系统间通信(Dubbo)_第12张图片

    • 把项目打包,运行

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

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

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

          java -jar dubbo-admin-0.1.jar
          

          在这里插入图片描述

        • 浏览器方法:localhost:8090
          02_SSM整合测试与系统间通信(Dubbo)_第13张图片


3.配置dubbo

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

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

    
    <dependency>
        <groupId>com.alibabagroupId>
        <artifactId>dubboartifactId>
        
        <exclusions>
            <exclusion>
                <groupId>org.springframeworkgroupId>
                <artifactId>springartifactId>
            exclusion>
            <exclusion>
                <groupId>org.jboss.nettygroupId>
                <artifactId>nettyartifactId>
            exclusion>
        exclusions>
    dependency>
    
    <dependency>
        <groupId>org.apache.zookeepergroupId>
        <artifactId>zookeeperartifactId>
    dependency>
    
    <dependency>
        <groupId>com.github.sgroschupfgroupId>
        <artifactId>zkclientartifactId>
        <version>0.1version>
    dependency>
    
  • 在spring容器中向注册中心注册服务

    
    <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:protocol name="dubbo" port="20880"/>
    
      
      <dubbo:service interface="com.dream.service.ItemService"
                     ref="itemServiceImpl"/>
    beans>
    
  • 到监控中心中查看服务
    02_SSM整合测试与系统间通信(Dubbo)_第14张图片

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

  • 在spring容器中来调用服务

    
    <dubbo:application name="dream_manaegr_web"/>
    
    <dubbo:registry address="zookeeper://127.0.0.1:2181" register=""/>
    
    <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中

          
          <build>
              <resources>
                  <resource>
                      <directory>src/main/javadirectory>
                      <includes>
                          <include>**/*.xmlinclude>
                          <include>**/*.propertiesinclude>
                      includes>
                      <filtering>falsefiltering>
                  resource>
              resources>
          build>
      
  • 重新测试
    在这里插入图片描述

    .xml
                            **/*.properties
                        
                        false
                    
                
            
    
  • 重新测试
    在这里插入图片描述

你可能感兴趣的:(分布式商城系统项目实战)