商城系统产品架构规划指南
一.介绍
现在的信息时代,交易都在互联网化, 电子商务场景需要一套稳定灵活的系统支撑,那一套稳定灵活的电子商务系统应至少具备如下这些基础能力
多终端支撑能力
统一支付能力
统一订单能力
统一商品管理能力
统一多渠道管理能力
快速营销落地能力
统一信息分析能力
系统功能扩展能力
Mob-ShopSDK依托于此,为用户提供APP+WEB后台管理一站式的电子商务系统解决方案,提供“开箱即用”的强大功能,帮助开发者减少大量的开发工作,为用户提供优质的互联网产品和服务。
二.ShopSDK 应用架构
架构图分为五个部分:接口模块、基础支撑模块、数据模块、第三方支持模块,监控模块。
核心-基础支撑模块,是按照商品的业务流转进行划分,构建不同的组件服务,相互间不同规则的串联运行支撑电商服务的运转.
核心-组件服务:
(1)商品中心:主要管理SKU( 最小库存单位)、SPU(标准化产品单元)、属性(关键属性、非关键属性、销售属性)、类目品牌、价格等有关商品的数据。
(2)订单中心:管理订单类型、订单状态,收集关于商品、优惠、用户、收货信息、支付信息等一系列的订单实时数据,进行库存更新、订单下发等一系列动作。
(3)支付中心:已集成Mob-PaySDK服务,记录支付信息(对应订单号、支付金额等),支付对账,用户无需因支付功能进行二次开发.同时已开放接口。用户可以根据自己的需求, 选择适合自己的支付方式.
(4)促销中心:主要管理活动相关,优惠券、满减、专场活动、促销等。促销工具的开发对电商尤其重要。ShopSDK通过商品-标签,优惠券-标签关系设定,根据标签实现针对于商品级别组合优惠活动.
(5)评价中心:管理商品评价和用户反馈,进行回复内容管理,实现针对于敏感内容的过滤。
(6)运营中心:提供订单、销量相关日,周,月不同时间维度报表统计以及下载,方便用户了解运营情况,及时调整运营策略.后期会提供更细粒度,更多维度的运营数据统计,更好的协助用户.
以下为Mob-ShopSDK主业务流程图:
三.模块设计
以商品模块为例:
模块介绍:
商品模块是一个展示商品基本信息、库存等详情的系统,是商品购买的入口,也是电商系统的入口。在访问量上它是电商平台中访问量最大的系统之一,在业务上它与周边系统的关系是高耦合,这就对系统设计提出更多的要求。
业务特点:
重点在于数据展示页面信息丰富,如:商品详情、商家列表等.
部分数据时效要求高,如:价格、库存等
访问频率高.
设计:
商品模块在设计上分成SDK-INNER二层结构:
SDK端:负责业务逻辑处理,提供数据给前台,同时还会对外部系统提供服务,针对于访问频率高的查询接口,基于elasticsearch进行查询操作,降低DB压力,通过队列事务机制实现不同数据源之间的数据同步。
INNER端:负责主数据管理,做为数据管理层处理商品主数据、参数、品牌、供应商等,同时部分内容开放给运营进行维护、管理和异常处理等。(这次篇幅有限,简单介绍下SHOP-SDK商品模块的设计,后期会陆续分享shop-sdk其他模块的设计)
四. ShopSdk架构分析
1、应用部署
对于电商而言,领域有用户、商品、订单、评论、支付业务等等,不同的领域提供不同的服务,为了提高模块服务的可用性,一个模块部署在多个节点做冗余,并自动进行负载转发和失效转移;
2、搜索
Shop-SDK商品搜索引擎基于分布式实时引擎elasticsearch(ES)。ES构建在开源社区最稳定成熟的索引库lucence上,支持多用户租用,高可用,可水平扩展;并有自动容错和自动伸缩的机制,并且同时实现es与mysql无缝集成.数据实时同步.
3、存储
A. 数据库:
1)数据库用Mysql,采用双主模式,注意:主从不在同一个物理机上。主从结构保证在主库出现故障比如宕机自动切换到从库。通过LVS做负载均衡做到高可用,提高吞吐量
2)基于Mycat组件实现多租户管理,动态创建数据库实例,通过数据库级别的隔离机制保证用户的数据隔离,同时支持横向扩展.后期将支持分表,分区操作. 为应用提供更强壮的数据库服务
B. redis存储:
1)应用层逻辑优先从Reids中获取业务数据,如果Redis中没有,再从DB中获取
2)通过自定义虚拟过期时间以及锁机制解决Redis缓存过期产生的惊群现象
4. 监控:
1)通过自定义dubbo微服务监控中心, 监控服务端服务和客户端调用情况,调用次数,调用日志,方便问题查找.并提供邮件告警功能.保证服务的高可用
(本文只针对于部署,监控,存储方面进行了简单介绍,后期会针对于各个模块进行深入分析)
五.结语
阿里把11.11从光棍节变成狂欢节,到2017年双11达成1682亿的成交额。这体现出了电商的巨大市场需求,也为电商从业者带来了新的机遇和新的挑战。电商系统的复杂性使其中的每一个细节都可以拿出来仔细探究,ShopSDK将致力于为开发者/客户提供“开箱即用”的强大功能, 轻轻松松即可完成一个B2C电子商务的搭建和部署。
文/ Mob 魏鑫