【脱发日记之项目篇】高并发电商项目——易购商城

历时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包。

博客就到这里了 ,图片插入过多,造成卡顿。想要具体了解项目的,可以私信我哦~~

感谢大家的阅读,希望与诸位共同进步!!!冲冲冲!!!