品优购项目_01项目搭建

一、使用技术

前端框架:angularJS + Bootstrap
后台框架:Spring +SpringMVC+mybatis +Dubbox


1、Dubbox 远程服务调用分布式服务框架
原为阿里巴巴公司开源项目Dubbo,被国内电商及互联网项目使用,后因个别原因停止维护,当当网接手继续优化维护,并改名为Dubbox。
Dubbox致力于提供高性能和透明化的RPC远程服务调用方案,以及SOA服务治理方案。
Dubbox 本地 JAR 包部署与安装
Dubbox 的 jar 包并没有部署到 Maven 的中央仓库中,大家在 Maven 的中央仓库中可以查找到 Dubbo 的最终版本是 2.5.3 , 阿里巴巴解散了 Dubbo 团队后由当当网继续维护此项目,并改名为 Dubbox ,坐标不变,版本变更了,但是并没有提交到中央仓库。
我们现在需要手动将 Dubbox 的 jar 包安装到我的本地仓库中。
先将 dubbo-2.8.4.jar 包放到 d:\setup(例)下, 然后输入命令

mvn install:install-file -Dfile=d:\setup\dubbo-2.8.4.jar -DgroupId=com.alibaba -DartifactId=dubbo
-Dversion=2.8.4 -Dpackaging=jar

RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。
RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

SOA:面向服务的架构(SOA)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。接口是采用中立的方式进行定义的,它应该独立于实现服务的硬件平台、操作系统和编程语言。这使得构建在各种各样的系统中的服务可以以一种统一和通用的方式进行交互。

2、zookeeper 注册中心
Zookeeper 是 Apacahe Hadoop 的子项目,是一个树型的目录服务,支持变更推送,适合作为 Dubbox 服务的注册中心,工业强度较高,可用于生产环境。

Zookeeper 在 Linux 系统的安装

安装步骤:
第一步:安装 jdk
第二步:把 zookeeper 的压缩包上传到 linux系统(使用Filezilla)。
第三步:解压缩压缩包

tar -zxvf zookeeper-3.4.6.tar.gz

第四步:进入 zookeeper-3.4.6 目录,创建 data 文件夹。

mkdir data

第五步:进入 conf 目录 ,把 zoo_sample.cfg 改名为 zoo.cfg

cd conf
mv zoo_sample.cfg zoo.cfg

第六步:打开 zoo.cfg , 修改 data 属性:

dataDir=/root/zookeeper-3.4.6/data

Zookeeper 服务启动
进入 bin 目录,
启动服务输入命令

./zkServer.sh start

关闭服务输入命令

./zkServer.sh stop

查看状态:

./zkServer.sh status

3、配置离线约束
地址:
http://code.alibabatech.com/schema/dubbo/dubbo.xsd


二、品优购框架搭建

2.1 创建数据库(略)
2.2 搭建框架

 1. 创建maven工程:pinyougou_parent,作为父工程
 2. 搭建通用类层
 	1、Dao层  数据访问层 jar包
   		--mybatis相关依赖
   		--配置文件:mybatis分页插件,spring与mybatis整合(数据库连接池,mybatis全局配置),数据库连接参数properties
	2、POJO层 实体类层(实体类需要实现可序列化Serializable,在网络中使用必须实现序列化)  jar包
	3、Common层  jar包 通用模块,项目都会用到的功能放在里面,用来依赖调用,不用每个模块都写
	----反向工程生成数据库表对应的POJO实体类和Dao层对应的mapper类和对应mapper.xml配置文件
3.搭建分功能类层
	1、Interface	接口层,jar包
	2、Service		服务层(提供者)war包
   			-- spring相关依赖
  			-- 配置文件:事务(事务管理器,开启事务注解支持),dubbo相关(访问dubbo所需要的端口,本项目名,远程zookeeper地址,扫描的包(service.impl))

	3、Web		表现层(消费者)war包
 		 	-- springMVC相关依赖
   			-- 配置文件: json转换器(fastjson),引用dubbo服务(本项目名,远程zookeeper地址,扫描的包(controller))

2.3 依赖关系

Dao依赖POJO
Service依赖Dao和Interface
web依赖Interface

2.4 tomcat端口的设置

因在一台计算机上部署,所以不同功能的tomcat需要设置不同的端口
消费者web层:tomcat端口设置为9001开始
提供者service层:tomcat端口设置从9101开始

三、补充

  1. Service层,在ServiceImpl实现类上使用@Service注解时,选用alibaba.dubbo的包。
  2. web层,controller类中注入Service时,不再使用@AutoWired注解,因为需要远程调用,所以使用alibaba.dubbo提供的@Reference注解,远程注入。
  3. web层,controller类中,可以省去@Controller@ResponseBody注解,直接使用@RestController注解,这个注解就是前两个注解的组合注解,省略代码书写,功能一样

五、常见错误

1. 404找不到路径
纠错:查看springmvc.xml中Servelt路径是否与自己所写路径后缀相同
servlet配置的路径
浏览路径

注意:*.do表示只拦截以.do结尾的请求,而 / 代表拦截所有的请求,所以要把静态资源在springmvc.xml配置文件中放行。放行代码–<mvc:default-servlet-handler />
解释:在springmvc.xml中配置<mvc:default-servlet-handler />后,会在Spring MVC上下文中定义一个org.springframework.web.servlet.resource.DefaultServletHttpRequestHandler,它会像一个检查员,对进入DispatcherServlet的URL进行筛查,如果发现是静态资源的请求,就将该请求转由Web应用服务器默认的Servlet处理,如果不是静态资源的请求,才由DispatcherServlet继续处理。

2.空指针异常(NullPointException)
纠错:错误原因@Reference注解导错包
3.在注册中心找不到对应的服务
在这里插入图片描述
这种错误是服务层代码没有成功注册到注册中心导致,请检查一下你的服务层代码是否添加了@service 注解,并且该注解的包一定是 com.alibaba.dubbo.config.annotation 包,不是org.springframework.stereotype.Service,这个地方极容易出错。另外还有一个原因就是你的服务层工程由于某些原因没有正常启动,也无法注册到注册中心里。
4.无法连接到注册中心
在这里插入图片描述
请检查 IP 与端口是否填写正确,检查注册中心是否正常启动

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值