历时20天左右,高并发电商项目——易购商城,终于算是小成了!这是第一个由传统的单体项目过渡到微服务分布式项目。呼呼呼~~
按照计划,是准备正式上线的。由于一些原因,导致了只能以截图的方式体现。由于项目过多,租的阿里学生机带不动,服务器超载,另外受经济等一系列因素的限制,负载均衡等技术无法实现(只租一台学生机,虚拟机实现的多服务器电脑CPU却超负荷,其实到最后只启动idea项目,电脑就这样了。。。)这也是项目无法负载均衡的不可控因素。
技术选型:
JSP
jQuery
EasyUI
Spring Boot
Spring MVC
MyBatis
MyBatis Generator
Druid
Logback
MyBatis PageHelper
Dubbo
FastDFS-java-client
Spring Data for Apache Solr
Spring AMQP
Spring Data Redis
Spring Security
HttpClient/RestTemplate
开发工具和环境:
Maven
Linux
IDEA
Zookeeper
FastDFS
Nginx
Solr
RabbitMQ
Redis
MyCat
MySQL
Tomcat
电脑硬件原因,本来使用多台虚拟机换成了租一台阿里学生机,效果还算不错,至少能够保证项目顺利完成。
项目整体如下:
模块说明:
ego_parent:
父项目,之所以统一父项目,最主要的一点就是可以实现对项目整体版本统一管理与控制。
ego_pojo:
实体类与数据库表一一对应。ego_mapper:
编写所有数据库访问代码,使用逆向工程生成。ego_api:
编写接口。ego_provider:
编写接口实现类(提供者)。ego_manager:
网站后台系统,功能完成相比之下较少,所以没有过多拆分项目。ego_portal:
用户访问的门户。ego_search:
solr搜索商品信息。ego_item:
商品详情模块。ego_cart:
购物车模块。ego_passport:
单点登录系统。ego_trade:
订单系统。ego_redis:
包含所有对Redis操作,只需依赖这个项目即可操作Redis。代码的复用性。ego_rabbitmq_sender:
rabbitmq发送消息。依赖此项目就可发送消息。ego_rabbitmq_receive:
rabbitmq消息接收,监听rabbitmq队列。效果展示:
1.管理员登录界面
2.新增商品 上传图片使用FastDFS,Nginx实现图片回显。
选择商品类目后,会出现商品规格参数信息加上商品描述(要点:item+desc+param三表新增)
3.查询商品功能。PageHelper实现分页查询功能;CRUD操作就不一一示范。另外,这里删除、上架、下架是通过status控制,并不是真正意义上的删除。
4.规格参数 基于Json数据格式,实现商品规格参数管理。
5.内容分类管理 树状菜单 使用递归数据结构实现内容分类新增,通过is_parent状态判断。查询内容分类时,默认值等于0。
6.内容管理:选中内容分类,进而实现新增,编辑,删除等功能。
7.门户 SpringCache实现左侧导航栏,大广告位缓存功能。为了提高性能,在对大广告进行增删改操作时,使用rabbitmq消息队列,处理耗时任务。
8.搜索 服务器禁用Flash对图片有这莫名的影响。。。Spring Data for Apache Solr实现海量数据检索
9.商品详情 点击商品将商品信息同步到redis缓存中,提高性能。
10.注册功能 通过Ajax异步请求,在后端实现对数据的check,与JS相互配合使用。
11.登录功能 Spring Session 与Redis联用 ,实现Session共享。
登录成功。
12.购物车 临时购物车 和用户购物车。临时购物车,用户在未登录时,将商品添加到购物车,此时将商品数据从redis中获取,保存到cookie中。用户购物车,用户登陆时, 将临时购物车中商品添加到用户购物车中,清除cookie,如果用户购物车中已经添加了此商品,那么只更改num即可。
13.去结算 订单结算,使用rabbitmq消息队列排对避免多用户同时下单出现商品为负的情况, order ,order-item ,order-shipping三表新增。
14.订单完成 使用rabbitmq消息队列,实现发送邮件,清空购物车等功能。
最后的项目部署就不一一操作了 。。。
Maven打包插件,需要注意的就是需要在POM中添加打包插件功能。带有页面的模块,需要打成war包。
博客就到这里了 ,图片插入过多,造成卡顿。想要具体了解项目的,可以私信我哦~~
感谢大家的阅读,希望与诸位共同进步!!!冲冲冲!!!