项目持续开发中:当前版本V2.0,详情见更新说明。项目可购买,300包技术支持,线上部署,全套视频教程,赠送其他视频教程,文档,资料,如只需部分服务价格递减。网上流传版本均无法直接部署!!!最新版本联系客服:2580505920 获取完整版请前往 https://www.yuanmasucai.com/24742.html
项目总体介绍
功能点
1、用户注册(注册表单验证)
2、用户登录
3、忘记密码(提交问题答案,重置密码)
4、修改用户账户信息
5、商品分类查看
6、商品搜索
7、商品动态排序(依据价格)
8、商品列表及详情查看
9、后台图片上传及富文本编辑
10、商品上下架管理
11、增删改商品,分类管理商品
12、购物车中加入/移除商品
13、购物车单价总价计算,全选反选商品,提交订单
14、增删改收货地址
15、提交订单
16、支付宝扫码支付,订单结果回调,跳转成功页面
17、订单列表详情查看,管理订单详情、订单搜索
18、通过Maven结合Git从GitHub拉去最新代码实时线上部署
19、线上Nginx做负载均衡,Tomcat集群结合Redis分布式
项目预览
演示视频
bilibili:https://www.bilibili.com/video/av45350080/
优酷:http://v.youku.com/v_show/id_XMzk5Njk5MDUyMA==.html
线上体验
临时域名:(如失效请看视频演示)
项目截图
更新说明
- 当前版本V2.0:线上部署版本,已集成Tomcat集群与Redis分布式解决方案
未来更新方向
- 新增卖家后台
- 采用ElasticSearch搜索引擎
- 引入消息队列
- 项目采用Springboot重构
- 拆分为微服务架构
- ……
技术点
- 前后端分离
- Nginx负载均衡策略配置
- 搭建Tomcat+Nginx集群环境
- 搭建Redis分布式环境
- Redis+Cookie+Jackson+Filter原生的方式解决集群session共享的问题
- 项目集成Redis客户端jedis
- jackson封装JsonUtil
- Cookie封装
- SessionExpireFilter重置session有效期
- 封装Shard Redis API
- Spring Session框架集成零侵入实现单点登录
- SpringMVC 全局异常处理
- SpringMVC 拦截器实现权限统一校验
- 使用部分RESTful接口
- 利用蚂蚁金服开放平台沙箱集成支付宝完成真实支付
- Spring Schedule实现定时关单
项目笔记摘要
Nginx
重启:安装路径下的/nginx/sbin/nginx -s reload
查看进程:ps -ef | grep nginx
平滑重启:kill -HUP [nginx主进程号(上一步查到的PID)]
增加防火墙访问权限:
1.sudo vim /etc/sysconfig/iptables
2.-A INPUT -p tcp -m state —state NEW -m tcp —dport 80 -j ACCEPT
3.保存退出
4.重启防火墙 sudo service iptables restart
mysql安装
1.执行yum -y install mysql-server
> 注:rpm -qa|grep mysql-server 检查是否已经安装MYSQL
默认配置文件在/etc/my.cnf
2.字符集配置
(1)vim /etc/my.cnf
(2)添加配置,在[mysqld]节点下添加:
Default-character-set=utf8
Character-set-server=utf8
注:关于中文乱码的问题,在5.1版本时,为了解决中文乱码问题,my.ini内[mysql]和[mysqld]中都写:default-character-set=utf8
,在5.5版本,[mysql]内可以这么写,[mysqld]内不能这么写了,而是写:character-set-server=utf8
3.自动配置
(1)执行chkconfig mysqld on
(2)执行chkconfig —list mysqld
查看(如果2~5位启用on状态即OK)
4.防火墙配置
(1)sudo vim /etc/sysconfig/iptables
(2)-A INPUT -p tcp -m tcp —dport 3306 -j ACCEPT
,将以上配置添加到防火墙中
(3):wq
保存退出
(4)sudo service iptables restart
执行命令重启防火墙
5.启动mysqld服务:
service mysqld start
或 /etc/rc.d/init.d/mysqld start
mysql初始化环境设置,因为还未设置密码,执行mysql -u root登录MYSQL服务器
6.mysql配置
(1)查看当前MYSQL用户 select user,host,password from mysql.user
(2)修改root密码:
Set password for root@localhost=password(‘password’)
Tomcat集群引入的问题
- session登录信息存储及读取的问题
- 服务器定时任务并发的问题
解决方案
采用Nginx ip hash policy
- 优点:可以不改变现有的技术架构,直接实现横向扩展
- 缺点:1、导致服务器请求(负载)不平均(完全依赖于IP hash的结果)
2、在IP变换的情况下无法服务
NGINX负载均衡配置、常用策略、场景及特点
- 轮询(默认)
- 权重
- Ip hash
- Url hash(第三方)
- Fair(第三方)
轮询(默认)
- 优点:实现简单
- 缺点:不考虑每台服务器的处理能力
Upstream www.verynavi.com{
Server www.verynavi.com:8080;
Server www.verynavi.com:9080;
}
权重
- 优点:考虑了每台服务器处理能力的不同
Upstream www.verynavi.com{
Server www.verynavi.com:8080 weight=15;
Server www.verynavi.com:9080 weight=10;
}
Ip hash
- 优点:能实现同一个用户访问同一个服务器
- 缺点:根据IP hash不一定平均
Upstream www.verynavi.com{
Ip_hash;
Server www.verynavi.com:8080;
Server www.verynavi.com:9080;
}
Url hash(第三方)
- 优点:能实现同一个服务访问同一个服务器
- 缺点:根据url hash分配请求会不平均,请求频繁的url会请求到同一个服务器上
Upstream www.verynavi.com{
Server www.verynavi.com:8080;
Server www.verynavi.com:9080;
Hash $request_uri;
}
Fair(第三方)
- 特点:按后端服务器的响应时间来分配请求,响应时间端的优先分配
Upstream www.verynavi.com{
Server www.verynavi.com:8080;
Server www.verynavi.com:9080;
Fair;
}
参考资料
支付宝对接
沙箱登录:https://openhome.alipay.com/platform/appDaily.htm
沙箱环境使用说明:https://doc.open.alipay.com/doc2/detail.htm?treeId=200&articleId=105311&docType=1
当面付异步通知-仅用于扫码支付:https://doc.open.alipay.com/docs/doc.htm?spm=a219a.7629140.0.0.BykVSR&treeId=193&articleId=103296&docType=1
服务端SDK:https://doc.open.alipay.com/doc2/detail?treeId=54&articleId=103419&docType=1
生成RSA密钥:https://doc.open.alipay.com/docs/doc.htm?treeId=291&articleId=105971&docType=1
线上创建应用说明:https://doc.open.alipay.com/doc2/detail.htm?treeId=200&articleId=105310&docType=1#s0
参考资料
Spring MVC+Spring+Mybatis实现支付宝支付功能(图文详解)
Geekerstar » 极客购-基于SSM框架的网上商城设计与开发(完整源码可线上部署)