5 C3 V; |- K/ Z# [
课程计划一共14天课程
0 T' P& y" E2 f6 x# r' C
1、第一天:电商行业的背景。淘淘商城的介绍。搭建项目工程。Svn的使用。
2、第二天:框架的整合。后台管理商品列表的实现。分页插件。
3、第三天:后台管理。商品添加。商品类目的选择、图片上传、富文本编辑器的使用。
4、第四天:商品规格的实现。
5、第五天:商城前台系统的搭建。首页商品分类的展示。Jsonp。
6、第六天:cms系统的实现。前台大广告位的展示。
7、第七天:cms系统添加缓存。Redis。缓存同步。
8、第八天:搜索功能的实现。使用solr实现搜索。
9、第九天:商品详情页面的展示。
10、第十天:单点登录系统。Session共享。
11、第十一天:购物车订单系统的实现。
12、第十二天:nginx。反向代理工具。
13、第十三天:redis集群的搭建、solr集群的搭建。系统的部署。
14、项目总结。
' u4 ], U# W$ ^0 U, S. X# t' ^
6 C. ~6 R1 i$ ^, `功能描述
0 I4 J7 L# P4 ~" m- y后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能。
1 v! |: M/ r) F5 Z* T2 o2 F
前台系统:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作。
5 `0 `- Z- P8 }) ?+ H: N
会员系统:用户可以在该系统中查询已下的订单、收藏的商品、我的优惠券、团购等信息。
( ?& ~. A* \% l% M订单系统:提供下单、查询订单、修改订单状态、定时处理订单。
2 w: L0 V4 p0 L搜索系统:提供商品的搜索功能。
, i# m+ R' k) T2 T% D+ W1 [7 V
单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息。
, K; Y" C. _# b- K
# c0 v9 e4 K9 e思考:有什么问题?
9 j- G" J! ?8 l# Z3 X1 U' u2 i+ D6 m1、 模块之间耦合度太高,其中一个升级其他都得升级
9 P, F' X6 X4 K& ]& J2、 开发困难,各个团队开发最后都要整合一起
5 ]) b+ H+ e, @3、 系统的扩展性差
& ^9 z0 ~- P* J, k& ~1 k
4、 不能灵活的进行分布式部署。
$ ~. N$ o- m+ E
! m4 C3 z) u6 f: c解决方法:
O% b. [) w- z% U7 v优点:
5 v% E7 g8 ^$ E( W把模块拆分成独立的工程,单点运行。如果某一个点压力大可以对这一个点单独增加配置。其他的点不受影响。
- T2 f2 b) C7 {2 G$ b$ l$ W6 ^" Y
缺点:
0 D9 W- m, z. r) S
系统之间交互需要额外的工作量来进行接口的开发。
" `9 c2 d9 ]* T6 w H. x
: Q# z$ \4 D* k4 j+ T& ?8 U4 Q
把系统拆分成多个工程,要完成系统的工程需要多个工程协作完成。这种形式叫做分布式。
& E" |. z) ~$ D3 T- V. G, X1 ?+ @- o8 N7 ~: M0 I
分布式的架构/ i1 n) j; m- C4 e Z8 f) S
1 z0 C: b i2 v( K, g) d, k1 N
4 w! z* ]3 P5 A7 R
0 I# n2 r b2 f* f. `分布式架构1 |$ x- v% ?% T! @0 E. b
把系统按照模块拆分成多个子系统。
# p3 y/ v8 }: w- D优点:
0 E& q E8 H6 u! x7 \* m7 r6 P1、把模块拆分,使用接口通信,降低模块之间的耦合度。
& k- c7 ]1 Z# n; W/ l& e
2、把项目拆分成若干个子项目,不同的团队负责不同的子项目。
, ~% g$ p: r! }5 ]
3、增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。
6 b) H' p* f% j4、可以灵活的进行分布式部署。
4 Y9 A; f. w2 w4 Q. N
6 }: a/ b; a, b, \1 l
缺点:
) q K; ~8 u7 \5 G
系统之间交互需要使用远程通信,接口开发增加工作量。
* ?! F. d! |/ u% U$ T* u
! s8 v3 e' u2 q7 [1 K; T
技术选型(主要技术)
+ B$ s8 e p* il
spring、SpringMVC、Mybatis
8 R6 a4 Y1 u( \, p Yl JSP、JSTL、jQuery、jQuery plugin、EasyUI、KindEditor(富文本编辑器)、CSS+DIV
4 o& }! s7 G ^9 p5 B2 {l Redis(缓存服务器)
U8 S$ v* U( ql Solr(搜索)
. ?( P6 ~ j! W# N2 Y+ B" \
l httpclient(调用系统服务)
& ^- }" ?+ A6 f$ q \' _, E
l MySQL
, @4 a% b. @# h0 D7 d1 ]5 I
l Nginx(web服务器)
9 Y, A# ~" J1 t" E, W4 I
1.1.2 开发工具和环境* z `6 i% |. B- Q4 N
Eclipse 4.5.0(Mars),自带maven插件,需要手工安装svn插件。' t8 \) g) Z# \7 K
Maven 3.3.3(开发工具自带)8 X! a R+ W5 f2 C2 [: a9 n1 y) L
Tomcat 7.0.53(Maven Tomcat Plugin)
/ u: S5 a. B9 X5 y" D& vJDK 1.7+ w! z5 `0 _0 B4 }
Mysql 5.63 x4 |3 k( n, u
Nginx 1.8.07 ^' _9 P+ H c
Redis 3.0.0
~% K) |5 M' |; kWin7 操作系统) t/ e+ l9 l: m! ^ b
SVN(版本管理)
6 r3 r& F+ x" m" w. Y$ S# A" g
1.1 人员配置: j. x' u& ~1 w0 L" z) g
产品经理:3人,确定需求以及给出产品原型图。) d$ U8 |& Q& T8 U, M
项目经理:1人,项目管理。' s1 u2 F* E* }" d) S* @; j
前端团队:5人,根据产品经理给出的原型制作静态页面。 ]+ \ m/ }4 L3 q& L
后端团队:20人,实现产品功能。
. c/ \& M" ^0 ]2 N# {0 z0 M2 q; M. o测试团队:5人,测试所有的功能。$ Y7 K, F* }- N
运维团队:3人,项目的发布以及维护。% c$ K5 l1 Z& \1 i+ W" _9 @
' g2 u3 R, P2 |: c$ Z2 后台管理系统工程搭建3 y4 b% K5 A, e6 ^6 b
2.1 Maven
# B' D+ ]5 e4 b6 \1、依赖管理、jar包、工程之间的依赖。
: q; K3 m/ u/ H: C1 e2、项目构建。实现项目的一步构建。5 F, f" B2 M! P7 m/ y3 I5 s& q
3、工程聚合、继承、依赖。
* p/ m$ @0 ~, N* G3 |
" q. @( {+ ~1 x; o1 s1 B2.2 Maven的工程类型:
* ]* ` V, ?/ o$ M8 p1、war包工程
( {3 f6 ]6 K6 s. L4 E, B2、Jar包工程
* J+ m9 M7 k- K' }/ r' Q3、Pom工程。4 g% U3 V( _( y- z( {7 b+ @
7 U7 A; |; O( C3 h$ ]+ `4 B3 D5 E7 D
0 `; R! m. f* C8 s& o/ Q5 s- g