HbnnMall商城介绍
开发一个自己的电商系统的念头是在2018年底,我加入小米快一年的时候萌生的。初衷是练习自己的业务代码能力,学习整个电商业务。但是呢,直到现在,电商系统才初具模样。这是因为这两年工作太忙,闲暇时比较懒惰,更重要的是在此之前,主要是对各个业务线,各种专业知识进行了系统性的学习,来小米两年半有余,收获了不少。HbnnMall 80%的开发工作都是今年做的,尤其是年初,疫情期间,给了我大量时间可以做开发。
本文主要简单介绍一下我实现的电商系统以及我采用的技术栈。
我开发电商的确学习为主要目的,所以涉及到的东西比较多。根据业务线拆分出了很多的微服务。
一、网站介绍
1.首页
首页实现了商品分类导航,轮播图、优惠活动、商品推荐、排行榜、每日新品等。
2、商品详情页
商品详情页涉及到很多,商品左侧图片轮播展示、商品属性、商品促销活动、秒杀页、标签切换、立即购买、加入购物车、商品详情介绍、商品评论、商品参数、相似商品推荐等等。这个地方我花的时间最多。
3、商品搜索
4、购物车列表
购物车实现购物车添加、修改、删除、全选、全部选等等。
5、结算页面
结算页是真正订单结算的页面,让商户知道要付多少钱,这里面涉及到商品,优惠多个服务。
6、支付页
订单数据已经生成,并成功写入数据表。接下来商户进行支付操作。超时的会自动取消。
由于支付都是需要企业认证,这里还没实际做支付功能,不过这个不难。
7、个人中心
个人中心包括各状态订单、我的收藏、优惠券、地址管理等等
8、在线客服
在线客服也花了几天时间写的。使用了LayUi模板 +Python。
二、技术栈
上面也说了,我的初衷是学习,所以并不像很多现成的电商系统,所有东西都揉到一起写的,而是采用现在比较流行的基于SOA的微服务。
先看下系统架构:
上面列举了我现在采用的架构图以及技术栈,当然在真正的电商系统中,要比这复杂的多,每一层几乎都要实现分布式。我这也只是给出了一个整体思想。上面几乎已经标识出了我使用到的技术栈。
大前端其实目前我只是实现了Web PC端的,接下来要做的事小程序,然后再是APP。
1、Web端
采用的是Python Django+channels+Vue开发,后续要接入supervisor+gunicorn;
2、API 网关
采用的是Springboot+Netty开发,目前已实现的功能:
- 统一前端接口调用,支持HTTP,Dubbo协议;
- HTTP协议至Dubbo协议的转换;
- 统一鉴权;
- 限流(完成一半),主要借鉴sentinel的思想。
当然,可以看出来,目前实现的网关还比较弱鸡,至少还要加入熔断降级,服务编排,缓存,日志等等。
3、后端业务层
用JAVA+springboot+Dubbo实现的:
- 用户账户服务;
- 商品服务;
- 优惠服务;
- 订单服务; 使用ZK+SnowFlake实现订单的唯一生成
- 评论服务;
- 秒杀服务;
用Golang实现的:
- 购物车服务
用Django+channels实现的:
- 客服服务 Websocket
4、MysqlProxy
实现读写分离+ 分库分表
5、Nacos+sentinel
nacos实现注册中心,服务发现,限流熔断配置发现、sentinel熔断限流。
6、ZK
kafka使用,分布式唯一ID生成
微信分享/微信扫码阅读