! p* u" G$ p0 q; p
课程计划一共14天课程
\0 ?) n* u: c0 d6 D& {' V& W
1、第一天:电商行业的背景。淘淘商城的介绍。搭建项目工程。Svn的使用。
2、第二天:框架的整合。后台管理商品列表的实现。分页插件。
3、第三天:后台管理。商品添加。商品类目的选择、图片上传、富文本编辑器的使用。
4、第四天:商品规格的实现。
5、第五天:商城前台系统的搭建。首页商品分类的展示。Jsonp。
6、第六天:cms系统的实现。前台大广告位的展示。
7、第七天:cms系统添加缓存。Redis。缓存同步。
8、第八天:搜索功能的实现。使用solr实现搜索。
9、第九天:商品详情页面的展示。
10、第十天:单点登录系统。Session共享。
11、第十一天:购物车订单系统的实现。
12、第十二天:nginx。反向代理工具。
13、第十三天:redis集群的搭建、solr集群的搭建。系统的部署。
14、项目总结。
8 z; @( b4 e1 y& @$ V
8 z3 c% e% `' k& V
功能描述2 X& ~; l* E; t I. m
后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能。
: [- b$ R. R0 T2 ?1 i前台系统:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作。
& b9 y- n, y# n会员系统:用户可以在该系统中查询已下的订单、收藏的商品、我的优惠券、团购等信息。
. Q k. i) }" x' v3 j7 v, d
订单系统:提供下单、查询订单、修改订单状态、定时处理订单。
' X, T( o# ~% X" a( e( D搜索系统:提供商品的搜索功能。
/ I J* A! G4 V7 O/ L
单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息。
( k. X2 b' [/ E& }0 e/ E
6 _, n" |6 a7 Y0 d6 q; V
思考:有什么问题?
; S8 e. O* S( E+ c$ }) o- J
1、 模块之间耦合度太高,其中一个升级其他都得升级
/ {6 }) h8 ]5 V+ f3 Y' U2 Q* u2、 开发困难,各个团队开发最后都要整合一起
3 M( n* N4 L8 {7 ~% p& M' r3、 系统的扩展性差
2 Q$ a0 n: e9 `# m( ~; \+ M) F0 q
4、 不能灵活的进行分布式部署。
; F5 \1 e1 K( M9 o, |( |
1 F' l& L! I2 ?0 ?2 R
解决方法:
, x( J' K! u5 M优点:
& t q) \; [, Z2 H8 G
把模块拆分成独立的工程,单点运行。如果某一个点压力大可以对这一个点单独增加配置。其他的点不受影响。
" x( |+ _; l, l _( k M: R( h* F
缺点:
2 @2 o7 \/ [( E" e; a ]系统之间交互需要额外的工作量来进行接口的开发。
5 g3 E! E3 v& \ r' Q( u d, s2 }3 M" f
把系统拆分成多个工程,要完成系统的工程需要多个工程协作完成。这种形式叫做分布式。
* g" q: N$ N" M1 q
; w* @, x3 Z, z8 F6 M6 m9 r分布式的架构
9 l. k) E& ~# j Q9 j% i. z" w- [8 z: Y7 _5 t: r
- k2 u$ G9 K6 | O* T! l
9 V: @; z1 x6 ^+ ^2 _
分布式架构
9 O+ D9 [- U" B6 }+ s把系统按照模块拆分成多个子系统。
6 N% ?- |5 v' i X- d0 r: W优点:
+ g v8 w3 u$ u7 a
1、把模块拆分,使用接口通信,降低模块之间的耦合度。
0 Z. q' r+ L# [0 H: a( Y) V1 v9 b2 Q
2、把项目拆分成若干个子项目,不同的团队负责不同的子项目。
: _7 @) r. V, M8 ?
3、增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。
+ I) u T" G2 ?5 `( q* Y6 k' d
4、可以灵活的进行分布式部署。
7 V1 p% L* v+ F0 y9 Y$ b. o: m
9 G5 q$ d( F+ A+ `. C* d5 h
缺点:
9 G( J# ]- v) g3 k系统之间交互需要使用远程通信,接口开发增加工作量。
, n2 O7 J6 Z V6 j. v: @! q! n$ _8 i* ^
技术选型(主要技术)& C. r @( @$ G- }' a) p' `/ y
l
spring、SpringMVC、Mybatis
|0 O' Z0 Z2 |: ~" v* E: T
l JSP、JSTL、jQuery、jQuery plugin、EasyUI、KindEditor(富文本编辑器)、CSS+DIV
/ C1 R4 h: c- d$ c
l Redis(缓存服务器)
; |$ @( H) Y6 l8 k. L
l Solr(搜索)
* P+ g9 P, W7 E5 s8 N9 Fl httpclient(调用系统服务)
: ?( u7 @6 u9 O0 M
l MySQL
# p0 Z9 y0 x3 v4 J- E. i: F$ \! i& a* Wl Nginx(web服务器)
" a* o) m" }) G! r c0 P9 ]8 _
1.1.2 开发工具和环境
& |; y2 A L9 d8 Z& sEclipse 4.5.0(Mars),自带maven插件,需要手工安装svn插件。3 I+ a: V2 l/ s3 J( e5 K
Maven 3.3.3(开发工具自带)8 ?7 O9 g' S7 \
Tomcat 7.0.53(Maven Tomcat Plugin)
& g j; ]5 \% H: JJDK 1.7
4 [5 r( ]6 d- M% L0 ZMysql 5.6$ E9 E7 o; g( Y0 T6 }9 F' B
Nginx 1.8.0
* D. g8 m H5 Y9 s9 s5 k. B3 \Redis 3.0.0
+ G5 h! g& a# H& R2 a5 W1 YWin7 操作系统
/ H& w2 k5 h7 }0 M& @' sSVN(版本管理)
2 T/ F: |3 t r( m- `
1.1 人员配置
# p% S5 i; Q( d9 j, E产品经理:3人,确定需求以及给出产品原型图。
, m- Z1 A# c# _( n项目经理:1人,项目管理。* a0 F& f) q4 Z& \- I
前端团队:5人,根据产品经理给出的原型制作静态页面。. N" {. T" K; x9 \- Y
后端团队:20人,实现产品功能。
+ T" P, i; O9 Q7 L' C1 v* Z8 t% f1 H3 Y测试团队:5人,测试所有的功能。
# t* ]1 ]1 Z! t5 c8 j运维团队:3人,项目的发布以及维护。1 V- f1 A8 J2 p. O3 @
; z: i+ N8 u) J. \/ T2 后台管理系统工程搭建1 J$ E) G l' X
2.1 Maven
, S& m3 a# a; B% b0 p/ o1、依赖管理、jar包、工程之间的依赖。9 ~) _" ~7 K$ k `8 G% q" ^
2、项目构建。实现项目的一步构建。0 }$ N* s8 i4 q* {- {2 p" j
3、工程聚合、继承、依赖。 T2 R* m: g) p
' }, S1 ^8 r5 q5 I* E2.2 Maven的工程类型:2 W5 r* c6 u4 b7 ]# Q
1、war包工程
! r5 O2 P5 `- e2、Jar包工程
3 O; [' O h9 [; @3、Pom工程。6 b' Y$ w' a4 V* M
/ C+ `9 _4 x* ]5 d
5 | b. e$ J" S