赋能O2O——苏宁随时业务系统的设计与实现

开发 架构
2020年之于电子商务无疑是激荡的一年,以“宅经济”为代表的电商第二波爆发增长,在全社会掀起了一场深远的范式变革。其不仅完整重塑了日用、快消、电子等多种业态,其溢出效应也对物流、支付、广告等周边产业显现出了强大的正外部性。

【51CTO.com原创稿件】

 一. O2O“双线融合”

2020年之于电子商务无疑是激荡的一年,以“宅经济”为代表的电商第二波爆发增长,在全社会掀起了一场深远的范式变革。其不仅完整重塑了日用、快消、电子等多种业态,其溢出效应也对物流、支付、广告等周边产业显现出了强大的正外部性。但就像每一场潮水都终将归于平静,经历十数年的高速增长,电商模式也已初显疲态,对此,相关从业者亦有所察觉。线上购物的增长点已被充分挖掘,如今的电子商务更多的只是在原有模式上进一步细化和深化,却迟迟无法找到新一轮增长着力点。电子商务亟待发掘新的价值发轫点。在寻求变革的浪潮中,苏宁率先布局,早在2017年就做出了“智慧零售”的战略布局。

作为探索线上线下“双线融合”发展模式的先行者,苏宁逐步搭建起一套整合了线下实体与线上销售的全新业态。当下,苏宁易购、苏宁广场,苏宁小店,苏宁红孩子,苏宁家乐福等十多种业态已经全面铺展,且正通过到家服务进一步拉近同消费者的距离。而实现线上线下业务精准缝合,模式互补,技术赋能则成为了苏宁“智慧零售”战略的关键突破点。

二.苏宁业务架构下的购物链路整合

在战略定位上,“O2O模式”意味着“赋能”。赋能不是另起炉灶、各自为战,而是通过整合双线资源以便更好析出潜藏的商业价值。线上购物虽然极大降低了用户的筛选成本,但是也存在履约滞后,售后流程繁琐等问题。苏宁坐拥遍布全国的末端销售节点,如果能够打通线上与线下的业务壁垒,那么线上便捷的购物流程不仅能够为线下门店导流,同时也能进一步拓宽门店推广范围,降低营销成本。此外,在线下末端节点的加持下,线上业务也可以依托于精准的地理定位服务,为用户提供更为多样化的履约模式和更为便捷的即时配送服务。线下门店不仅可以作为前置仓、自提点等,还可以作为打通最后一公里的中继站,真正实现从商家到用户的无缝衔接。

放诸于苏宁易购而言,现有的核心购物链路主要依附于易购前台,交易中台,支持后台,商户平台这四大核心模块。其中易购前台作为苏宁的“门户”,通过苏宁易购APP,苏宁易购小程序,第三方小程序直接与消费者交互。用户进入苏宁易购主站后,由首页、频道页、促销页等相关系统将用户进一步导流到具体的商品类目。而对于有明确购物需求的用户,则通过搜索系统将用户引导到目标品类下。

当用户选定目标商品,进入购物支付流程,后续逻辑则由交易中台承接。交易中台以“场景化”和“通用化”为建设导向。不仅提供订单生成与查询,实时价格查询,库存查询等基础服务,还包纳了商品寻源、购物车、加车结算等场景化服务。

当用户下单支付进入履约流程后,由支撑后台负责从仓储到用户的配送及售后服务。物流平台接到订单后根据订单时效分派配送任务。同时大数据、财务、会员融合等平台会将相关数据记入系统用于后续的财务记账及用户行为画像等。易购前台,交易中台,支撑后台串联成逻辑闭环,构成用户侧的完整购物链路。

而商家侧则由商户平台提供入驻、推广、管理等完整的适配化服务。入驻商家通过供应商平台维护商家信息,进行商品规划及推介管理。之后商户平台将门店信息及合同主数据下发给各下游系统,进而与用户侧系统共享数据链路。

苏宁O2O业务的拓展立足于“双线融合”战略,因此在业务架构设计上,不仅要尽可能复用原有购物链路,避免重复建设,还要疏通各系统,实现O2O业务在当前架构下的无缝整合。就初衷而言,O2O赋能旨在于对易购入驻商家的模式升级,而O2O模式的核心在于圈定线下实体精确的地理服务范围并提供多级时效履约模式。基于这一要求,O2O业务的铺设亟需一个能够提供地理数据分析处理能力的前台业务系统整合易购前台与交易中台之间的技术链路,“随时业务系统”应运而生。

三.“随时业务系统”的技术赋能

“随时业务系统”旨在于为O2O商家及用户提供精确的地理数据处理分析能力支撑,同时提供收束性的前台O2O业务统一接入服务。苏宁当前的业务架构下,随时业务系统扮演了易购前台与交易中台之间O2O业务枢纽的角色。

就业务链路而言,随时业务系统同时与易购前台、交易中台、商户平台三大模块交互。作为O2O业务的接入层,随时业务系统提供了统一的多渠道寻店服务,用户使用苏宁易购APP时便通过这一服务获取精确的地理位置信息与附近店铺信息。其根据用户地理信息调用推荐、搜索、寻源、价格、时效等系统,并基于业务需求整合商品数据推送给用户,进而赋予用户更为多样化的时效履约选择。

 

图一:随时业务系统技术架构

在技术架构上,随时业务系统可以进一步拆分为前台、中台、后台三个子模块。其中随时前台除了提供基于地理数据分析能力支撑的寻址寻店服务外,还向用户及其它系统提供同城店铺、促销店铺、身边好店、广场门店等信息查询服务。基于苏宁分布式调用框架的技术支撑,随时前台与推荐、搜索、价格、促销、时效、运费等后端系统实现了数据链的无缝整合。

当O2O商家在商家平台入驻并维护店铺信息,商户信息以及电子围栏信息后,商家管理系统和商家管理库存系统会将这一部分信息通过消息队列下发给随时中台。随时中台接收到电子围栏数据后,首先会对电子围栏数据进行规整性校验。滤除不合规的数据后,将常规数据的地理信息编码为EWKT格式的文本几何对象并保存在数据库中。

 

图二:竞争型接口路由收束策略

随时中台除了承接店铺,商家,电子围栏信息外,还负责提供多活部署场景下的接口级路由收束功能。鉴于O2O业务的重要价值,随时业务系统采用了主-备双机房部署方案,并通过主-备拓扑复制机制实现双机房数据一致性。在这一部署架构下,需要对数据更新与插入操作进行收束以保证其在主机房统一落库。借由分布式调用中台提供的跨机房路由服务,所有前台的更新与插入请求都被收束到中台的服务治理组件中,并统一路由到主机房数据库。

随时后台在功能设计上较为简单,主要用于运维人员进行店铺信息与商户信息的查询与管理等。

四.地理数据分析能力建设

就设计初衷而言,随时业务系统旨在于提供一套完善的地理数据解析服务与精确的LBS寻店服务,这一服务主要借由PostgreSQL的PostGIS地理插件实现。

PostgreSQL是以加州大学开发的PostGres4.0版本为基础的对象关系型数据库。相比于传统的关系型数据库,PostgreSQL提供了更为多样化的扩展特性,如对象存储,复杂查询,自定义类型等。

PostGIS是针对于PostgreSQL的一个空间数据处理插件,其符合并实现了OpenGIS的设计规范,为PostgreSQL提供了复杂空间、平面、曲面几何对象的存储分析能力。

随时业务系统的地理数据分析能力可以切分为寻址和寻店两个向度。所谓寻址,即将用户手动填写的文本化地址解析为挂载经纬度信息的结构化地址。为了向用户提供更为精准的地理定位服务,随时业务前台通过主动的地址数据清洗来规整用户地址信息。当拿到用户的文本地址后,随时业务系统会调用地址组件系统相关API接口并将文本地址数据解析为挂载兴趣点(包含了经纬度,省市区等详细地理信息)的结构化地址数据并同步给相关系统,这一过程用户是无感知的。当用户打开苏宁易购APP后,便可以借助结构化的地址信息找寻附近的O2O门店并享受及时配送服务。

相较于寻址、寻店的技术实现则更为复杂。其主要依托于目前国际流行的地理坐标系统EPSG:4326(WGS84)与PostGIS地理组件来实现。PostGIS遵循了OpenGIS相关技术规范。其地理数据分析能力建基于大地测量,地理勘测,投影制图等相关技术理论:

1.大地水准面与参考椭球体

 

图三:地球自然表面与参考椭球体

在地理测量中,“大地水准面”是一个极为重要的概念。因为地球是一个两极压扁的近似椭球体,而自然表面由于地势差异凹凸不平,无法直接用于标准化的地理测量。为了精确测量地球表面,便需要人为设置参照面。所谓“大地水准面”,指的是在只考虑重力和自转影响下的理想海洋平面的延伸面。这一平面包裹整个地球构成密闭曲面。而“参考椭球体”即由“大地水准面”所封闭的几何空间。由长半轴、短半轴、扁率三组参数唯一定义一个参考椭球体。参考椭球体是虚构的几何模型,地理测量中的经纬度,海拔等都是相对于参考椭球体而言。因为各地地形差异,因此不同地区所选用的参考椭球体也不尽相同,目前国际流行的参考椭球体基本遵循WGS规范。

2.投影坐标系和地理坐标系

因为地理测量中存在不同的测量需求,因此也就衍生了不同的参考坐标系。不同的坐标系下对位置的描绘也不尽相同。目前地理测量中所使用的主要有投影坐标系和地理坐标系两种。


 

图四:等距圆柱投影法

因为地球本身是立体的,而在航海,军事,导航的实际应用中往往以平面地图为主,因此就需要将三维地球的表面转换为二维平面。限于三维曲面的几何特性,在投影到二维平面时不可避免的会出现失真。目前常用的投影方式有等距投影和墨卡托投影两种。

对于地表某点的精确定位及海拔勘测,平面投影的方式无法满足要求,这时就需要用到以参考椭球体为基准的地理坐标系。对于地理坐标系而言,通过经度,纬度,海拔可以唯一确定地球表面任何一个点的精确位置。

3. EPSG:4326(WGS84)地理坐标系统

WGS84地理坐标系统是目前使用最为广泛的地理坐标系统,其与1983年的北美基准(NAD83)坐标系统相似,以地球中心作为坐标原点。这一坐标系统被GPS全球定位系统所采用。苏宁随时业务系统地理数据分析均以WGS84为基准坐标系。

4.WKB(Well-Known Binary)与WKT(Well-Known Text)

PostGIS不仅支持所有的OpenGIS规范,而且在此基础上扩展了3DZ,3DM,4D坐标。在OpenGIS中提供了两种描述几何对象的方式,分别是WKB和WKT。PostGIS还提供了功能更为强大的EWKB和EWKT扩展几何对象。我们主要通过EWKT来完成几何对象的构建。使用EWKT构建几何对象的方式如下:

(1)SRID=4326;POINT(1 1)表示WGS84坐标系中的一个点。

(2)SRID=4326;LINESTRING(1 1,2 2)表示WGS84坐标系中的一条线。

(3)SRID=4326;POLYGON(1 1,2 4,3 9,1 1)表示WGS84坐标系中的一个面(闭合多边形)。

PostgreSQL存储几何数据时并不是直接存储,而是要编码成十六进制的Geometry格式。因此需要用到PostGIS提供的几何对象构建函数:ST_GeomFromEWKT(text)。如:GeomFromEWKT(SRID=4326; POLYGON(1 1,2 4,3 9,1 1))。其中“SRID=4326”表示在WGS84地理坐标系下构建该几何对象,“POLYGON(1 1,2 4,3 9,1 1)”表示闭合多边形。

PostgreSQL构建Geometry类型的几何对象时并不会直接转换,而是先对EWKT表示的几何对象进行合法性校验。PostgreSQL主要通过ST_IsValid函数来检查几何对象。比如执行如下两条SQL:

(1)SELECT ST_IsValid(‘POLYGON((1 1,2 4,3 9,1 1))’);

(2)SELECT ST_IsValid(‘POLYGON((0 0,1 1,2 2,0 0))’);

前者会返回TRUE,但后者会返回FALSE,因为后者四个点在一条直线上,无法构成闭合多边形,校验不通过。

5.基于用户经纬度的寻店方案

借助PostGIS,随时业务系统可以将文本化的店铺电子围栏信息转码为可供计算的几何数据类型。当用户打开苏宁易购APP后,会调用随时业务系统的相关接口。获取到用户的地址信息后,可以据此计算出用户所在位置的周边店铺。这一功能主要借由PostGIS的几何包含关系判定函数ST_Contains(geometry,geometry)来实现,该函数可以判断两个几何对象之间是否存在包含关系。当拿到用户位置信息后,系统会将其编码成WGS84坐标系下的标准几何点对象,并查询包含该点的电子围栏数据。查询到电子围栏信息后,系统会根据需要进行相应的业务封装后返回给用户,以此向用户提供高精度的身边店铺查询服务。

五.PostgreSQL的高可用方案

鉴于O2O业务可能的增长潜力和商业预期,未来O2O入驻店铺可能达到百万甚至千万级别。有使于几何运算本身的性能耗费,单台PostgreSQL无法保障高并发场景下的服务能力。因此随时业务系统采用了PostgreSQL的Citus插件来搭建高可用的分布式集群。Citus基于PostgreSQL的开源分布式数据库进行开发,完美集成了PostgreSQL的应用生态。Citus良好的扩展性使得其在无缝兼容PostgreSQL版本演进的同时又能良好保障数据库的稳定性。

1. 常规Citus集群部署架构

图五:常规Citus集群部署架构

Citus采用了Container-Worker的部署架构,即由一台或多台数据库担任Container节点,多台数据库担任Woreker节点。Container节点中不存储任何业务数据,而只保存跟分片规则,数据切分相关的元数据。业务数据被切分为M个分片分散在N个Worker节点中。除了分表数据外,还有一部分参考数据不进行数据切分,在每一个节点中都会存储相同的数据副本。

为了防止单点故障下的数据丢失,Citus还提供了“分片复制”功能,开启该功能后,Citus会将每个分片数据副本散布在多个Worker节点中。当单节点宕机后,Container会自动将指向该节点的请求路由到其它备份节点。

2.苏宁Citus集群部署架构

图六:苏宁Citus集群部署架构

在常规的Citus部署方案中,一般由多台数据库担任Container节点组成高可用的Container集群,并通过流复制来保证不同Container节点的元数据一致性。但是这种方案存在两个缺陷,一是Container节点只存储元数据,浪费了大量的存储空间。二是为了提升读写性能和集群的高可用性就必须横向扩充Container节点。基于性能和稳定性考虑,苏宁采用了另一种部署方案。借助Citus的MX功能,可以让所有Worker节点也携带元数据并通过流复制保持一致性。这样就不需要进一步区分Container节点和Worker节点。每台数据库中同时保存了元数据和业务数据,不仅节省了存储空间,也实现了数据库集群的去中心化,避免了因为Container节点宕机导致集群失去服务能力。

结语

借力于高可用PostgreSQL集群和PostGIS地理组件的技术赋能,苏宁随时业务系统具备了更为精准可靠的O2O服务能力。线上数据与线下末端的整合不仅为苏宁开拓了更为广阔的发展空间,同时也在零售行业触发了一场全新的价值嬗变。

作者简介:

王翔,苏宁科技集团消费者平台研发中心技术经理。毕业于安徽大学电子信息工程专业。目前致力于苏宁随时,苏宁基础,苏宁拼购等系统多活方案设计及部署,系统架构拆分,后端性能优化,服务端开发等工作。

【51CTO原创稿件,合作站点转载请注明原文作者和出处为51CTO.com】

责任编辑:武晓燕 来源: 51CTO
相关推荐

2016-06-06 18:26:04

2014-07-29 11:02:50

浪潮苏宁云商O2O

2014-02-25 16:26:48

云服务

2013-05-09 10:51:44

2017-11-10 09:31:29

2014-12-01 11:02:18

锐捷WLAN

2013-01-15 13:28:24

盈利模式移动互联网O2O

2013-01-15 13:59:14

2013O2O细分领域

2015-07-06 17:33:44

O2O的现状与未来

2013-10-17 16:27:09

地图手机地图互联网

2016-09-29 15:03:50

大众 点评

2017-03-29 18:34:06

互联网

2015-08-28 09:12:44

云测O2O

2015-10-15 17:44:15

O2O

2013-08-27 09:33:44

2015-06-04 14:58:40

夏季世界O2O博览会

2015-01-26 16:02:02

O2O世博会

2014-11-07 14:47:33

微访谈

2015-06-18 17:27:42

O2O

2016-03-02 10:48:13

O2O殡葬O2O互联网思维
点赞
收藏

51CTO技术栈公众号