文章大纲
一、淘淘商城总体架构介绍
二、淘淘商城重要技术点总结
三、项目常见面试题
四、项目学习(all)资源下载
五、参考文章
一、淘淘商城总体架构介绍
1. 功能架构
2. 技术选型
(1)Spring、SpringMVC、Mybatis
(2)JSP、JSTL、jQuery、jQuery plugin(为页面上的元素产生阴影效果的 jQuery 插件)、EasyUI(一系列的jq模板封装)、KindEditor(富文本编辑器)、CSS+DIV
(3)Redis(缓存服务器)
(4)Solr(搜索)
(5)httpclient(调用系统服务)
(6)Mysql
(7)Nginx(web服务器)
3. 技术架构
二、淘淘商城重要技术点总结
第一天:项目工程搭建。
1、使用maven构建工程。Maven的继承、聚合、依赖管理。
2、Svn的使用,svn上传下载代码。
第二天:ssm框架整合。
1、mybatis逆向工程。
2、后台管理系统搭建,前台技术使用EasyUI框架。了解easyUI的dategrid的使用方法。
第三天:实现商品添加。
1、商品类目选择。EasyUI的异步tree的使用方法。
2、图片服务器的搭建。使用ftp+http配合,实现图片服务。ftp服务使用vsftpd实现,http服务使用nginx实现。
3、KindEditor富文本编辑器的使用方法。
第四天:规格参数实现。
1、规格参数的解决方案。
a)方案一:创建多个表进行关联实现商品类目。
b)方案二:使用模板方式实现。
2、java对象、json之间的转换。
第五天:前台工程搭建。
1、理解分布式系统架构思想。
2、Jsonp解决ajax跨域调用的问题。
第六天:CMS系统的实现
1、CMS系统的实现思路
2、Httpclient的使用方法
3、首页大广告位的实现
第七天:内容系统添加缓存
1、redis的使用方法及redis集群的搭建
2、系统中添加缓存逻辑
3、缓存的同步方法。
第八天:搜索功能实现
1、solr服务在linux环境的搭建
2、使用solr实现搜索功能。
3、索引库中商品的同步
第九天:商品详情页面实现
1、商品详情页面内容异步加载
2、规格参数按需加载
3、商品详情页面添加缓存及缓存同步
第十天:单点登录系统实现
1、服务接口的开发
2、在分布式环境中使用redis实现session共享
3、使用cookie在多个系统中共享。
4、拦截器的使用方法
第十一天:购物车、订单
1、使用cookie保存购物车信息
2、创建订单系统。发布服务,支持post请求提交json格式的数据。
3、在用户提交订单之前,检查用户的登录状态(拦截器)
第十二天:nginx安装、配置
1、nginx的虚拟机的配置
2、Nginx的反向代理
3、Nginx的负载均衡
4、Nginx的高可用
第十三天:solr集群的搭建、系统部署
1、solrCloud的搭建。Zookeeper的配置、solr集群的分片。
2、Mysql数据库在linux环境的安装
3、使用maven进行系统的热部署。
三、项目常见面试题
1. xx网站并发数
10000-20000左右并发
2. xx项目人员配置
产品经理:3人,确定需求以及给出产品原型图。
项目经理:1人,项目管理。
前端团队:5人,根据产品经理给出的原型制作静态页面。
后端团队:20人,实现产品功能。
测试团队:5人,测试所有的功能。
运维团队:3人,项目的发布以及维护。
3. xx项目开发周期
采用迭代开发的方式进行,一般一次迭代的周期为一个月左右。
4. 你说你用了redis缓存,你redis存的是什么格式的数据,是怎么存的
例如:redis中存储的都是key-value格式的。拿商品数据来说,key就是商品id,value是商品相关信息的json数据。
5. 你前台portal采用4台服务器集群部署,那能前台高并发访问性能提上去了,那数据库会不会造成一个瓶颈,这一块你是怎么处理的?
portal系统在高并发的情况下如果每次请求都请求都查询数据库确实会出现数据库的瓶颈。为了降低数据库压力,在服务层会添加一个缓存,用redis实现,这样的话请求先到缓存中查找是否有缓存的内容,如果有直接从缓存中取数据,如果没有再到数据库中查询。这样数据库的压力就不会那么大了。
6. 你购物车存cookie里边 可以实现不登录就可以使用购物车 那么我现在没有登录把商品存购物车了 然后登录了 然后我换台电脑并且登录了还能不能看见我购物车的信息?如果看不到怎么做到cookie同步,就是在另外一台电脑上可以看到购物车信息
宜立方商城现阶段使用的仅仅是把购物车的商品写入cookie中,这样服务端基本上么有存储的压力。但是弊端就是用户更换电脑后购物车不能同步。打算下一步这么实现:当用户没有登录时向购物车添加商品是添加到cookie中,当用户登录后购物车的信息是存储在redis中的并且是跟用户id向关联的,此时你更换电脑后使用同一账号登录购物车的信息就会展示出来。
7. 如果用户一直添加购物车添加商品怎么办?并且他添加一次你查询一次数据库?互联网上用户那么多,这样会对数据库造成很大压力你怎么办?
当前我们使用cookie的方式来保存购物车的数据,所以当用户往购物车中添加商品时,并不对数据库进行操作。将来把购物车商品放入redis中,redis是可以持久化的可以永久保存,此时就算是频繁的往购物车中添加数据也没用什么问题。