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生成

--------EOF---------
微信分享/微信扫码阅读