电商平台业务及架构演变史

不少人认为电商系统很简单,因为现在做电商的太多了,看到的电商产品也多。看来看去产品都差不多,没什么特别。

其实中国电商发展已有20多年历史,电商以销售为核心连接着研、产、供、销、服整套的信息系统体系。其中的设计并没有那么简单。

电商产品架构

电商产品相关基本系统模块,随着业务发展,每个系统单元都不断迭代,成熟过程要花费大量人力物力。

订单业务

电商产品中的活动都围绕着订单进行,用户下单流程可以看出所有系统之间的交互。不同公司的业务、团队这个过程中的工作分配各不相同。这里为大家分享得是通用的订单业务流程。

库存管理

订单中的商品是电商产品中必不可少的元素,补充并维护库存的平衡对于后台电商来说,十分重要。

业务框架及模块关系

系统架构图和2个主流程对电商系统的全链路打下了基础,下面我们了解一下电商系统各模块之间的关系。

  1. 大前台

  • 各销售前端

公司往往有多个销售渠道,线下不同类型的加盟店、直营店,线上也有不同模式,渠道用于让用户接触到商品。

例如淘宝系统下有天猫超市、普通商家端、淘宝直播、天猫APP等等。

  • CMS

除了商品页面,网站、APP还有“店铺的首页、维修退换政策、活动等”其它内容页面,这需要用内容管理系统进行管理,

例如QQ空间装修就可以理解为cms系统。

  • 交易中心

交易中心是技术的中间件,所有和销售前端交互的系统都要通过交易中心完成,还要承担一些用户交易流程当中的逻辑。

举如下单前要先调用库存服务,查询库存,用户加入购物车后,调用营销中台计算购物车内商品活动后的总价等。

  1. 大中台

  • 商品中心

商品中心就是一个商品的数据库,所有业务系统都用。

主要包含三层关系:

1类目:产品的类目分前台类目和后台类目,在不同渠道支持自定义。

2 spu和sku的关联

3属性:属性可以绑定在类目下,也可以绑定在spu下或者sku下,子继承父的商品属性,

  • 营销中台

营销中台主要包含两大块:

1活动

2优惠券码:针对不同用户、产品、渠道进行优惠活动设置

用户看到优惠活动一般在购物车中呈现,优惠券码一般在结算时扣除相应的金额。

  • 库存服务

库存一般分为三级:

渠道当前可售库存

产品可售库存

仓库实际库存

解决的核心问题是用户从下单开始到最终扣除仓库库存,在不同环节应该如何去扣减,达到最高的库存使用效率。

  • WPS

WPS解决的核心问题是商品应该如何调度。

订单接收之后,应该由哪个仓库来进行满足,用户在商城界面看到是否有货,应该如何判断。

  • Express

Express解决的问题是当商品的发货任务已经分到了具体的仓库,应该用哪一家快递才能兼顾成本和速度。

不同地区的仓库,快递公司的服务响应、成本是不一样的。

核心逻辑是对于不同的仓库,在路线的配置上选取不同的快递公司。

  • 会员中心

会员中心是对不同渠道提取出共性的用户设计升级规则,或者是付费型会员。

  • 发票中心

业务发展到全球化才会诞生发票中心。因为不同的国家才会对于开票的规范有不同的要求。

核心流程一个是开票,另一个是冲红。不同的业务下,对于开票和冲红的时间点会不同,这一般由订单中心进行定义。

  • 客服服务

客服系统的搭建分为三大块:

1线聊天客服:用户发起的聊天分配给系统后台的人工坐席。

2智能知识库:将用户所有的常见问题汇总到知识库,给用户自动推荐,减少人工客服的压力。

3客服系统操作台:客服可以帮助用户人工的干扰一些订单的进程,如修改价格建立退换单等等。

  • 秒杀

秒杀已经成为各个中大型电商的基本服务,核心逻辑是在于多极缓存,逐级筛选用户。

  • 风控

风控应用场景很多。

例如下单场景:判断出一个高风险的订单,订单将会被系统拒绝,会从两个方面去判断,一个用户历史行为,一个用户当前的下单风险。

  • 结算

包含三个步骤

  • 对账

  • 清分

  • 结算

将从第三方支付获取的货款进行自动结算,告知财务一个结果,从而打到供应商的账户当中,一般会和集团的OA审批流进行结合。

  • 数据中心

所有系统数据会共享给数据中心然后基于数据去进行各种场景的应用。

最常见的是用户画像平台,通过用户画像筛选出用户的偏好进行精准营销。

  • 订单中心

所有渠道的订单都汇聚到订单中心进行统一处理。

如天猫店,淘宝店,抖音店,快手店、自营电商平台,用户提交的订单都会汇聚到订单中心,进行下一步的流转和操作。

财务结算也以订单中心订单状态为标准,保障所有系统上下游数据保证通用数据源。

  1. 大后台

  • WMS

和仓库相关的业务流程都在wms管理,包含业务流程有:

  • 出库

  • 入库

  • 上架

出库类型有很多种,如电商订单是购买出库,仓库接收到出货单后打印分拣单,仓库员工根据分拣单对于货物进行拣货、打包操作,最后将打包完毕的商品放在出库区等待承运商拉走。

  • XMS

XMS 是售后管理系统,售后类型有三种退换修,退换修需要不同的备件库,更换零件或直接更换整机。

退货需要在XMS中判定用户发回货是否满足退货条件, XMS要告诉订单中心再触发支付和结算业务的退款流程。

  • 用户中心

用户中心是存储用户基础数据的地方,承担用户注册登录找回密码,更换手机号的流程。

不同国家支持不同类型的注册方式,如手机号注册、邮箱注册、谷歌账户注册。

技术方案也支持不同类型的前端产品,如Web、Webview、APP等。

不同风险等级的业务,要支持不同类型的注册方式,如电商业务只需要手机号注册,金融信贷业务还需要支持人脸识别、身份证认证。

  • SRM

SRM是供应商管理系统,核心逻辑是对于不同的供应商进行打分和评判,筛选初优质的供应商。

对询价、采购、物流、财务等供应流程进行数据化管理。

网站架构技术的演进

  1. 网站初级架构

一般产品刚开始的做法是三台服务器,一台部署应用,一台部署数据库,一台部署NFS文件系统。

业务增长后,会加应用负载均衡,数据库采用主从复制,读写分离,应对慢慢增长的业务:

  1. 业务拆分

随着业务进一步增长,架构也会根据业务属性进一步拆分,划分为:

  • 产品子系统

  • 购物子系统

  • 支付子系统

  • 客服系统

  • 商品系统

  • 登录系统等等

业务子系统分为核心系统和非核心系统。

  • 核心系统:产品子系统,购物子系统,支付子系统;

  • 非核心:评论子系统,客服子系统,接口子系统。

每个子系统单独部署,避免集中部署导致一个应用挂了,全部应用不可用的问题。

等级用于流量突发时,对关键应用进行保护,实现优雅降级;保护关键应用不受到影响。

  1. 数据库分库,分表

在业务拆分的基础上,结合分库分表和读写分离

  1. 分布式缓存

提高用户体验,加快用户快速访问网站,把热点数据进行缓存

  1. 服务化

最后把各个子系统进一步抽象细化,作为一种服务来提供给其他人使用

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/563803.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Mongodb支持事务吗?

一、概念 1.1、MongoDB事务简介 MongoDB 是一个非关系型数据库管理系统,最初并不支持事务。然而,随着时间的推移,MongoDB 在其4.0版本中引入了多文档事务支持,使得在单个集合中执行多个操作成为可能。 In MongoDB, an operation…

【MySQL探索之旅】多表查询

📚博客主页:爱敲代码的小杨. ✨专栏:《Java SE语法》 | 《数据结构与算法》 | 《C生万物》 |《MySQL探索之旅》 |《Web世界探险家》 ❤️感谢大家点赞👍🏻收藏⭐评论✍🏻,您的三连就是我持续更…

CCF PTA 2023年5月C++富有的大壮

【问题描述】 给在一个神秘的国度,有一种多拿多得的疯狂游戏,某日大壮去参赛,在规定区域内里面有 N(N≤100) 堆金币,第i堆金币的总重量和总价值分别是mi,vi(1≤ mi,vi≤100)。大壮有一个承重量为T(T≤1000) 的背包,但…

Mac下XDebug安装

文章目录 1、下载对应的版本2、编译XDebug3、配置XDebug4、配置PhpStormDebug一下 前置工作 Mac下安装HomebrewMac下brew安装php7.4 1、下载对应的版本 首先按照支持的版本和兼容性来下载对应的版本,此表列出了仍支持哪些 Xdebug 版本,以及哪些版本可用…

vue框架中的组件通信

vue框架中的组件通信 一.组件通信关系二.父子通信1.props 校验2.prop & data、单向数据流 二.非父子通信-event bus 事件总线三.非父子通信 (拓展) - provide & inject四.v-model简化父子通信代码五. .sync修饰符 一.组件通信关系 组件关系分类: 1.父子关系…

2024接口自动化测试高频面试题【建议收藏】

一、json和字典的区别? json就是一个文本、字符串;有固定的格式,格式长的像python字典和列表的组合;以key-value的键值对形式来保存数据,结构清晰,。可以说是目前互联网项目开发中最常用的一种数据交互格式…

文件I/O基础-I.MX6U嵌入式Linux C应用编程学习笔记基于正点原子阿尔法开发板

本章将介绍Linux应用编程中最基础的知识,即文件I/O(Input/Output)。文件I/O指的是对文件进行读写操作,在Linux系统中一切皆文件,这是Linux系统设计的核心理念,因此文件I/O操作既是基础又是最重要的部分。本…

【webrtc】m114自己实现的PrioritizedPacketQueue及优先级处理

G:\CDN\WEBRTC-DEV\libwebrtc_build\src\modules\pacing\prioritized_packet_queue.h跟m98不同 :webrtc】m98 RoundRobinPacketQueue的优先级处理,m114直接使用taskqueue顺序处理了。甚至自己实现了优先级队列感觉简化了实现,更为清晰 易读,但是去掉了码率低就优先的逻辑。1…

浮杯式轴向柱塞泵(浮杯泵)应用前景较好 但目前产业化规模小

浮杯式轴向柱塞泵(浮杯泵)应用前景较好 但目前产业化规模小 浮杯式轴向柱塞泵简称浮杯泵,是利用缸体与柱塞间的相对运动改变腔体容积完成吸排油的一类柱塞泵。浮杯泵是基于浮杯原理开发出来的,浮杯原理是继斜盘式和斜轴式之后一种…

Java反序列化-CC4-2-5-7链分析

环境搭建 在之前环境原有代码的基础上&#xff0c;添加这一段代码 <dependency><groupId>org.apache.commons</groupId><artifactId>commons-collections4</artifactId><version>4.0</version></dependency>CC4链分析 CC4可…

C语言 | Leetcode C语言题解之第44题通配符匹配

题目&#xff1a; 题解&#xff1a; bool allStars(char* str, int left, int right) {for (int i left; i < right; i) {if (str[i] ! *) {return false;}}return true; } bool charMatch(char u, char v) { return u v || v ?; };bool isMatch(char* s, char* p) {in…

【探索Linux】P.32(自定义协议)

阅读导航 引言一、自定义协议概念二、自定义协议需要注意的事项三、自定义协议示例(跨网络计算器协议)✅协议代码&#xff08;Protocol.hpp&#xff09;1. 计算器协议简单介绍2. 序列化部分3. 反序列化部分4. 请求和响应数据结构5. 使用自定义协议 四、总结温馨提示 引言 在上…

iOS - 多线程-GCD

文章目录 iOS - 多线程-GCD1. 常见多线程方案2. GCD2.1 GCD的常见函数GCD中有2个用来执行任务的函数 2.2 GCD的队列2.2.1 GCD的队列可以分为2大类型 2.3 容易混淆的术语2.4.1 有4个术语比较容易混淆&#xff1a;同步、异步、并发、串行 2.4 各种队列的执行效果 3. 死锁3.1 死锁…

了解BACnet的对象模型 (三)

文章目录 前言18个对象BACnet 对象的属性设备对象&#xff08;Device&#xff09;的属性输入输出值对象类型及其属性 在代码中的表达Device对象的属性模拟输入对象的属性 小结 前言 在楼宇自控网络中&#xff0c;各种设备之间要进行数据交换&#xff0c;为了能够实现设备的互操…

【数字电路与系统】【北京航空航天大学】实验:时序逻辑设计——三色灯开关(四)、设计实现

本次实验&#xff08;一&#xff09;见博客&#xff1a;【数字电路与系统】【北京航空航天大学】实验&#xff1a;时序逻辑设计——三色灯开关&#xff08;一&#xff09;、实验指导书 本次实验&#xff08;二&#xff09;见博客&#xff1a;【数字电路与系统】【北京航空航天…

【Yolov系列】Yolov5学习(一)补充1.1:自适应锚框计算

1、Yolov5的网络结构 Yolov5中使用的Coco数据集输入图片的尺寸为640*640&#xff0c;但是训练过程的输入尺寸并不唯一&#xff0c;Yolov5可以采用Mosaic增强技术把4张图片的部分组成了一张尺寸一定的输入图片。如果需要使用预训练权重&#xff0c;最好将输入图片尺寸调整到与作…

表达式求值(后缀表达式)(数据结构)

一、概念 算术表达式是由操作数&#xff08;运算数&#xff09;、运算符&#xff08;操作符&#xff09;、和界线符&#xff08;括号&#xff09;三部分组成&#xff0c;在计算机中进行算术表达式的计算是通过堆栈来实现的。 二后缀表达式的逻辑和实现方式&#xff08;逆波兰…

CST电磁仿真软件波导端口和离散端口的设置流程【教程解读】

置波导端口 通过波导端口馈电! Simulation > Sources and Loads > Waveguide Port 假设Waveguide Port是无限长的波导上给定的Mode&#xff0c;用来激励电磁场。相比离散端口(Discrete Port)&#xff0c;波导端口可以提供很好的模式匹配&#xff0c;因此能提供更高的精…

Android Material Design学习笔记

Material Design控件学习记录 Toolbar 新建一个工程后&#xff0c;在res/values/themes.xml文件里 <resources xmlns:tools"http://schemas.android.com/tools"><!-- Base application theme. --><style name"Theme.MaterialTest" paren…

Python的round与Excel的round不一样?

Python四舍五入怎么做 round()奇进偶舍round函数既不是“四舍五入”的原则&#xff0c;也不是“四舍六入无成双”的原则。 decimal round() 偶然发现python的round函数和excel的round函数对某些数据的处理结果不一致。有看到博主提到是奇进偶舍的方法&#xff0c;但经过验证和…