1 h' D, X9 q: w) A课程计划一共14天课程
' w( { F$ K$ Q3 X) X' u b
1、第一天:电商行业的背景。淘淘商城的介绍。搭建项目工程。Svn的使用。
2、第二天:框架的整合。后台管理商品列表的实现。分页插件。
3、第三天:后台管理。商品添加。商品类目的选择、图片上传、富文本编辑器的使用。
4、第四天:商品规格的实现。
5、第五天:商城前台系统的搭建。首页商品分类的展示。Jsonp。
6、第六天:cms系统的实现。前台大广告位的展示。
7、第七天:cms系统添加缓存。Redis。缓存同步。
8、第八天:搜索功能的实现。使用solr实现搜索。
9、第九天:商品详情页面的展示。
10、第十天:单点登录系统。Session共享。
11、第十一天:购物车订单系统的实现。
12、第十二天:nginx。反向代理工具。
13、第十三天:redis集群的搭建、solr集群的搭建。系统的部署。
14、项目总结。
2 L$ ^, C+ G) P
% T+ L0 x, p* N7 b9 u: e: O
功能描述
5 ^* Q* o# I+ K4 F6 `# a* ]后台管理系统:管理商品、订单、类目、商品规格属性、用户管理以及内容发布等功能。
1 F; `# }9 k! p( v9 r: k+ Z; q
前台系统:用户可以在前台系统中进行注册、登录、浏览商品、首页、下单等操作。
% C! m* l) w" r
会员系统:用户可以在该系统中查询已下的订单、收藏的商品、我的优惠券、团购等信息。
& N9 P! r; y c" U) Z
订单系统:提供下单、查询订单、修改订单状态、定时处理订单。
7 c, Q: k$ d5 T+ `( o+ q7 L3 M搜索系统:提供商品的搜索功能。
/ F! J+ q" h- s6 F- O单点登录系统:为多个系统之间提供用户登录凭证以及查询登录用户的信息。
3 U% L* O8 y! g7 n
# X4 Z$ I" A+ P思考:有什么问题?
5 o K- f1 L' j9 l1 {$ R
1、 模块之间耦合度太高,其中一个升级其他都得升级
: w8 v9 F; u0 x% i2 J2、 开发困难,各个团队开发最后都要整合一起
- K: e" H% ]% Y2 Z$ Y @' j. j3、 系统的扩展性差
4 u2 O7 Q6 H, V' T4、 不能灵活的进行分布式部署。
( W& W7 M, r9 c ?" _
5 c2 K. V, C. r7 s
解决方法:
2 c8 E2 y; D2 U- O
优点:
5 W ]% B( h+ f h& u0 E- ~把模块拆分成独立的工程,单点运行。如果某一个点压力大可以对这一个点单独增加配置。其他的点不受影响。
4 y! v+ K u* \$ u" s
缺点:
9 f, K& y/ s6 G# z" T8 V
系统之间交互需要额外的工作量来进行接口的开发。
T: v: A+ C! w# {1 a6 G# F4 P9 w
9 m6 R @' E/ l1 i' P* Z( }
把系统拆分成多个工程,要完成系统的工程需要多个工程协作完成。这种形式叫做分布式。
( F8 Z9 H7 K! O3 y9 g7 ?) H+ c* Y% l6 f& W5 d
分布式的架构) u" S1 u1 _" L1 h7 F) d
3 d5 Z' p% ^: G4 {+ e- f. r
5 `, T8 b) m$ k1 U: ?9 C! s
$ x; D/ ~2 |7 G0 f; U, e$ g: |
分布式架构1 w) C1 }4 B2 F! i6 q) N# w \" A
把系统按照模块拆分成多个子系统。
: z. W/ Z/ m& d
优点:
, @( K8 G9 \, A/ o
1、把模块拆分,使用接口通信,降低模块之间的耦合度。
* D4 N$ O) N4 G4 w8 T! D! \2、把项目拆分成若干个子项目,不同的团队负责不同的子项目。
0 a3 ?) ?, _! @! _! |
3、增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。
9 T( N$ P* L7 J% x3 F/ }) `
4、可以灵活的进行分布式部署。
) b; P6 Q- Y$ N/ {6 {! L7 L, X
- ]" C$ X( D& S; y缺点:
. o1 P( {" Z* [) c( A6 u系统之间交互需要使用远程通信,接口开发增加工作量。
2 H5 M+ F2 y% i* e" R# O
: t% N. K& O- O* P技术选型(主要技术)) N: |* z6 B$ v# g- u& V8 e
l
spring、SpringMVC、Mybatis
- L4 z+ W: F; s% Xl JSP、JSTL、jQuery、jQuery plugin、EasyUI、KindEditor(富文本编辑器)、CSS+DIV
2 q0 R: U9 X+ [8 |7 Zl Redis(缓存服务器)
$ D* w8 S' p7 I7 vl Solr(搜索)
) n7 @) ]) w) A& ^# I; }l httpclient(调用系统服务)
0 `4 j0 J5 z4 |! wl MySQL
9 U+ ^3 c9 W9 c$ c4 r
l Nginx(web服务器)
. U: R1 r8 @- b0 P0 o
1.1.2 开发工具和环境
8 u! t8 R8 h, k+ {$ z# hEclipse 4.5.0(Mars),自带maven插件,需要手工安装svn插件。
! G# c5 D4 o3 @* b$ c# hMaven 3.3.3(开发工具自带)9 T5 S; i2 F+ d8 i+ E
Tomcat 7.0.53(Maven Tomcat Plugin)9 V6 V0 E9 b+ ]- I4 g# b
JDK 1.7
4 b, C9 q) l% P6 n5 q3 h8 P$ YMysql 5.6- _/ ?/ F" g1 K6 ?; L
Nginx 1.8.0* s7 h5 V; F2 M# n
Redis 3.0.0' H$ S0 J2 u6 b. X8 c
Win7 操作系统
+ c e( R( K) B! W. ]SVN(版本管理)
0 y. r- k- \% ?6 ]* v
1.1 人员配置
! N, F. @' N( G. h, ~$ o产品经理:3人,确定需求以及给出产品原型图。
! o. S9 [2 e8 ?* ]项目经理:1人,项目管理。
9 j4 ]6 P/ l4 W2 V前端团队:5人,根据产品经理给出的原型制作静态页面。0 W s- R( l" y2 `8 }' f
后端团队:20人,实现产品功能。& F1 n6 ^% X2 _! D3 d. B f
测试团队:5人,测试所有的功能。
2 e+ S$ j# @, C运维团队:3人,项目的发布以及维护。+ \6 X( J; b4 T a' _. N% J1 P. D
% `4 U, i' K2 S2 _+ j
2 后台管理系统工程搭建
0 E1 K% j+ L, t( M6 l2.1 Maven. q `/ Z' {! c/ ]$ A8 @2 l
1、依赖管理、jar包、工程之间的依赖。
2 c6 l' k% S+ G/ g) [# T2、项目构建。实现项目的一步构建。
- s8 \2 D7 s% k0 l8 U, O3 Y3、工程聚合、继承、依赖。2 M: B8 [" L# C- f3 Y
' u1 R' {; k. y1 N1 {6 w! l
2.2 Maven的工程类型:# `( o. n: E3 L
1、war包工程
- C3 E: L. c* u" {) ?2 A2、Jar包工程
& Q' ?# b. m u" T! }( H3、Pom工程。( e, k6 x) B# X5 r7 B% G- j' e* W( _
; \$ ?% U5 ^3 s3 a# O8 i( G
0 v4 ]0 V4 M* y9 Q& m, a5 ^