+ ~& ?7 Z" d: ^& [+ g7 e/ S6 T8 ]5 A
课程计划一共14天课程
6 ]& [: R1 W/ V7 G' A
1、第一天:电商行业的背景。淘淘商城的介绍。搭建项目工程。Svn的使用。
2、第二天:框架的整合。后台管理商品列表的实现。分页插件。
3、第三天:后台管理。商品添加。商品类目的选择、图片上传、富文本编辑器的使用。
4、第四天:商品规格的实现。
5、第五天:商城前台系统的搭建。首页商品分类的展示。Jsonp。
6、第六天:cms系统的实现。前台大广告位的展示。
7、第七天:cms系统添加缓存。Redis。缓存同步。
8、第八天:搜索功能的实现。使用solr实现搜索。
9、第九天:商品详情页面的展示。
10、第十天:单点登录系统。Session共享。
11、第十一天:购物车订单系统的实现。
12、第十二天:nginx。反向代理工具。
13、第十三天:redis集群的搭建、solr集群的搭建。系统的部署。
14、项目总结。
+ B" c; F0 `/ H% n
$ V& Y: G: q( `5 B: R+ r
功能描述
7 m' C8 g! v6 Z( F$ S5 Z后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能。
/ Y0 w5 M) i% K/ t1 g9 j, H4 T前台系统:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作。
# X3 l0 s7 d' c% C2 T
会员系统:用户可以在该系统中查询已下的订单、收藏的商品、我的优惠券、团购等信息。
. D O3 l: y2 @2 _7 M
订单系统:提供下单、查询订单、修改订单状态、定时处理订单。
! j) @3 s6 |5 j4 k) u
搜索系统:提供商品的搜索功能。
! W6 e( E& o6 b1 @6 @
单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息。
2 L$ f* C3 ]& {% z( V$ X
0 l" ?$ c' m1 k) A2 _' r
思考:有什么问题?
) ~# I/ [& u/ }1、 模块之间耦合度太高,其中一个升级其他都得升级
' h3 g+ a3 @" q& M+ Y; K2、 开发困难,各个团队开发最后都要整合一起
- K7 {# p8 w. ?$ o
3、 系统的扩展性差
' c& ~9 C. j9 a- i" F/ Q; p4、 不能灵活的进行分布式部署。
; K( ~* f: }. a5 G
0 A$ ]: J6 i' x8 U/ W
解决方法:
* l% o7 j p( {! z优点:
. j6 B; P' W+ l4 ?, ?) B4 m
把模块拆分成独立的工程,单点运行。如果某一个点压力大可以对这一个点单独增加配置。其他的点不受影响。
2 N: ]3 M' I, v缺点:
, o& x" Q U2 v7 o! {
系统之间交互需要额外的工作量来进行接口的开发。
; m' s! {4 F# K" z2 J# |* M# E7 \' Z
2 W6 w/ f9 J! i7 d: X7 V8 ^7 y3 L6 }把系统拆分成多个工程,要完成系统的工程需要多个工程协作完成。这种形式叫做分布式。
3 X7 [; I6 \. [* V6 \3 S* D. n1 B# W4 d2 Z6 a/ I6 c- r
分布式的架构
* h$ f, ` o" h, X% e% X7 s
% e% G. }! B5 ]+ J
+ h& s G5 N8 g+ k: F: W4 g+ T/ }, J5 d. A/ g8 I
分布式架构
. R& K& B' ~4 F把系统按照模块拆分成多个子系统。
# E2 T! x8 T6 I% z
优点:
! N8 H3 R% z: ^" u9 `
1、把模块拆分,使用接口通信,降低模块之间的耦合度。
; u) G( K: t, G: U, p1 K2、把项目拆分成若干个子项目,不同的团队负责不同的子项目。
/ R- g9 o! ]" J8 `3、增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。
7 z" \. H e" `) q9 \5 t4、可以灵活的进行分布式部署。
* {0 U7 [) L X: B5 F7 k+ X! V# E, X! y# v
缺点:
7 v, _$ w7 H, x2 l9 p4 ^6 F
系统之间交互需要使用远程通信,接口开发增加工作量。
7 z7 P$ I; e1 s# f7 R
* ~! |7 a4 ^. W' T, I
技术选型(主要技术)
0 N! M, h: ? E& B! E4 h1 B- Pl
spring、SpringMVC、Mybatis
$ d4 H+ Y. R9 o- Xl JSP、JSTL、jQuery、jQuery plugin、EasyUI、KindEditor(富文本编辑器)、CSS+DIV
) h# V" J0 O0 I9 Z# L5 ` yl Redis(缓存服务器)
- R8 s# x$ t, s
l Solr(搜索)
0 G3 p" w' n( t& @9 k- n" pl httpclient(调用系统服务)
/ O% ~& f, i( X' A+ b# m- j
l MySQL
+ |* d! d8 T) G
l Nginx(web服务器)
; e$ b% F) w2 I1.1.2 开发工具和环境" h# d/ N* d2 R9 t
Eclipse 4.5.0(Mars),自带maven插件,需要手工安装svn插件。$ X, H5 s& Y! a0 t0 C/ n
Maven 3.3.3(开发工具自带)* J# X$ p _! U. g1 E. C4 k, k
Tomcat 7.0.53(Maven Tomcat Plugin)
5 I0 k8 o k. k* A7 p+ HJDK 1.75 b p! p, _6 r) m' z# y
Mysql 5.6
, U6 A7 R2 Z- T, {1 y/ L' p9 x; dNginx 1.8.0
+ Q3 m; @; b0 ]! Z& Q! JRedis 3.0.0! m b q/ K4 o
Win7 操作系统6 A+ [* s/ A/ p( N- F4 ?
SVN(版本管理)
! P O7 u0 ~$ b2 B1.1 人员配置
/ ~- G$ e0 K9 R5 g5 P' z1 C/ r产品经理:3人,确定需求以及给出产品原型图。
0 L5 n# \- W1 F' q2 Y( P项目经理:1人,项目管理。8 t: B( V/ V5 w
前端团队:5人,根据产品经理给出的原型制作静态页面。
1 z$ t* Q: L* o) c后端团队:20人,实现产品功能。0 p R: D4 [6 a4 J9 M s
测试团队:5人,测试所有的功能。& P0 n S! ]' l- Y2 x. W
运维团队:3人,项目的发布以及维护。
) R/ d* V: a; j% Y7 \( b; a, m1 S9 X# b) ]5 U8 C
2 后台管理系统工程搭建
( c! j0 P! E, X( _! e2.1 Maven
1 @( N2 {! W H5 A; G8 I1 `1、依赖管理、jar包、工程之间的依赖。. ] g/ d- Y' \+ K" i& E
2、项目构建。实现项目的一步构建。
8 s3 Q6 g2 c. I3、工程聚合、继承、依赖。: b: J+ ~' E6 ~% l2 b
) O- H% P. }; S% U' i
2.2 Maven的工程类型:
/ t/ C: s" _3 n1、war包工程
8 h/ m9 W1 j$ `2、Jar包工程6 @6 F- Z8 _) W' C) M$ I
3、Pom工程。
$ V0 p$ q r+ ~) ?) j% G) W4 o) z% r; f. S5 P# j0 P
3 y) p' A. b$ J% u