前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >高性能电子商务平台构建(一)

高性能电子商务平台构建(一)

作者头像
硬核项目经理
发布2019-08-06 14:52:37
1.5K0
发布2019-08-06 14:52:37
举报

一、电商平台标准化套件

A.商城系统

1.设置:站点设置;帐号同步;上传设置;SEO设置;消息通知;支付方式;权限设置;配送地区;

2.商品:分类管理;品牌管理;商品管理;图片空间;

3.店铺:店铺管理;店铺等级;店铺分类;二级域名;

4.会员:会员管理;积分管理;预存款;分享绑定设置;买家动态;

5.交易:订单管理;退款管理;咨询管理;举报管理;评价管理;投拆管理;

6.网站:文章分类;文章管理;系统文章;页面导航;广告管理;首页管理;推荐位;

7.运营:基本设置;团购管理;兑换礼品;活动管理;

8.统计:会员统计;店铺统计;销量分析;商品分析;营销分析;

B.圈子(BBS)

圈子设置;成员头衔设置;圈子分类管理;圈子管理;圈子话题管理;圈子成员管理;圈子举报管理;

C.CMS(文章管理系统)

CMS管理;首页管理;文章管理;文章分类;画报分类;专题管理;标签管理;评论管理;

D.移动端

首页设置;分类图片设置;下载设置;

二、电商平台的技术架构

A.应用服务器

1.两大类:前端服务器(主要完成用户的响应)、后端服务器(主要完成数据处理)

2.Nginx在内存分配方面表现良好,使用多线程来处理请求,使得多个线程之间可以共享内存资源,从而使内存使用量大大减少。此外还使用分段内存分配策略,按需分配及时释放,总体占用内存很小,可支持较大的并发连接。

B.负载均衡

1.F5(F5 BIG-IP),官方名称为本地流量管理器,可做4-7层负载均衡。

2.LVS(Linux Virtual Server),针对大业务量的网络应用(如新闻服务、网上银行、电子商务等)。抗负载能力最强,配置简单,工作稳定(LVS+Keepalived),应用范围比较广。

⑴LVS三种工作模式:

①VS/NAT(Virtual Server Via NAT),网络地址转换技术,由一台负载均衡服务器和后端几台真实服务器组成了一个服务器集群。优点:只需要一个IP地址配置在调度服务器上,服务器组可以用私有的IP地址。缺点:伸缩能力有限。

②VS/TUN(Virtual Server via IP Tunneling),连接调度和管理与VS/NAT中的一样,只是报文转发方法不同。优点:可以极大地增加负载调度的服务器数量,可以用来构建高性能的超级服务器。要求所有的服务器必须支持“IP Tunneling”或“IP Encapsulation”协议。

③VS/DR(Virtual Server via Direct Routing),调度器根据各个服务器的负载情况,动态地选择一台服务器,不修改也不封装IP报文,而是将数据帧的MAC地址改为选出服务器的MAC地址,再将修改后的数据帧向服务器组的局域网上发送。要求负载调度器与实际服务器都有一块网卡连在同一物理网段上,服务器网络设备不作ARP响应,或者能将报文重定向到本地的Socket端口上。

⑵LVS的调度算法

轮询调度;加权轮询调度;最小连接调度;基于局部性的最小连接;待复制的基于局部性的最小连接;目标地址散列调度;源地址散列调度;

3.Nginx:可以按轮询、IP_HASH、URL_HASH、权重等多种方法对后端服务器进行调度,同时也支持健康检查。对网络依赖性小,工作在第7层。

4.HAProxy:能够补充Nginx的一些缺点,如Session保持,Cookie引导等;支持URL检测;从效率上讲,优于Nginx;可以对MySQL读操作进行负载均衡;

C.缓存

1.两部分:文件缓存(静态内容)、数据缓存

2.客户端缓存:Header(“Cache-control:must-revalidate”);Header(“Expires:”.gmdate(“Did M Y H:i:s”,time()+(60*60*24*30)));//30天过期php

3.CDN加速

4.静态文件缓存:Varnish/Squid

5.数据缓存:memcache、redis

D.数据存储

1.关系型数据库:MySQL、Oracle、SQL Server

2.内存型数据库:Redis、MongoDB(文档型)

3.分布式数据库:HBase

4.MySQL可扩展方案:MySQL Cluster;DRBD硬盘网络镜像;MySQL Repliction(推荐);MySQL数据切分;

5.数据切分:通过某种特定算法,将存放在同一个库(表)中的数据分散存放到多个库(表)中,以达到分散单台设备负载的效果。

6.垂直切分:按照不同的表来切分到不同的数据库(主机)之上。规则简单,实施方便,适合各业务之间的耦合度非常低,相互影响小,业务逻辑清晰的系统。

7.水平切分:根据表中数据的逻辑关系将同一个表中的数据按照某种算法拆分到多个表中。拆分规则本身就较根据表名来拆分更为复杂,后期数据维护也更复杂,但对于减轻系统压力来说更好,是在高并发大数据下的推荐处理方法。

E.文件存储

共享存储:NFS

文件存储:HDFS、FastDFS

F.消息队列

ActiveMQ;Gearman;MemcacheQ;RabbitMQ;HTTPSQS;淘宝MetaQ;NSQ等,另外基于Memcache/Redis的消息队列也易部署、易维护和易扩展。

G.搜索设计

lucene、sphinx以及国产xunsearch

三、商城套件的设计与实现

A.会员模块

1.模块构成:注册后默认为买家。如果想申请为卖家,则需要在注册后提交商家入驻申请,经过审核后成为卖家。买家卖家登录口独立存在。作为网站的基础,基本涉及了网站各个模块。

2.设计思路:

①设计要求:

  • 界面简洁方便:注册登录简洁方便,一个手机号或邮箱+密码
  • 多收集会员信息:会员中心收集
  • 差异化管理:会员等级制度和管理制度
  • 增加会员黏性
  • 会员传帮带
  • 高内聚低耦合:买家和卖家中心分为独立模块
  • 进行数据分析

②数据表设计

  • 主从配合:主表与从表
  • 合理使用冗余:例如店铺表中也保存用户名
  • 结构清晰:例如用户表与商家表分开

③模块设计

  • 买家会员功能需求:注册登录;买家会员等级;资料管理;帐号安全;其他相关功能
  • 专家帐户功能需求:商家开店;权限管理;建立子帐户;店铺资料管理;店铺装修;店铺分类;店铺消费;其他相关功能

3.开发和使用

会员合理分层;运用口碑营销;了解会员的生命周期;会员关怀;合理全面的会员数据分析;

B.商品模块

1.几个小模块:商品分类;品牌;类型;规格与规格值;属性与属性值;商品;

2.模块构成:

①商品分类:新增、编辑、删除、导入导出,很少修改,缓存文件

②品牌:新增(平台添加及商家添加,商家添加需要审核)、编辑、删除

③规格与规格值:平台进行增删改,店铺只能根据规格添加规格值

④类型与属性:平台进行操作

⑤商品:由店铺进行增删改。平台可审核,可以删除。

3.设计思路:

①商品相关数据表设计

  • 商品分类表与类型表是一对多的关系,商品分类通过类型与属性、规格、品牌产生关联。与商品表是一对多
  • 属性系列表包括属性表和属性值表,是一对多的关系,属性表与类型表是多对一的关系,属性值表与商品表以及属性与商品关系表为桥梁是多对多的关系
  • 规格系列表包括规格表和规格值表,是一对多的关系。规格表与类型表以类型与规格关系表为桥梁是多对多。规格表、规格值表与商品表的关系是多对多的关系。
  • 品牌表以类型与品牌关系表为桥梁,与类型表是多对多。品牌表与商品表是一对多。
  • 商品系列表包括商品表、商品公共表和商品图片表。商品表和商品公共表是多对一,和商品图片表是多对多

②平台管理商品的相关设计思路

平台管理员需要先完成对商品分类、品牌、类型、规格、属性的设置

③商家发布商品的设计思路

设置规格值;商品图片;图片空间;库存报警;关联板式;

④用户检索商品的设计思路

使用全文检索

3.代码实现

删除商品分类时需要清理与商品分类相互关联的数据;

C.促销模块

1.模块构成:

①常用促销方式:

  • 折价促销
  • 团购:促进电商网站的销量,直接带去电商网站的注册会员数增长,通过促进客户的尝试购买,发现平台存在的问题,扩大电商网站的品牌曝光度和知名度;
  • 惠赠式促销:买一送一、买送礼品、买送积分、买送代金券;
  • 搭配销售:客户在浏览一件商品时再向他推荐其他商品,这件商品可以与其他商品搭配起来一起销售,同时总价进行相应幅度的降低。
  • 限时限量促销
  • 抽奖式促销
  • 互动式促销:好评有礼、邀请有礼
  • 附加值促销:包邮、附加服务

2.设计思路

①业务的设计原则

  • 吸引注意力
  • 说服功能
  • 反馈信息
  • 刺激销售

②模块设计实例(团购模块)

  • 套餐管理:平台提供给店铺
  • 团购管理:平台进行审核,并且可以随时下架
  • “即将开始”:在团购中加入
  • 搜索设置:商品分类、价格区间等
  • 详细信息:图片、价格、描述醒目,清晰可见的状态
  • 团购订单:统一到订单模块中

3.开发和使用

开发原则:简单易懂、吸引眼球、灵活组合、数据统计

注意:利人利已、搭配使用、不繁琐、吸引力足够、实事求是、一诺千金

D.购物车模块

1.模块构成:添加、删除、编辑、收藏商品的功能

2.设计思路

①设计要求:

  • 持久化保存:登录前cookie保存,登录后数据库保存,下单成功后清除已购买的商品
  • 支持加入多种类型的商品
  • 支持加入多个店铺商品
  • 操作便捷
  • 数据完整性:促销信息、商品小计、店铺小计等
  • 数据准确性:关键信息(库存、价格、状态等)

②数据表设计

  • 表关系核心字段不可缺少:涉及会员、店铺、商品表等
  • 必要的冗余字段 :商品价格、名称、图片、店铺名等
  • 数据准确性:关键节点处理时去查询数据库得到最新有效数据

③购物车模型设计

  • 增删改查操作
  • 入口封装:对cookie或数据库等操作对外表现为一个入口,以参数形式分流
  • 数据统计
  • 数据完整性与准确性

E.配送模块

1.模块构成:平台需要初始化一些基本信息,如全国或地方性的地区行政区域、主要的快递公司等;商家 需要设置快递公司,;运费模板不但支持不同地区不同运费,还避免了商家对商品运费的重复设置,减轻工作量;买家下单时,要设置收货信息,系统据此来计算运费。

2.设计思路

①设计要求

  • 内置行政区域
  • 内置配送公司
  • 设置货到付款地区
  • 运费模板
  • 收货地址
  • 物流跟踪

②数据表设计:收货地址表、发货地址库表、货到付款区域表、运费模板表等

3.功能实现

①配送区域:一是标准的行政区域设置;另一个是货到付款区域的设置;配送地区页面的加载时的全部地区数据都由服务器端来完成,在加载页面时,将已支持货到付款县ID放入JS数组中,在编辑地区时,上级地区是否选中以及数量的变化由客户端JS来完成

②配送公司:至少包含公司名称、网址、公司代码等

③收货地址:可以保存N个,设置一个默认收货地址

F.订单模块

1.设计思路

①订单状态

  • 订单状态是订单流程的重要标志,订单处于哪个阶段,允许哪个角色来处理,主要的判断依据
  • 一般使用数字标识,至少包含默认、取消、支付、发货、收货,还可能有删除、审核、备货、出货、锁定、退货、退款、仲裁等等

②订单金额

指订单中涉及金钱元素的统称,至少包括商品单价、商品总价、订单总金额、优惠金额、运费、代金券面额、退款金额等

③订单编号

建义可以充分考虑时间、随机数、商家ID、会员ID、自增ID这些相关元素,设计的目的就是保证在高并发下,订单编号 的重复几率降到最低

④库存

  • 可销售库存
  • 订单占用库存
  • 不可销售库存
  • 锁定库存:在促销活动中
  • 虚拟库存

⑤合并支付

可以把不同商家订单进行合并统一支付

⑥角色权限

  • 买家:订单取消、删除(放入回收站)、退款、退货、收货、评价等
  • 商家:订单审核、关闭、发货、售后处理等
  • 平台:订单取消、更改收款状态、删除、仲裁等

⑦表设计

  • 订单主表:存放主要及常用的订单信息,如订单编号、金额、运费、状态等
  • 辅表:辅助信息,如发货信息、发票信息、收货人信息、促销信息等。
  • 订单商品表:有些话订单中的商品列表信息
  • 支付单表:为合并付款设计,保存一个支付单号,N条订单表记录使用一个支付单号
  • 订单日志表:在订单内容发生变化时记录操作日志,包括操作人、操作时间、操作内容等

2.下单

系统在产生订单时会做大量的处理工作,比如处理收货信息、发票信息、促销信息、运费、代金券、支付单、订单、日志等。

G.支付接口

1.接入支付结果两种方式:一种是同步的,通过浏览器进行跳转通知;一种是异步的,即服务器后端执行。

2.设计要求:安全性;数据完事性(事务处理);扩展性;

3.数据库设计:至少包含支付方式的名称和标识码,标识码要与支付接口API程序有些话的目录名一致,此外还要保存序列化后的支付接口配置信息及支付接口状态;

H.退单模块

1.设计思路

①在有新退款或退货申请但又没完成订单(确认收货时),为防止产生纠纷,要锁定订单状态

②退货:在退款流程基础上增加了买家发货和商家收货的步骤。

③当商家不同意退款或退货时,买家可再次申请,也可以向平台投诉商家 ,提交相关证据,由系统管理员做仲裁。

④可以使用一个表,用一个字段标识是退款还是退货

⑤退款退货原因是由系统管理员在后台录入,买家在提交申请时选择。

2.开发技巧

①要先定好规则、理清思路,对于逻辑中有不明白的地方,及时沟通解决。

②尽量做到代码的利用,一定要进行服务器端的数据验证。

I.结算模块

结算是平台和商家之间的账单结算,定期结算,出账后系统会等待商家对账单进行确认,如果无误,商家确认后进入系统审核环节,系统审核后提交到财务部门进行付款操作;付款完成后,在后台录入付款相关信息,账单结算完成。

1.设计思路

①数据表设计:账单表,包括日期、订单总金额、总运费、退单总金额、佣金总金额、退还佣金金额、店铺费用、应结金额以及结算状态等字段;账单汇总表是对每个月所有商家结算信息的统计汇总;

②结算流程设计:出账,系统自动计算出本月的结算账目

【执行时机】自动与手动;

【结算对象】上个月发生的交易完成的订单或退单;

【计算公式】订单金额、佣金金额(佣金=商品实际售价*购买数量-优惠分摊金额)、退单金额、退还佣金、店铺促销费用;

③平台应付金额=订单金额-佣金金额-退单金额+退还佣金-店铺促销费用;

④对账:平台提供出信息,核对无误后确认并提交平台审核。审核后进行财务流程进行支付,付款完成后输入相关付款信息并提交,结算流程完成。

J.统计模块

1.让数据分析介入运营:以数据为基础,智能地制定运营决策;以数据为目标,有效执行运营计划;以数据为依据,优化商务过程;

2.模块构成:

①浏览量(PV),浏览器加载网页次数的总和;

②访客数(UV),用Cookie确定绝对统一访问者;

③转化率,指产生实际消费的客户和来到网站的总客户数量的比值。成交转化率=成交客户数/总访客数;

④平均访问深度,指用户在一次浏览你的网站的过程中浏览了你网站的页数,就是PV和UV的比值;

如何提高访问深度?

  • 网站合理的排版和布局;
  • 网站的内容;
  • 合理的导航和适当的内部链接锚文本;

⑤网站人均停留时间,平均网站停留时间=网站总停留时间/会话的数量(访次)

⑥页面跳失率,指访客到达该目标页面,到达后没有继续访问该网站其他页面既离开,称之为一次Bounce!也就是跳失了。跳失率=浏览了该页面就离开的访问次数/该页面的全部访问次数;

⑦下单商品数

⑧商品下单量

⑨客单价,指一定时间内网站每一个会员平均购买商品的金额,即平均交易金额。客单价=销售总额/顾客总数,或者客单价=销售总金额/成交总笔数;

⑩重复购买率,指消费者对该产品或者服务的重复购买次数。一是,所有购买过产品的顾客,以每个人为独立单位重复购买产品的次数;另一种算法是单位时间内,重复购买的总次数占比;推荐第一种;

3.设计思路

①数据本身的设计原则

  • 要有总体的概念:销售总体信息(下单金额、下单量、平均客单价);商品总体信息(下单商品数、商品平均价格、新增商品数、商品总数量、7日内商品销售TOP30);客户总体信息(会员总数、新增会员数、下单会员数);店铺总体信息(店铺总数、新增店铺总数、7日内店铺销售TOP30)
  • 统计要细致到一点:细致到某个会员、某个时间点、某个地区等
  • 定期数据分析:同比,今年第N月与去年第N月比(同比发展速度=本期数/去年同期数*100%;同比增长速度=(本期数-去年同期数)/去年同期数*100%);环比,就是报告期与前一统计时间段比较(环比发展速度=(本期数/上期数)*100%;环比增长率=(本期数-上期数)/上期数*100%)
  • 重视日常运营数据 :客户平均访问页面数、平均停留时间、跳出率、商品被收藏次数等
  • 数据应具有实时性

②业务层次的设计原则

  • 层层深入剖析业务:电商网站数据分析按照行业分析->店铺分析->品牌分析->商品、会员的分析,从大到小层层深入
  • 直观易懂:表示变化趋势用折线图;简单比较用柱状图;用漏斗图展示流程转化率;表示比例最好用饼图或者环形图;表示在区域中的分布情况使用统计地图;

③模块设计的设计原则:可移植性;扩展性;简便性和直观性;缓存的运用;

④数据表的设计原则

⑤多建立缓存数据表;字段简洁,减少复杂判断;必要的冗余字段,减少联查(会员名称、商品名称、店铺名称等等);

4.开发使用

①数据运营应注意以下几点问题:

②人的问题:对数据的重视应该从领导做起;

③实际运用:将数据实际使用起来;

④不要最好只求合适:选择一个数据挖掘算法时,要弄清楚它是否适合我们要解决的问题;

⑤求真实:挖掘时尽可能提取有效信息;

⑥重复性:需要一段时间重新挖掘;

⑦数据积累:数据分析需要积累一定量的数据,经过数据挖掘得出的结果才有说服力;

⑧快速反应:数据产生后快速瓜,得出结果,使效果最大化;

K.预存款

1.会员对预存款主要有三种操作:充值、提现和购物

2.设计思路

①设计要求:安全性;数据完整性;

②数据表设计:

  • 充值表,记录会员的充值信息,主要字段充值单呈、会员信息、充值金额、充值时间、充值状态等,有管理员操作还应记录管理员身份
  • 提现表,记录会员的提现信息,主要字段提现单号、会员信息、提现金额、收款银行信息、申请状态以及平台的付款信息(付款时间、操作人等)
  • 日志表,记录所有变更预存款时的操作记录,包括对可以金额和冻结金额的变更 都要作详细的记录,主要字段操作人信息、操作类型(下单、提现、充值、退款等)、可用预存款、冻结预存款、操作时间、备注等
本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-01-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 码农老张 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
云数据库 MySQL
腾讯云数据库 MySQL(TencentDB for MySQL)为用户提供安全可靠,性能卓越、易于维护的企业级云数据库服务。其具备6大企业级特性,包括企业级定制内核、企业级高可用、企业级高可靠、企业级安全、企业级扩展以及企业级智能运维。通过使用腾讯云数据库 MySQL,可实现分钟级别的数据库部署、弹性扩展以及全自动化的运维管理,不仅经济实惠,而且稳定可靠,易于运维。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档