一、商品管理
一般情况可以分为两级或者三级。咱们的项目一共分为三级,即一级分类、二级分类、三级分类。
比如:家用电器是一级分类,电视是二级分类,那么超薄电视就是三级分类。
数据库结构
平台属性和平台属性值
平台属性和平台属性值主要用于商品的检索,每个分类对应的属性都不同。
而每个商品对应的每种属性都有对应的属性值。
比如:
电脑整机的一级分类下,有笔记本、游戏本、台式机、一体机的二级分类。
笔记本这个二级分类又包含了处理器、屏幕尺寸、内存容量、硬盘容量、显卡类别这些属性。
那么针对联想某个型号的笔记本,它作为笔记本这种分类,每个分类属性都有对应的值,cpu(属性)是i7(属性值)的,内存(属性)是8G(属性值)的,屏幕尺寸(属性)是14寸(属性值)的。
标明 商品属于什么品牌,在搜索的时候可以当做条件
SPU(Standard Product Unit):标准化产品单元。是商品信息聚合的最小单位,是一组可复用、易检索的标准化信息的集合,该集合描述了一个产品的特性。
‘Stock Keeping Unit(库存量单位)。即库存进出计量的基本单元,可以是以件,
SKU是对于大型连锁超市DC(配送中心)物流管理的一个必要的方法。现在已经被引申为产品统一编号的简称,每种产品均对应有唯一的SKU号。
比如,咱们购买一台iPhoneX手机,iPhoneX手机就是一个SPU,但是你购买的时候,不可能是以iPhoneX手机为单位买的,商家也不可能以iPhoneX为单位记录库存。必须要以什么颜色什么版本的iPhoneX为单位。比如,你购买的是一台银色、128G内存的、支持联通网络的iPhoneX ,商家也会以这个单位来记录库存数。那这个更细致的单位就叫库存单元(SKU)。
销售属性 就是商品详情页右边,可以通过销售属性来定位一组spu下的哪款sku。可以让当前的商品详情页,跳转到自己的“兄弟”商品。
一般每种商品的销售属性不会太多,大约1-4种。整个电商的销售属性种类也不会太多,大概10种以内。比如:颜色、尺寸、版本、套装等等。不同销售属性的组合也就构成了一个spu下多个sku的结构。
平台属性 就是之前分类下面,辅助搜索的,类似于条件的属性。
销售属性与平台属性各自独立。一个SPU会决定一个商品都有哪些销售属性,比如iPhonx会有颜色、版本、内存的销售属性,某个T桖衫只有尺寸这个销售属性。
而某个商品有什么平台属性,由他的3级分类决定。比如笔记本包括:运行内存、cpu、显卡、硬盘、屏幕尺寸等等。
同一个SPU下的SKU可以共用一些资源,比如商品图片。毕竟同一种商品,大部分图片都是共用的只有因为颜色尺寸等,很少的差别。那么一般来说商品图片都是在新增SPU时上传的,在新增SKU时从该SPU已上传的图片中选择。
FastDFS 是一个由 C 语言实现的开源轻量级分布式文件系统,作者余庆(happyfish100),支持 Linux、FreeBSD、AID 等 Unix 系统,解决了大数据存储和读写负载均衡等问题,适合存储 4KB~500MB 之间的小文件,如图片网站、短视频网站、文档、app 下载站等,UC、京东、支付宝、迅雷、酷狗等都有使用。
该软件作者是阿里巴巴大牛、chinaUnix版主余庆个人独立开发的。
【答案解析】
(1)开源的分布式文件系统,主要对文件进行存储、同步、上传、下载,有自己的容灾备份、负载均衡、线性扩容机制;
(2)FastDFS架构主要包含Tracker server和Storage server。客户端请求Tracker server进行文件上传、下载的时候,通过Tracker server调度最终由Storage server完成文件上传和下载。
Tracker server:跟踪器或者调度器,主要起负载均衡和调度作用。通过Tracker server在文件上传时可以根据一些策略找到Storage server提供文件上传服务。
Storage server:存储服务器,作用主要是文件存储,完成文件管理的所有功能。客户端上传的文件主要保存在Storage server上,Storage server没有实现自己的文件系统而是利用操作系统的文件系统去管理文件。
【扩展】:存储服务器采用了分组/分卷的组织方式。
整个系统由一个组或者多个组组成;
组与组之间的文件是相互独立的;
所有组的文件容量累加就是整个存储系统的文件容量;
一个组可以由多台存储服务器组成,一个组下的存储服务器中的文件都是相同的,组中的多台存储服务器起到了冗余备份和负载均衡的作用;
在组内增加服务器时,如果需要同步数据,则由系统本身完成,同步完成之后,系统自动将新增的服务器切换到线上提供使用;
当存储空间不足或者耗尽时,可以动态的添加组。只需要增加一台服务器,并为他们配置一个新的组,即扩大了存储系统的容量。
我们在项目中主要使用fastdfs来存储整个电商项目的图片。
【答案解析】
首先基于fastDFS的特点:存储空间可扩展、提供了统一的访问方式、访问效率高、容灾性好 等特点,再结合我们电商项目中图片的容量大、并发大等特点,因此我们选择了FastDFS作为我们的图片服务器;
【扩展】
Nginx也可以作为一台图片服务器来使用,因为nginx可以作为一台http服务器来使用,作为网页静态服务器,通过location标签配置;
反向代理 负载均衡 动静分离
【答案解析】
FastDFS文件上传的流程
客户端上传文件后生成一个file_id,返回给客户端,客户端利用这个file_id结合ip地址,生成一个完成图片的url,保存在数据库中。生成的那个file_id用于以后访问该文件的索引信息。
【参考答案】(仅供参考)
我们这个电商平台是不支持商家入驻功能的,因此整个商品管理主要是我们这个电商后台系统的一个核心功能模块。主要的功能分为:
1、 对于商品品牌、商品分类、销售属性和平台属性进行管理的一些操作;
2、 对商品有对应操作权限的业务员对于商品的添加、上下架、修改、删除、批量操作、模糊查询等功能。
针对商品这个模块来说,因为不同的分类对应不同的平台属性,平台属性和SKU进行关联,用于后期商品搜索功能实现,可以通过平台属性查询出所选属性下的所有SKU信息;
同时,一个分类下又有多个品牌,品牌下对应多个SPU商品,每一个SPU下有多种销售属性,我们通过商品SPU的不同销售属性组合生成多个SKU。例如 iPhone7是一个SPU,由于iPhone7分内存、颜色等销售属性,内存有64G、128G和256G,颜色有红色、金色和黑色,这样每种不同销售属性组合就是一个新的SKU,64G+黑色、64G+金色、64G+红色,128G+金色…….等。(主要就是说表设计和表关系)
1、先判断是否有对应的商品添加的权限,如果没有,直接不显示操作按钮;
2、如果有,先选择商品所属的分类,然后商品分类选择之后会对应的查询出所有平台属性和所关联的所有品牌;
3、然后添加产品SPU的一些基本信息(SPU名称、标题、商城价格等);
4、其次,上传产品SPU对应的图片,这块因为整个电商平台中需要保存大量的图片,因此我们使用了一个分布式文件存储系统FastDFS来存储商品的图片,这样的话后期也可针对容量进行水平扩展,不影响原来的使用,并且针对于高并发、高可用的问题,FastDFS的容灾性、负载均衡也是个优势;
5、在SPU列表中有添加sku的按钮,点击后可以添加给SPU添加SKU。进入SKU添加页面时会查出当前SPU的所有销售属性和图片,然后添加SKU信息,选择对应的销售属性,选择对应的图片。
6、调用后台的商品添加接口/服务,然后对应的接口/服务中生成商品添加时的一些默认数据(添加时间、更新时间、操作人等),在商品添加的时候我们默认是下架状态。需要拥有审核功能的业务员针对商品中是否有一些不合法的数据进行审核。
因为商品添加之后,默认是下架状态,如果商品想处于销售状态,必须将商品的状态改为上架状态。
数据库 is_sale 0 下 1上
上下架的时候 和 搜索服务 对接
商品上架 就可以被搜索到
下架了 就不能被搜索了
分布式事务问题