基于电商中台架构-商品系统设计(一)

一、 总体设计
为什么采用中台架构前几篇已经说明了,这里就介绍一下基础层和平台层的功能。
在这里插入图片描述

  1. 基础层
    发布、编辑、上架、下架这些功能大家应该比较熟悉。
    审核:是否需要审核通过才允许上架
    打标:对商品进行标记,例如参加某种活动
    Sku管理:商品和sku关系
    关联关系:前后端商品关联关系、组合商品关联关系等
    前后端商品:前端商品面向用户,后端商品面向仓库
    类目:商品类目,前后端类目
    属性:商品属性、类目属性等等
  2. 平台层
    商品管理:商品的基本操作
    商品收藏:管理用户收藏的商品
    商品快照:保存商品编辑的每一个快照版本
    活动打标:根据不同的活动映射到商品属性上不同标记
    销量管理:商品的销量统计、以及排序操作
    浏览历史:用户浏览记录
    搜索:不同维度对商品的搜索
    二、 概念定义
  3. Item-sku
    Item代表产品 sku代表商品
    举例:item对应苹果7手机 但苹果7有黑色、白色 则sku对应黑色的苹果7手机
    对应关系如下:
    在这里插入图片描述
  4. 前后端商品
    前端商品:面向用户的,在商城展示销售的,它是一个虚拟的概念。
    后端商品:面向仓库实体商品的,比如一台电脑就创建一个后端商品。它和仓库有着紧密的关系,同步库存,入库出库等操作都要同步到该商品信息。
    前端商品和后端商品有个映射关系,比如前端商品为电脑,则后端商品会对应一个电脑。
    后端组合商品:有些商品是可以单个售卖,也可以打包售卖,比如电脑套装优惠,这个套装就是一个组合商品A,他是由电脑B、鼠标C、键盘D组成。
    所以这里就有一个映射关系A->(1B,1C,1D)。此时如果需要在商城售卖,则可以创建一个前端商品和A进行关联。
  5. 关联关系
    这里关联关系就包括:前端商品和后端商品的映射关系、后端组合商品和单个商品的关系。根据这个关系可以确定该商品在哪些仓库有库存、该发货几个等等。
  6. 商品快照
    商品每次编辑都会保存一份快照,一来可以记录操作日志,二来可以追溯,比如订单会存一个快照商品版本,根据该版本找到下单当时的商品信息。
  7. 商品打标
    打标其实就是一个标记,比如一个商品参加的十几个活动,那么怎么在商品上保存,我们可以使用一个long型字段flag来保存,long是64位,每一位代表一种类型的活动,0代表否,1代表是,通过对flag进行二进制操作即可完成活动信息更新。
  8. 类目
    类目也分为前后端类目,前端类目就是面向用户,具有导航功能,而且易变。
    后端类目是和商品直接关联,很稳定。前后端类目有映射关系。
  9. 属性
    商品关联的属性,举例:黑色苹果7手机,他具有属性为颜色,属性值为黑色。
    三、 技术设计
  10. 关系图
    在这里插入图片描述
  11. 商品关键字段介绍
    商品表都是基于分库分表的设计。
    category_id:商品和类目是一对一的关系,创建商品的时候需要首先获取到商品所属类目。判断该类目下商品发布是否需要审核,以及商品必须要填充该类目下关联的属性并保存到商品上。
    item_pattern:商品形态:包括实物商品、虚拟商品、服务商品,为什么要有这个字段,因为实物商品需要关联仓库实物商品;虚拟商品不需要关联,比如电子书、视频等等;服务商品作为另外一种特殊处理方式,比如三年保修、送货上门等都是作为一种服务,我们把它抽象成服务商品,在下单时一同加入订单中,这样做的好处在于易于扩展。
    item_type:商品类型:包括前端商品和后端商品;或者组合商品,或者扩展的商品类型。
    shop_id:归属的店铺
    selle_id+item_code:商家id和商家编码,如果是商家自己erp系统导入的商品,则这两个字段是唯一的,能唯一确定商家系统的商品。
    flag:标记位,进行二进制打标操作。
    biz_type:所属业务平台,根据该字段进行不同业务间的数据隔离。
    feature:扩展字段,将商品属性存在里面,也可存储未来新加的信息而无需改表结构。
  12. 商品历史表Item_history设计
    历史表就是已经删除了的商品数据表,那为什么要把删除的数据保存下来,这就是电商系统的设计原则,任何表的数据只逻辑删除,不进行物理删除。所以很多表都会加上is_delete字段标记是否被删除。
    在这里插入图片描述
    但是商品表为什么要新建一张表,这里有两点,1)商品表中有唯一键约束,(seller_id,item_code),如果删除了放在原表,商家再次同步该商品时,因为这两个字段相同,会影响唯一键约束,但又不能真正删除,所以就将数据移至历史表。2)商品表数据日积月累会越来越庞大,将删除的数据迁出有利于提高原表的性能。
  13. 商品快照设计
    商品作为电商交易中的对象,对其任何的改动都至关重要,所以存储快照一方面是把每次的更改记录都保存下来。另一方面是存在类似于交易订单的场景,需要当时商品的信息,以便处理投诉、维权。
    那么快照数据更加庞大,因为每一次的改动都会生成一份数据,所以不能存在数据库,而是采用外部存储。查询的时候需要itemId+snapshotVersion,商品id和快照版本进行查询。
    在这里插入图片描述
  14. 商品打标设计
    首先定义一个活动类型枚举类,说明每一位代表什么活动。其他类型也可以,反正就是标记该商品具有某种属性。
    在这里插入图片描述
    假如flag=0;现在商品参加某个活动,flag第三位代表该活动,则打标过程为;
    flag=flag | (1 << 2)
    去标同样的逻辑。
  15. 商品扩展字段设计
    不仅是商品表,在工作中我们会经常遇到,在需求不断迭代的过程中,肯定会有添加字段的需求,但如果我们添加的字段都不是关键字段的话(不用于检索),比如商品表如果后端商品现在需要存储长宽高、质量、以及一些产地等信息,我们就可以通过扩展字段的方式解决,而且还免去了对线上表加列的操作。扩展字段feature其实就是Json格式的字符串,预留一定长度,待后面有需求在往里面加键值对。
    比如说加之前是这样存的:

{“length”:10,“width”:12,”height”:20}

加了产地后就变为

{“length”:10,“width”:12,”height”:20,”region”:”HZ”}

但更新的时候一定注意要带版本更新,否则并发情况将会发生数据覆盖。这也是另外一个设计原则,数据库所有表都要加version字段的原因:数据更新乐观锁控制。
7. 商品销量统计&排序
销量其实不是作为商品本身的一个属性,因为销量是根据交易订单成交量来动态计算出来的,但是一般电商网站都会有根据销量排序的需求,那这个怎么实现呢。肯定是搜索引擎来做,因为搜索条件太多,排序条件太多,数据库索引也支持不了各种组合查询、排序。所以我们就根据业务需求,一般销量一天统计一次就满足需求了。在商品索引中添加一个销量字段,每天定时任务从订单里面统计销量,然后再以消息的方式,推送到搜索引擎,搜索排序的时候搜索引擎就能帮我们实现这个功能。
8. 商品类目设计
类目设计将在后续文章详细介绍。包括前台类目、后台类目、类目树构建、类目缓存设计、类目属性等等。
9. 商品搜索设计
搜索设计将在后续文章详细介绍。搜索设计包括搜索引擎选型、存储结构设计、索引构建、搜索、以及通用搜索框架等等。

四、 总结
本文介绍了商品系统分层设计,以及每一层对应的功能和功能设计。后续还会对商品系统中设计要点、细节进行详细介绍,比如类目、搜索。此外,在实现中还涉及了许多中间件的封装使用,所以后续还会对通用组件(通用搜索框架、消息框架)进行介绍。

更多文章欢迎访问 http://www.apexyun.com/
公众号:银河系1号
联系邮箱:public@space-explore.com
(未经同意,请勿转载)

  • 7
    点赞
  • 52
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
对于大中台来讲,现在并没有十分严格的定义,每个企业对其的理解都是不同的,有的在技术上使用大中台模式,有的在业务上使用大中台模式,有的将两者相结合。“大中台,小前台”的机制最初阿里提出的时候,主要应用于O2O线上线下协同、电商等场景,对于电商来说,市场环境是瞬息万变的,而前台是主要的一线业务,这时就需要一个强大的技术中台提供快速设计方法和系统性后端服务,去应对市场变化,灵活快速的做出应对策略。 技术中台从技术角度出发,数据中台从业务数据角度出发,业务中台站在企业全局角度出发,从整体战略、业务支撑、连接用户、业务创新等方面进行统筹规划,由基础中台、技术中台、数据中台L合支撑来建设业务中台。 本套中台案例基于真实工业界业务讲解,将多种经过工业界验证的成熟技术解决方案呈现给大家,本套课程拒绝枯燥的理论,全程代码实操,通过项目驱动的方式,让大家能够真实体验中台工业界开发过程,帮助大家建立中台思维,学习本套课程全部内容你完全可以自主开发一套高性能高可用高扩展的中台系统。本套案例集后端+前台+测试+运维一体,多方位的带你熟悉全过程。本课程将带大家实现一个真实的工业界中台项目,该项目是基于真实的知名互联网企业项目讲解,本课程将分为4个阶段: 第一阶段:会实现中台系统的大部分核心服务,包括:会员中心,商品中心,交易中心,商家中心,支付中心,友凡商城等等。 第二阶段:进一步完善中台系统的核心服务以及优化,包括:营销中心,搜索中心,店铺中心,缓存优化,数据库优化等等。 第三阶段:进一步优化以及完善产品服务,包括:前台系统,中台系统,友凡商城 友凡生鲜,友凡超市等等。 第四阶段:项目收尾阶段以及运维阶段,包括:压力测试,系统维护,系统部署,虚拟化方案,测试方案等等。 本课程包含的技术: IDEA集成开发工具  SpringBoot 2.0.8.RELEASE SpringCloud Finchley.SR2 Thymeleaf(模板引擎技术)  支付宝支付 MyCat、MySQL、Druid  持续集成解决方案(Jenkins) 认证解决方案(JWT) 网关解决方案(Zuul) 负载均衡解决方案(Ribbon) 分布式事务+多线程+事件驱动 MyBatis+Redis+Quartz Ehcache+Hystrix Nginx(Web服务器) Restful AOP技术 性能压力测试Jemter  VUE+jQuery+Ajax+NodeJS VUE+Element-UI 容器部署Docker Kubertenes Lucene、ElasticSearch(搜索) 设计模式、RabbitMQ Swagger2 文档生成工具 人工智能(RNN、LSTM)多语言开发(Python、Django)课程亮点: 1.与企业无缝对接、工业界真实业务场景 2.集后端+前台+测试+运维一体,多面学习技术链 3.多语言协调开发,熟悉语言应用场景4.支持项目快速迭代和开发 5.引入人工智能智能客服系统 6.使用微服务技术栈+前后端分离构建项目 7.引入全新的设计理念 8.全链路性能压力测试 9.分布式事务解决方案 10.事件驱动设计解决方案 11.多线程技术+设计模式的实战应用 12.分布式架构下实现分布式定时调度 13.集成MyBatis实现多数据源路由实战 14.集成SpringCloud实现统一整合方案 15 Kubernetes+Docker容器化部署和管理 16.大型系统分布式部署方案 17.高性能系统(支撑海量数据) 18.高并发下的服务降级、限流实战 19.实现高并发请求和实现高可用架构解决方案 20.全程代码实操,提供全部代码和资料 21.提供答疑和提供企业技术方案咨询企业一线架构师讲授,代码在老师的指导下企业可以复用,提供企业解决方案。  版权归作者所有,盗版将进行法律维权。 
对于大中台来讲,现在并没有十分严格的定义,每个企业对其的理解都是不同的,有的在技术上使用大中台模式,有的在业务上使用大中台模式,有的将两者相结合。“大中台,小前台”的机制最初阿里提出的时候,主要应用于O2O线上线下协同、电商等场景,对于电商来说,市场环境是瞬息万变的,而前台是主要的一线业务,这时就需要一个强大的技术中台提供快速设计方法和系统性后端服务,去应对市场变化,灵活快速的做出应对策略。 技术中台从技术角度出发,数据中台从业务数据角度出发,业务中台站在企业全局角度出发,从整体战略、业务支撑、连接用户、业务创新等方面进行统筹规划,由基础中台、技术中台、数据中台L合支撑来建设业务中台。 本套中台案例基于真实工业界业务讲解,将多种经过工业界验证的成熟技术解决方案呈现给大家,本套课程拒绝枯燥的理论,全程代码实操,通过项目驱动的方式,让大家能够真实体验中台工业界开发过程,帮助大家建立中台思维,学习本套课程全部内容可以帮助提高自主开发一套高性能高可用高扩展的中台系统的能力。本套案例集后端+前台+测试+运维一体,多方位的带你熟悉全过程。本课程将带大家实现一个真实的工业界中台项目,该项目是基于真实的知名互联网企业项目讲解,本课程将分为4个阶段: 第一阶段:会实现中台系统的大部分核心服务,包括:会员中心,商品中心,交易中心,商家中心,支付中心,友凡商城等等。 第二阶段:进一步完善中台系统的核心服务以及优化,包括:营销中心,搜索中心,店铺中心,缓存优化,数据库优化等等。 第三阶段:进一步优化以及完善产品服务,包括:前台系统,中台系统,友凡商城 友凡生鲜,友凡超市等等。 第四阶段:项目收尾阶段以及运维阶段,包括:压力测试,系统维护,系统部署,虚拟化方案,测试方案等等。 本课程包含的技术: IDEA集成开发工具 SpringBoot 2.0.8.RELEASE SpringCloud Finchley.SR2 Thymeleaf(模板引擎技术) 支付宝支付MyCat、MySQL、Druid  持续集成解决方案(Jenkins) 认证解决方案(JWT) 网关解决方案(Zuul) 负载均衡解决方案(Ribbon) 分布式事务+多线程+事件驱动 MyBatis+Redis+Quartz Ehcache+Hystrix Nginx(Web服务器) Restful AOP技术 性能压力测试Jemter VUE+jQuery+Ajax+NodeJS VUE+Element-UI 容器部署Docker Kubertenes Lucene、ElasticSearch(搜索) 设计模式、RabbitMQ Swagger2 文档生成工具 人工智能(RNN、LSTM)多语言开发(Python、Django)课程亮点: 1.与企业无缝对接、工业界真实业务场景 2.集后端+前台+测试+运维一体,多面学习技术链 3.多语言协调开发,熟悉语言应用场景 4.支持项目快速迭代和开发 5.引入人工智能智能客服系统6.使用微服务技术栈+前后端分离构建项目 7.引入全新的设计理念 8.全链路性能压力测试 9.分布式事务解决方案 10.事件驱动设计解决方案 11.多线程技术+设计模式的实战应用 12.分布式架构下实现分布式定时调度 13.集成MyBatis实现多数据源路由实战 14.集成SpringCloud实现统一整合方案 15 Kubernetes+Docker容器化部署和管理 16.大型系统分布式部署方案 17.高性能系统(支撑海量数据) 18.高并发下的服务降级、限流实战 19.实现高并发请求和实现高可用架构解决方案 20.全程代码实操,提供全部代码和资料 21.提供答疑和提供企业技术方案咨询企业一线架构师讲授,代码在老师的指导下企业可以复用,提供企业落地方案。  版权归作者所有,盗版将进行法律维权。 
### 回答1: 基于Vue的电商系统设计与实现是一项极具挑战性和创新性的任务。本设计运用了Vue.js、Element-UI、Axios、MongoDB等技术,为用户提供了一个完整的电商购物平台。本设计主要实现了用户注册登录、商品浏览、购物车、订单结算等功能。 用户可以通过注册登录,享受更完善的购物体验。通过Axios实现了后台数据交互,使得用户所浏览的商品信息、购物车信息以及订单信息等可以实时地被服务器接收并保存。 在商品浏览方面,该系统通过Vue.js的组件化思想设计商品展示界面。用户可以按照自己的需求筛选商品,并查看商品详细信息和评价。同时结合MongoDB数据库,实现了商品搜索、分类以及推荐等功能。 在购物车方面,该系统通过Vuex实现了购物车的状态管理。即便刷新页面,用户的购物车信息也可以得到恢复。此外,本设计还实现了多种优惠券以及满减打折等促销活动,让用户购物更划算。 最后,在订单结算方面,该系统实现了线上支付以及退货功能。通过第三方支付平台,用户可以快速安全地完成支付,同时退货流程也被设计得更加便捷。 本设计中所有的功能均经过反复测试和优化,保证了系统的稳定性和用户体验。短短几个月的时间,我们团队将一个空白的Vue项目转变成了一款功能丰富、用户友好的电商系统,获得了答辩评委的肯定和赞扬,我们也将这项经验用于日后的实践中。 ### 回答2: 基于Vue的电商系统设计与实现是一个涉及到前端、后端及数据库等多个层面的项目,旨在实现一个功能全面、用户体验良好的电子商务平台,以满足现代消费市场对于电商的需求。在该项目中,我们采用了MVVM模式,使用了Vue.js、Node.js、MongoDB等技术,实现了从前端到后端的全流程开发。 前端方面,我们选择了Vue.js作为开发框架,通过利用Vue.js的智能渲染和组件化的架构,打造出了一个可复用的组件库,不仅提升了代码可维护性,同时也使得前端UI更加友好,用户使用体验更佳。 后端方面,采用了Node.js编写后端API接口,实现了用户登录、注册、商品分类、购物车、订单、支付等核心功能,同时也实现了身份验证、错误处理、日志记录等必要功能,保证了系统的安全性、稳定性和可扩展性。 数据库方面,我们选择了MongoDB作为数据库,以NoSQL的方式存储用户信息、商品信息、购物车信息和订单信息等,以便更好地支持电商平台的高并发和高性能。 除此之外,我们还将一些优秀的第三方库融入到我们的项目中,如Ant Design Vue、Mongoose等,进一步增强项目的稳定性和可用性。 最终,在多个迭代版本的开发过程中,我们成功地设计与实现了一个电商系统,其拥有详实的商品信息、完善的购物流程和优良的用户体验,可以为商品销售和用户购物提供高效的支持。 ### 回答3: 这个电商系统设计和实现基于Vue.js。这个系统实现了购物车和订单处理等基本功能。首先,我们采用了Vue.js框架和Webpack打包,以便快速构建可维护和可扩展的应用程序。接下来,我们使用了Vue Router来进行前端路由导航,以及Vuex进行状态管理。这些工具函数可以对Vue应用程序进行改善,使得我们可以更好地组织应用程序的数据和逻辑。同时,我们还采用了Bootstrap4的响应式设计,使得这个应用程序能够适应于各种终端设备。 在这个Vue电商系统中,我们通过后端API来获取商品数据和用户数据。通过axios库调用API,我们可以把获取的原生数据转化为方便Vue应用处理的数据。然后,我们使用Vue.js组件化的开发方式来构建该系统的各个部分,包括顶部导航栏,商品展示页面,购物车页面和订单处理页面等。这些组件具有可重用性,本身可以独立开发和进行单元测试。 最后,在这个电商系统中我们还实现了一些扩展功能,比如用户注册登录和信息管理等等。整个系统设计和实现都是基于Vue.js框架的快速原型开发和迭代的方式,具有良好的交互性和用户体验,为用户提供了一个功能完备,交互良好的的电商购物平台。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值