6 H _% N8 x3 l! _) V课程计划一共14天课程
* N( ^- ^5 l. X/ D' t: `3 X. g4 I
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$ p( X; w7 R$ T
2 I0 I3 Q$ u* k1 F9 @9 S* i功能描述& u8 j3 u8 O( S2 U- P8 C* I( n
后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能。
# T# }8 z9 K1 }' r2 d. I+ Q前台系统:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作。
/ C+ |) f7 y$ b: X" h$ f# t, p: P会员系统:用户可以在该系统中查询已下的订单、收藏的商品、我的优惠券、团购等信息。
# Q, ^" J6 r7 D7 c" }订单系统:提供下单、查询订单、修改订单状态、定时处理订单。
9 b* m- T* M0 Q' v
搜索系统:提供商品的搜索功能。
" @1 M& i( v, F单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息。
, s F$ e" n+ }- Z( H: Z/ a
( r' v, V" H" e) j思考:有什么问题?
5 D. ]8 F8 B' D, ~5 ]4 t1、 模块之间耦合度太高,其中一个升级其他都得升级
. X' q. x# X. {0 ?
2、 开发困难,各个团队开发最后都要整合一起
( {- X; K K c7 G2 ?& {1 V, E
3、 系统的扩展性差
2 Q, q4 v% u$ i$ V8 N2 E: s0 G
4、 不能灵活的进行分布式部署。
! x$ g8 y& i4 \1 w9 b
' `- C2 z+ B) [8 f6 H
解决方法:
! g$ O- _9 a N6 Q
优点:
; Z* x4 O$ M, }/ ]' w L
把模块拆分成独立的工程,单点运行。如果某一个点压力大可以对这一个点单独增加配置。其他的点不受影响。
& H& B5 i5 ~3 c' E8 V" H6 n
缺点:
T$ c; z# O# K) d
系统之间交互需要额外的工作量来进行接口的开发。
! `) f5 O# V4 L1 c M' l
- U4 ^- f# O- M- |5 ]把系统拆分成多个工程,要完成系统的工程需要多个工程协作完成。这种形式叫做分布式。
% n y* s4 h/ c* F9 M) Y3 O/ U1 S/ @( b% T5 L. D
分布式的架构
0 `6 N( S+ B0 E" d7 \/ e2 m9 G1 k' ]. y2 s0 m5 y
$ ~) p! @( w s+ {# f
8 [# ]8 g7 K2 ^& ~* Y/ H
分布式架构
# o2 [. u r3 I) x8 I9 ~+ E9 T把系统按照模块拆分成多个子系统。
9 J5 v' x) [# J( |) K; w( l优点:
7 R6 a& C; ]6 V8 y3 B: K& v1、把模块拆分,使用接口通信,降低模块之间的耦合度。
" x) Z) x8 c/ k# N4 C5 s2、把项目拆分成若干个子项目,不同的团队负责不同的子项目。
/ t. d: `2 j0 U3、增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。
& z$ J+ c# m1 n9 r9 ^
4、可以灵活的进行分布式部署。
Q: C! \" V+ Z
0 M* \( Z" Z7 ^
缺点:
, ~% E0 f" H" H) c$ C) V1 Z9 ^% V. @& [系统之间交互需要使用远程通信,接口开发增加工作量。
, C9 ], O3 k6 Y; R( A
u- V6 l- n5 i6 W5 U
技术选型(主要技术)( D6 N* C9 n0 v, N1 ^ c2 t
l
spring、SpringMVC、Mybatis
2 q0 `/ T! Y, gl JSP、JSTL、jQuery、jQuery plugin、EasyUI、KindEditor(富文本编辑器)、CSS+DIV
$ Y5 Y, _4 z7 R- A' N+ ql Redis(缓存服务器)
$ C( x) v: _* ^. P9 h2 l6 ^l Solr(搜索)
0 e; R: N& r! c1 e- ~l httpclient(调用系统服务)
\( z6 Z) ?4 p" W8 w6 `: U" T, f
l MySQL
8 ?; W0 I" O W7 i# r" Pl Nginx(web服务器)
1 K3 D) j' v# ~5 Y# p, L* x8 {
1.1.2 开发工具和环境) X g' @( e; Z* K
Eclipse 4.5.0(Mars),自带maven插件,需要手工安装svn插件。
8 D+ E$ a$ ~5 f: X( v0 CMaven 3.3.3(开发工具自带)
4 M$ _3 _6 f; O& }Tomcat 7.0.53(Maven Tomcat Plugin)5 \8 L" j7 x0 U9 J- u
JDK 1.78 @; s8 X. j& A* q
Mysql 5.6
- }$ X9 R7 v g% ONginx 1.8.0
# K0 A1 J3 q4 Y$ ~; }Redis 3.0.0
% L* H; s7 d f8 H9 aWin7 操作系统. g& t. Q; G: Q" C* u8 j5 D
SVN(版本管理)
) Z4 H/ Z$ g* c2 z0 S& u* w" X
1.1 人员配置5 F0 J0 f a8 [, A3 L+ \
产品经理:3人,确定需求以及给出产品原型图。5 V* S4 V5 v$ ~+ e; u& A; j6 Z
项目经理:1人,项目管理。: i+ X1 v+ d* e5 K5 V8 e( w
前端团队:5人,根据产品经理给出的原型制作静态页面。7 ^$ W8 B. s; H
后端团队:20人,实现产品功能。
5 G% U: d0 }7 A: J测试团队:5人,测试所有的功能。
" J% Z; ? ?% N [运维团队:3人,项目的发布以及维护。
3 ]' K, s4 ~* `7 z
2 y* J& W; F+ `& {* u# J) T7 o2 后台管理系统工程搭建/ w' Z: U9 L4 Y1 j, x. I9 W
2.1 Maven
8 Y) v/ n! I7 @, C8 r! r1、依赖管理、jar包、工程之间的依赖。% }" ^7 v, g/ \
2、项目构建。实现项目的一步构建。( E& Z0 [2 Q z# n+ t4 {# |: K
3、工程聚合、继承、依赖。
: e# Z' p4 _' _- ~4 P/ [5 t& c
% [2 g4 _! @! u2 S2.2 Maven的工程类型:
' E9 s* h/ A# e" ]1 E0 ?! D+ S1、war包工程: i# A3 t z3 `0 s2 [6 g' y3 L
2、Jar包工程9 ?6 ~* E2 e+ s1 P
3、Pom工程。/ G- u7 n- h- i; Q( `9 |: T) m9 J
) K: T; X- U& U, s! x* Q) r
6 `* S5 m) k$ g1 c: R9 c