day69_淘淘商城项目_02

文章目录 1、功能分析 1.1、后台系统所用的技术 1.2、创建数据库 1.3、Mybatis逆向工程 1.4、系统间通信问题 2、Dubbo 2.1、什么是dubbo 2.2、Dubbo的架构 2.3、Dubbo的使用方法 2.4、注册中心--zookeeper 3、SSM框架整合+Zookeeper 3.1、需求 3.2、配置对dubbo的依赖 3.3、整合思路 3.4、Dao整合 3.5、Service整合 3.6、表现层整合 3.7、dubbo服务调用测试 4、Dubbo的Admin管理平台 4.1、环境准备 4.2、部署监控中心 4.3、测试访问 5、后台商品列表查询功能 5.1、整合静态页面 5.2、展示后台首页+展示菜单页面 5.3、后台商品列表查询功能分析 5.4、Mybatis的分页插件PageHelper 5.5、Service层 5.6、表现层 5.7、测试 5.8、解决错误+原因 5.9、安装maven工程时跳过测试 课程计划 第二天:商品列表功能实现 1、功能分析 2、服务中间件Dubbo 3、SSM框架整合+Zookeeper 4、Dubbo的Admin管理平台 5、后台商品列表查询功能实现 回到顶部 1、功能分析 1.1、后台系统所用的技术 框架:Spring + SpringMVC + Mybatis + Dubbo 前端:EasyUI 数据库:MySQL 1.2、创建数据库 1、安装mysql数据库,要求5.5以上版本。 2、在mysql中创建一个taotao数据库。 3、将创建数据库的脚本taotao.sql导入到taotao中。 1.3、Mybatis逆向工程 使用mybatis官方提供的mybatis-generator生成pojo、mapper接口及映射文件。 并且将pojo放到toatao-manager-pojo工程中。 将mapper接口及映射文件放到taotao-manager-dao工程中。 注意1:因为涉及到各个工程(系统)之间来回传递对象,所以使用时需要对涉及到的POJO实现序列化接口。 我们发现mybatis的插件,有一个可以自动给所有pojo实现序列化接口(example除外) 注意2:如果生成的pojo能够有toString()的重写会给开发、调试带来很大的方便,所以我们也将生成的pojo重写toString()方法。 同样使用mybatis的插件。 即我们在使用Mybatis逆向工程的时候,在其配置文件generatorConfig.xml中配置下:
1.4、系统间通信问题 1.4.1、分析   由于淘淘商城是基于soa的架构,表现层和服务层是不同的工程。所以要实现商品列表查询需要两个系统之间进行通信。   如何实现远程通信? 1、使用Webservice:效率不高,它是基于soap协议(html+xml)。项目中不推荐使用。优点是:跨语言、跨平台。适用于两个公司之间。 2、使用Restful形式的服务:http+json。很多项目中应用。如果服务越来越多,服务与服务之间的调用关系复杂,调用服务的URL管理复杂,什么时候添加机器难以确定。 需要治疗服务。适用于中小型企业。 3、使用Dubbo:使用RPC协议进行远程调用,直接使用socket通信。传输效率高,并且可以统计出系统之间的调用关系、调用次数,管理服务。适用于大型企业。缺点:不能跨语言。只能java语言。 回到顶部 2、Dubbo 2.1、什么是dubbo   最新中文网址:https://dubbo.incubator.apache.org/zh-cn/index.html   DUBBO是一个分布式服务框架,致力于提供高性能和透明化的RPC远程服务调用方案,是阿里巴巴SOA服务化治理方案的核心框架,每天为2,000+个服务提供3,000,000,000+次访问量支持,并被广泛应用于阿里巴巴集团的各成员站点。   随着互联网的发展,网站应用的规模不断扩大,常规的垂直应用架构已无法应对,分布式服务架构以及流动计算架构势在必行,亟需一个治理系统确保架构有条不紊的演进。 单一应用架构 当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。 此时,用于简化增删改查工作量的数据访问框架(ORM)是关键。 垂直应用架构 当访问量逐渐增大,单一应用增加机器带来的加速度越来越小,将应用拆成互不相干的几个应用,以提升效率。 此时,用于加速前端页面开发的Web框架(MVC)是关键。 分布式服务架构 当垂直应用越来越多,应用之间交互不可避免,将核心业务抽取出来,作为独立的服务,逐渐形成稳定的服务中心,使前端应用能更快速的响应多变的市场需求。 此时,用于提高业务复用及整合的分布式服务框架(RPC)是关键。 流动计算架构 当服务越来越多,容量的评估,小服务资源的浪费等问题逐渐显现,此时需增加一个调度中心基于访问压力实时管理集群容量,提高集群利用率。 此时,用于提高机器利用率的资源调度和治理中心(SOA)是关键。 Dubbo就是资源调度和治理中心的管理工具。 Dubbo 就是类似于webservice的关于系统之间通信的框架,并可以统计和管理服务直接的调用情况(包括服务被谁调用了,调用的次数是如何,以及服务的使用状况)。 2.2、Dubbo的架构 Apache Dubbo (incubating) |ˈdʌbəʊ| 是一款高性能、轻量级的开源Java RPC框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现。 节点角色说明: Provider: 暴露服务的服务提供方。 Consumer: 调用远程服务的服务消费方。 Registry: 服务注册与发现的注册中心。 Monitor: 统计服务的调用次调和调用时间的监控中心。 Container: 服务运行容器。 调用关系说明: 0、服务容器负责启动,加载,运行服务提供者。 1、服务提供者在启动时,向注册中心注册自己提供的服务。 2、服务消费者在启动时,向注册中心订阅自己所需的服务。 3、注册中心返回服务提供者地址列表给消费者,如果有变更,注册中心将基于`长连接`推送变更数据给消费者。 4、服务消费者,从提供者地址列表中,基于`软负载均衡算法`,选一台提供者进行调用,如果调用失败,再选另一台调用。 5、服务消费者和提供者,在内存中累计调用次数和调用时间,定时每分钟发送一次`统计`数据到监控中心。 2.3、Dubbo的使用方法 spring配置 Dubbo采用全Spring配置方式,透明化接入应用,对应用没有任何API侵入,只需用Spring加载Dubbo的配置即可,Dubbo基于Spring的Schema扩展进行加载。 单一工程中spring的配置local.xml(没有使用dubbo时): 远程服务(使用dubbo时): 在本地服务的基础上,只需做简单配置,即可完成远程化: 将上面的local.xml配置拆分成两份,将服务定义部分放在服务提供方remote-provider.xml,将服务引用部分放在服务消费方remote-consumer.xml。 并在服务提供方增加暴露服务配置,在服务消费方增加引用服务配置。 服务层发布服务: 表现层调用服务: 2.4、注册中心--zookeeper 2.4.1、zookeeper的介绍   Zookeeper(集群管理工具:动物管理员)适用于大数据里面的生态系统。比如:大数据中的hadoop(大象)、Hive(蜂巢)等等动物需要动物管理员来管理哈!   Dubbo中使用Zookeeper是作为注册中心使用的,注册中心负责服务地址的注册与查找,相当于目录服务,服务提供者和消费者只在启动时与注册中心交互,注册中心不转发请求,压力较小。使用dubbo-2.3.3以上版本,建议使用Zookeeper注册中心。   Zookeeper是Apacahe Hadoop的子项目,是一个树型的目录服务,支持变更推送,适合作为Dubbo服务的注册中心,工业强度较高(稳定性好),可用于生产环境,并推荐使用。 2.4.2、环境准备 虚拟机软件环境:VMware 14 PRO linux环境:CentOS 7.5 环境我已经装备好了,我们使用VMWare打开虚拟机。 2.4.3、使用SecureCRT连接Linux系统 清除所有文件,我们先要有一个干干净净的Linux系统。如下图: 2.4.4、zookeeper的安装 第一步:linux上安装jdk,参考链接:https://www.cnblogs.com/chenmingjun/p/9931593.html 第二步:上传linux版本的zookeeper压缩包至linux系统下的/user/local/zookeeper目录下,解压缩zookeeper压缩包 第三步:进入zookeeper解压目录,将conf文件夹下zoo_sample.cfg改名为zoo.cfg,命令:mv zoo_sample.cfg zoo.cfg 第四步:编辑zoo.cfg文件,修改配置dataDir属性,指定一个真实目录(进入zookeeper解压目录,创建data目录:mkdir data) 第五步: 启动zookeeper:bin/zkServer.sh start 关闭zookeeper:bin/zkServer.sh stop 查看zookeeper状态:bin/zkServer.sh status 注意:如果出现问题,需要关闭linux的防火墙。否则不建议关闭防火墙,而是配置防火墙。 回到顶部 3、SSM框架整合+Zookeeper 3.1、需求 根据商品id查询商品信息,并将商品信息使用json数据返回。 分析: 请求的url:`/item/{itemId}`  注意:(把参数放在了请求的里面,使用Restfull软件架构设计模式) 参数:商品id,从请求的url中获得 返回值:TbItem对象,逆向工程生成的pojo(响应json数据) 3.2、配置对dubbo的依赖 加入dubbo相关的jar包。服务层、表现层都要配置。在服务层、表现层的pom.xml文件中添加依赖。 服务层:taotao-manager-service/pom.xml com.alibaba dubbo ${dubbo.version} org.apache.zookeeper zookeeper ${zookeeper.version} com.github.sgroschupf zkclient ${zkclient.version} 注意:当我们配置对dubbo的依赖后,要查看dubbo的依赖关系,排除掉dubbo依赖的低版本的jar,比如:spring-2.5.6.SEC03.jar和netty-3.2.5.Final.jar(这同样也是编程的好习惯)! 排除方法: 方法一:在taotao-manager-service/pom.xml中手动编写代码,所以最终pom.xml中要添加的内容如下: com.alibaba dubbo spring org.springframework netty org.jboss.netty org.apache.zookeeper zookeeper com.github.sgroschupf zkclient 方法二:使用图形化界面,如下图所示: 二种方式本质是一样的! 表现层:taotao-manager-web/pom.xml com.alibaba dubbo spring org.springframework netty org.jboss.netty org.apache.zookeeper zookeeper com.github.sgroschupf zkclient 3.3、整合思路 1、Dao层: mybatis整合spring,通过spring管理SqlSessionFactory、Mapper代理对象。需要mybatis和spring的整合包。由spring创建数据库连接池。 下图所示为文件所对应的工程: 2、Service层: 所有的service实现类都放到spring容器中管理,并由spring管理事务。发布dubbo服务。 下图所示为文件所对应的工程: web.xml中:配置加载spring容器 3、表现层: springmvc框架,由springmvc管理Controller。引用dubbo服务。 下图所示为文件所对应的工程: web.xml中:配置前端控制器,配置URL拦截形式。 3.4、Dao整合 整合后的目录结构如下:后面的配置文件可以参考此图片创建目录(这样的目录结构赏心悦目啊!) 3.4.1、创建SqlMapConfig.xml配置文件 SqlMapConfig.xml(由于和spring进行整合了,里面空空如也,但是该文件必须要有!) 3.4.2、spring整合mybatis 创建applicationContext-dao.xml db.properties jdbc.driver=com.mysql.jdbc.Driver jdbc.url=jdbc:mysql://localhost:3306/taotao?characterEncoding=utf-8 jdbc.username=root jdbc.password=root 备注:   Druid(德鲁伊)是目前最好的数据库连接池,在功能、性能、扩展性方面,都超过其他数据库连接池,包括DBCP、C3P0、BoneCP、Proxool、JBoss DataSource。   Druid已经在阿里巴巴部署了超过600个应用,经过多年多生产环境大规模部署的严苛考验。 3.5、Service整合 3.5.1、配置管理Service applicationContext-service.xml
关键字:
50000+
5万行代码练就真实本领
17年
创办于2008年老牌培训机构
1000+
合作企业
98%
就业率

联系我们

电话咨询

0532-85025005

扫码添加微信