1 京淘介绍
2 要求
- 项目在自己的电脑中做一遍
- 项目一定要个跟上
3 京淘项目概述
3.1 电商网站的特点
3.1.1 高并发
概念:在单位时间内,用户大量的访问服务器.
说明:
说明:例如淘宝的双11交易额特别的巨大.淘宝数据库的处理的峰值25.6万/秒.
电商网站中,高并发是主要考虑的问题.
3.2 分布式
说明:分布式主要分为 1.分布式计算 2分布式系统
3.2.1 分布式计算
说明:一项任务交给多台服务器完成.
例子:一项任务如果由一个人完成需要10个小时.如果由10个人共同完成这项任务.仅需1个小时.(大数据)
3.2.2 分布式系统
说明:将系统按照功能模块进行拆分.拆分为不同的系统.完成不用的任务.
1.传统项目
2.分布式系统
分布式系统的作用:
- 对外统一.对内独立
- 大型项目构建时,内部会根据业务需求,划分为不同的子模块.不同的模块处理的业务不同.开发相对互补影响.极大的提供开发效率.
- 如果某项业务出现问题.影响的范围较小
3.2.3 集群
说明:通过多台服务器,处理的是相同的业务
图例:
说明:
- 采用集群的部署,可以有效的抗击高并发.
- 在集群部署中,会采用高可用的方式,目的让服务器尽可能的不”宕机”
总结:分布式项目也可以部署集群.让我们的后台更加的强大
3.2.4 海量数据
说明:由于软件行业的不断的发展,数据的积累量越来越多,如果实现快速的检索,分析.处理是现在电商网站面临的重大的难题.
(大数据) AI 区块链(概念)------征信问题 王欣
4 京淘架构设计
4.1 技能点介绍
4.1.1 功能模块划分
说明:京淘项目主要分为 2大支撑系统
序号 | 项目名称 | 主要作用 |
1 | jt-manage | 京淘后台管理系统 负责商品的更新和维护 |
2 | jt-web | 京淘前台系统,主要负责商品的展现 |
3 | jt-cart | 京淘购物车系统,负责用户购物车信息维护 |
4 | jt-sso | 京淘单点登陆系统,实现session数据共享 |
5 | jt-order | 京淘订单系统,负责订单维护 |
6 | jt-search | 京淘项目的全文检索 |
7 | jt-rabbitMQ | 消息队列系统 |
8 | jt-parent | 负责jar包的管理和依赖 |
9 | jt-common | 管理工具类文件 |
4.1.2 京淘的技能点
说明:京淘的互联网项目包含了当下最新最热门的技术.
序号 | 知识点 | 重要程度 |
| 掌握程度 |
1 | 业务:商品分类、商品、前台、权限单点登录、购物车、订单、商品全文检索 | ★★★★★ | 1 | 熟练 |
2 | Spring、SpringMVC、MyBatis主流框架 | ★★★ | 1 | 熟练 |
3 | Maven 一键构建继承和聚合 | ★★ | 1 | 熟练 |
4 | PowerDesinger表设计及优化 | ★★★★ | 3 | 会用 |
5 | 富客户端EasyUI、KindEditor图文控件 | ★ | 1 | 会用 |
6 | RESTFul 访问方式 | ★★★★★ | 1 | 熟练 |
7 | 通用Mapper插件,自动生成调用代码 | ★ | 1 | 会用 |
8 | Nginx 负载均衡/反向代理 | ★★★★★ | 1 | 精通 |
9 | Tomcat集群 | ★★★ | 1 | 熟练 |
10 | Linux/CentOS 操作系统 | ★★★ | 1 | 熟练 |
11 | MySQL主从复制,Amoeba/mycat读写分离 | ★★★★★ | 3 | 精通 |
12 | Redis 缓存数据库,分片,哨兵,集群高可用 | ★★★★★ | 1 | 精通 |
13 | JSONP浏览器跨域 | ★★ | 2 | 会用 |
14 | HttpClient系统间调用 | ★★★ | 1 | 熟练 |
15 | 石英钟定时任务 | ★ | 1 | 会用 |
16 | RabbitMQ 消息队列 | ★★★ | 3 | 熟练 |
17 | Lucene、Solr搜索 | ★★★★ | 3 | 熟练 |
18 | Jsoup爬虫技术 | ★★★★ | 3 | 熟练 |
19 | Dubbo框架 | ★★★★ | 4 | 熟练 |
20 | Docker容器技术 | ★★★★ | 4 | 熟练 |
21 | Druid阿里数据库连接池 | ★★★ | 4 | 熟练 |
5 Maven
5.1 传统项目的问题
5.1.1 分析
- 传统项目的jar包需要专人来维护和编辑.(架构师)
- Jar包冲突问题比较麻烦
- 传统系统中打包发布也是问题(分布式项目打包更加麻烦)
5.2 Maven介绍
5.2.1 Maven介绍
说明:使用Maven可以一键构建项目,管理/更新/维护项目的工具
5.2.2 Maven下载
说明:
说明:使用Maven直接从官网根据自己的系统选择正确的版本
5.2.3 Maven安装
5.2.3.1 检测JDK
说明:如果修改完jdk后依然是1.8则需要进入控制面板中,卸载1.8JDK
5.2.4 配置Maven
1.Maven路径
2.添加maven变量
3.将maven加入path中
; %MAVEN_HOME%\bin
检测是否配置成功.重新打开cmd命令提示框
命令:mvn -version
如果出现图上的信息.表示Maven配置成功
5.2.5 Maven的重要组成部分
1.用户(USER) 使用Maven的调用者
2.本地仓库 用户需要的jar包保存到了本地(本机),默认的本地仓库的存储路径c:/user/.m2/reposipoory
3.中央仓库 位置在海外.在中央仓库中保存着现在主流的公司的全部的jar包.下载时速度较慢
4.镜像 在国内相当于中央仓库的代理,并且速度很快 阿里云镜像/达内镜像
5.Settings配置文件 maven中属性配置文件 配置本地仓库/私服镜像
特点:maven是基于网络的!!!!.使用maven时要么使用网络,要么添加私服镜像!!!!
5.2.6 配置本地仓库
说明:将本地仓库的路径复制E:\software\mvn_repo.修改大约55行左右
2.添加私服镜像
说明:在培训期间使用达内私服镜像服务器.
5.2.7 复制settings文件
说明:将settings配置文件存入m2下
${user.home}/.m2/settings.xml.
Maven默认访问的就是user级别.所以必须配置,否则无效
修改全局的settings文件
${maven.conf}/settings.xml
5.2.8 配置maven的jdk
说明:通过maven创建项目时,默认使用1.7的JDK
配置:大约在settings文件的262行添加jdk的配置.作用可以通过maven创建项目时默认使用就是1.7
<profile>
<id>jdk17</id>
<activation>
<activeByDefault>true</activeByDefault>
<jdk>1.7</jdk>
</activation>
<properties>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<maven.compiler.compilerVersion>1.7</maven.compiler.compilerVersion>
</properties>
</profile>
5.2.9 Maven如何实现自动的jar包依赖
问题:
- Maven是如何自动的依赖jar包?
- Maven如何保证jar包文件不被篡改?
答案:
- 由于maven在进行jar包依赖时,会执行依赖的pom.xml文件,如果该文件中有自己的依赖.则maven再次自动的通过坐标实现jar包的导入.
- 如何保证不背篡改
6 Eclipse整合Maven
6.1 环境配置
6.1.1 修改JDK
6.1.2 修改字符集编码
6.1.3 关闭校验
6.2 引入maven工具
6.2.1 导入maven
说明:添加maven工具后,将maven打钩表示启动
6.2.2 引入settings文件
7 项目的拆分
7.1 项目的垂直拆分
7.1.1 垂直拆分
说明:根据不同的功能模块将模块系统化这样的拆分方式叫做垂直拆分.其实就是分布式的思想
7.1.2 分布式项目如何管理jar包
问题:将模块进行系统化之后,每一个模块都是一个特定的系统.每个系统都需要自己的jar包文件.分布式系统如何统一管理jar包
解决:
创建一个专门负责管理jar包的项目jt-parent.主要维护项目中所有公用的jar包文件(ssm)
7.1.3 分布式项目如何管理工具类
问题:分布式项目中,有一些工具类需要进行复用,.但是如果将每个工具类都单独写入项目则不方便维护.
解决:为工具类单独的创建项目jt-common.之后将jt-common打包,形成jar包文件.可以通过pom.xml文件直接依赖
补充说明:继承和依赖的区别
继承可以引用父类的全部的jar包文件.
依赖只能依赖特定的某个jar包文件.
7.1.4 简述分布式项目的注意项目
答:
- 什么是分布式????
根据不同的业务模块将项目进行拆分.并且将模块系统化.会产生2个问题.1项目中的jar包如何维护.2项目中的工具类如何维护.
通过创建管理jar包的项目jt-parent项目.其他的项目只需要继承该项目即可.
创建工具类项目jt-common,其他的项目如果需要工具类引用,只需要依赖工具类即可.
Jt-parent/jt-common称之为项目的支持系统
8 构建京淘后台管理系统
8.1 Jt-parent
8.1.1 构建jt-parent
说明:jt-parent项目的作用主要管理jar包文件.并且项目类型为pom.
8.1.2 Maven的坐标
以上的三个信息共同构成了maven的坐标.
GroupId:组id 一般是公司的名称
ArtifactId: 项目名称
Version: 项目的版本号
问题:中央仓库如何管理jar包???
解答:Maven的中央仓库其实就是采用坐标的方式管理jar包文件
8.1.3 选择骨架
说明:通过骨架构建项目,其实就是maven提供的项目创建的模板.模板内包含了项目所需要的配置文件及文件夹.
1.选择骨架
2.定义坐标
3.修改pom
4.更新maven
说明:如果出现以上的报错信息,则需要更新maven项目
- 导入jt-parent的依赖包
说明:将课前资料中的jt-parent中的pom.xml文件导入后即可.
8.1.4 将jt-parent打包
说明:如果jt-parent项目创建成功后需要手动的打包.runas-mvn install.
8.2 构建jt-common
8.2.1 选择骨架
8.2.2 定义坐标
8.2.3 继承jt-parent
8.2.4 引入工具类文件
说明:将课前资料中的jt-common中的工具类导入项目中.导入完成之后打包
补充:如果打包不成功,将本地仓库中的jt全部删除后重新打包
8.3 构建京淘后台管理系统
8.3.1 骨架的选择
8.3.2 定义坐标
8.3.3 修改JDK
说明:由于maven中自已依赖的JDK不完整,所以需要我们手动的修改.
8.3.4 继承parent
8.3.5 依赖工具类
9 引入tomcat插件
9.1 Tomcat中存在的问题
9.1.1 资源问题
说明:
1.如果使用本地的tomcat,那么需要定期清空webapp.否则项目启动会很久.
2.如果需要多个tomcat服务器则需要手动的修改端口号.8005 8080 8009
9.1.2 引入tomcat插件
说明:使用tomcat插件是在运行期开始绑定.插件版的tomcat可以做到无限次启动.只需要修改一个端口号即可8080
Tomcat插件引入
<!--引入tomcat插件 将原有的build删除 第8行 -->
<build>
<plugins>
<plugin>
<groupId>org.apache.tomcat.maven</groupId>
<artifactId>tomcat7-maven-plugin</artifactId>
<version>2.2</version>
<configuration>
<port>8091</port>
<path>/</path>
</configuration>
</plugin>
</plugins>
</build>
9.2 绑定tomcat
9.2.1 新建build
说明:需要创建maven build
9.2.2 编辑插件应用
9.2.3 导入源码文件
9.2.4 检测字符集是否正确
9.2.5 端口占用报错
补充:如果端口占用,需要现关闭tomcat