【.com原稿】1.O2O“双线融合”2020年对于电商来说无疑是动荡的一年,以“宅经济”为代表的电商第二波增长浪潮掀起了全社会深刻的范式变革。不仅彻底重塑了日用品、快消品、电子等多种业态,其溢出效应也对物流、支付、广告等周边行业表现出强大的正外部性。但就像每一次浪潮终究会平息一样,经过十多年的高速增长,电商模式也开始出现疲态,相关从业者也注意到了这一点。网购的增长点已经得到充分挖掘,如今的电子商务更多是对原有模式的进一步细化和深化,却一直找不到新一轮的增长点。电子商务迫切需要发现新的价值起点。在求变的浪潮中,苏宁率先谋划,早在2017年就做出了“智慧零售”的战略布局。作为探索线上线下“双线融合”发展模式的先行者,苏宁逐步构建线下实体与线上销售相结合的新业态。目前,苏宁易购、苏宁广场、苏宁小店、苏宁红孩子、苏宁家乐福等十余个业态已全面布局,并通过到家服务进一步拉近与消费者的距离。实现线上线下业务精准拼接、模式互补、科技赋能成为苏宁“智慧零售”战略的重点突破点。2、苏宁业务架构下的购??物环节整合在战略定位上,“O2O模式”意味着“赋能”。赋能不是另起炉灶自己打,而是通过整合两条线的资源,更好地剖析隐藏的商业价值。网络购物虽然大大降低了用户的筛选成本,但也存在性能滞后、售后流程繁琐等问题。苏宁在全国各地都有终端销售节点。如果能够打通线上线下的经营壁垒,那么便捷的线上购物流程,不仅可以为线下门店分流流量,还可以进一步扩大门店促销范围,降低营销成本。.此外,在线下端节点的支持下,线上业务也可以依托精准的地理定位服务,为用户提供更多元化的合约履行模式和更便捷的即时交付服务。线下门店不仅可以作为前置仓、自提点等,还可以作为打通最后一公里的中转站,真正实现从商家到用户的无缝对接。就苏宁易购而言,现有的核心购物环节主要依附于易购前台、交易中台、支持后台、商户平台四大核心模块。其中,易购前台作为苏宁的“入口”,通过苏宁易购APP、苏宁易购小程序和第三方小程序与消费者直接互动。用户进入苏宁易购主网站后,首页、渠道页、推广页等相关系统将进一步引导用户到具体的商品分类。对于有明确购物需求的用户,搜索系统将用户引导至目标品类。当用户选择好目标商品,进入购物支付流程后,后续的逻辑由交易中心承担。交易中心以“场景化”和“概括化”为导向。不仅提供订单生成及查询、实时价格查询、库存查询等基础服务,还包括商品寻源、购物车、加车结算等场景化服务。当用户下单付款进入履行流程后,支持后台负责从仓库到用户的发货和售后服务。物流平台收到订单后,根据订单时效分配配送任务。同时,大数据、金融、会员整合等平台会将相关数据记录到系统中,用于后续的财务核算和用户行为画像。易购前台、交易中台、支持后台串联,形成逻辑闭环,在用户端形成完整的购物环节。在商户端,商户平台提供入口、推广、管理等完整的适配服务。入驻商户通过供应商平台维护商户信息,进行商品策划和促销管理。之后,商户平台将店铺信息和合约主数据发送给各个下游系统,再与用户端系统共享数据链路。苏宁O2O业务的拓展基于“双线融合”战略。因此,在业务架构设计上,不仅要尽可能复用原有的购物链接,避免重复建设,还要梳理现有架构下实现O2O业务的各种系统。无缝整合。就初衷而言,O2O赋能旨在升级易购商户模式,O2O模式的核心是划定线下实体精准地域服务范围,提供多层次时效合约履行模式。基于这种需求,O2O业务的建立迫切需要一个能够提供地理数据分析和处理能力的前端业务系统,以整合易购前端与交易中台的技术链接,““随时业务系统”应运而生。3、“随时商务系统”的技术赋能“随时商务系统”旨在为O2O商户和用户提供精准的地理数据处理和分析能力支持,同时提供具有决定性的前端O2O业务统一接入服务。在苏宁现有的业务架构下,随时业务系统扮演着介于易购前台和交易中台之间的O2O业务枢纽角色。就业务环节而言,anytime业务系统同时与易购前台、交易中台、商户平台三大模块进行交互。anytime业务系统作为O2O业务的接入层,提供统一的多渠道门店搜索服务。用户在使用苏宁易购APP时,可以通过该服务获取准确的地理位置信息和附近商铺信息。基于用户地理信息调用推荐、搜索、寻源、价格、时效等系统,根据业务需求整合商品数据推送给用户,为用户提供更多样化的时效履约选择。图1:Anytime业务系统技术架构在技术架构上,Anytime业务系统可以进一步拆分为前台、中台、后台三个子模块。其中,前台除了提供基于地理数据分析能力的寻址寻店服务外,还随时为用户及其他系统提供同城门店、促销店、好物等信息查询服务。你身边的店,广场店。基于苏宁分布式调用框架的技术支持,随时前端与推荐、搜索、价格、促销、时效、运费等后端系统实现了数据链的无缝对接。O2O商户在商户平台入驻并维护店铺信息、商户信息和电子围栏信息时,商户管理系统和商户管理库存系统会将这部分信息通过消息队列发送给anytime平台。中心站随时收到电子围栏数据后,首先会检查电子围栏数据的规律性。过滤掉不合规的数据后,将正规数据的地理信息编码成EWKT格式的文本几何对象存入数据库。图2:竞争接口路由汇聚策略平台除了接受门店、商户、电子围栏等信息外,还负责在多活部署场景下提供接口级路由汇聚功能。鉴于O2O业务的重要价值,anytime业务系统采用主备双机房部署方案,通过主备拓扑复制机制实现双机房的数据一致性。在这种部署架构下,数据的更新和插入操作需要关闭,保证统一存放在主机房。借助分布式呼叫中心提供的跨机房路由服务,将所有前端更新和插入请求汇集到中台服务管理组件,统一路由到机房数据库。anytime后台功能设计比较简单,主要供运维人员查询和管理店铺信息和商户信息。4、地理数据分析能力建设就设计初衷而言,随时商务系统旨在提供一整套地理数据分析服务和精准的LBS店铺搜索服务。该服务主要通过PostgreSQL的PostGIS地理插件实现。PostgreSQL是加州大学开发的基于PostGres4.0版本的对象关系型数据库。与传统的关系型数据库相比,PostgreSQL提供了更加丰富的扩展特性,如对象存储、复杂查询、自定义类型等。PostGIS是PostgreSQL的空间数据处理插件,它符合并实现了OpenGIS的设计规范,使PostgreSQL能够存储和分析复杂的空间、平面和曲面几何对象。随时随地业务系统的地理数据分析能力可以分为寻址和寻店两个维度。所谓寻址,就是将用户手工填写的文本地址解析成结构化地址,挂载经纬度信息。为了给用户提供更精准的地理定位服务,Anytime前台采用主动地址数据清洗,对用户地址信息进行正则化。当获取到用户的文本地址后,业务系统会随时调用地址组件系统的相关API接口,将文本地址数据解析为结构化的地址数据,用于挂载兴趣点(包括经纬度等详细地理信息)、省、市等)同步到相关系统,这个过程用户是察觉不到的。用户打开苏宁易购APP,可以通过结构化的地址信息,找到附近的O2O门店,享受及时的配送服务。与寻址和存储查找的技术实现相比,更加复杂。它主要依靠目前流行的国际地理坐标系EPSG:4326(WGS84)和PostGIS地理组件来实现。PostGIS遵循OpenGIS的技术规范。其地理数据分析能力基于大地测量学、地理测量学、投影测绘等相关技术理论:1.Thegeoidandreferenceellipsoid图3:地球的自然表面和参考椭球在地理测量中,“大地水准面”是一个非常重要的概念。由于地球是一个被两极压扁的近似椭球体,自然地表因地形差异而凹凸不平,不能直接用于标准化的地理测量。为了准确测量地球表面,需要人为设置参考平面。所谓“大地水准面”是指仅在重力和自转的影响下理想海平面的延伸。这个平面包裹着整个地球,形成一个封闭的曲面。“参考椭球”是“大地水准面”围成的几何空间。参考椭球由三组参数、半长轴、半短轴和展平唯一定义。参考椭球是一个虚拟的几何模型,地理测量中的经度、纬度和高度都是相对于参考椭球的。由于地形的不同,不同地区使用的参考椭球体也不同。目前国际上的参考椭球基本遵循WGS规范。2、投影坐标系和地理坐标系由于地理测量中有不同的测量要求,因此衍生出不同的参考坐标系。位置在不同的坐标系中有不同的描述。地理测量中使用的主要有投影坐标系和地理坐标系两种。图4:等距柱面投影由于地球本身是三维的,而在航海、军事、航海等实际应用中,往往会用到平面地图,因此需要将三维地球的表面转换为一个二维平面。受限于三维表面的几何特性,投影到二维平面上难免会发生畸变。常用的投影方法有两种:等距投影和墨卡托投影。对于地表某一点的精确定位和高程测量,平面投影法不能满足要求。这时候就需要一个基于参考椭球体的地理坐标系。对于地理坐标系,地球表面任意一点的精确位置都可以通过经度、纬度和海拔高度唯一确定。3、EPSG:4326(WGS84)地理坐标系WGS84地理坐标系是目前应用最广泛的地理坐标系,它类似于1983NorthAmericanDatum(NAD83)坐标系,以地球中心为坐标原点.GPS全球定位系统使用该坐标系。苏宁易购系统地理数据分析采用WGS84作为参考坐标系。4、WKB(Well-KnownBinary)和WKT(Well-KnownText)PostGIS不仅支持所有的OpenGIS规范,还在此基础上扩展了3DZ、3DM、4D坐标。OpenGIS中提供了两种描述几何对象的方法,即WKB和WKT。PostGIS还提供了更强大的EWKB和EWKT扩展几何对象。我们主要使用EWKT来完成几何对象的构建。使用EWKT构造几何对象的方法如下:(1)SRID=4326;POINT(11)表示WGS84坐标系中的一个点。(2)SRID=4326;LINESTRING(11,22)表示WGS84坐标系中的一条线。(3)SRID=4326;POLYGON(11,24,39,11)表示WGS84坐标系中的一个表面(闭合多边形)。PostgreSQL不直接存储几何数据,而是将其编码成十六进制的Geometry格式。因此需要使用PostGIS提供的几何对象构造函数:ST_GeomFromEWKT(text)。如:GeomFromEWKT(SRID=4326;POLYGON(11,24,39,11))。其中,“SRID=4326”表示几何对象在WGS84地理坐标系下构建,“POLYGON(11,24,39,11)”表示闭合多边形。PostgreSQL不会直接转换Geometry类型的几何对象,而是先检查EWKT表示的几何对象的合法性。PostgreSQL主要通过ST_IsValid函数来检查几何对象。例如执行如下两条SQL:(1)SELECTST_IsValid('POLYGON((11,24,39,11))');(2)选择ST_IsValid('多边形((00,11,22,00))');前者会返回TRUE,而后者会返回FALSE,因为后四个点在一条直线上,无法构成闭合多边形,验证失败。5、基于用户经纬度的寻店解决方案借助PostGIS,随时业务系统可以将文本的门店电子围栏信息转码为可计算的几何数据类型。当用户打开苏宁易购APP时,会调用随时业务系统的相关接口。获取到用户的地址信息后,可以据此计算出用户所在位置周边的商铺。该功能主要是通过PostGIS的几何包含判断函数ST_Contains(geometry,geometry)实现的,可以判断两个几何对象之间是否存在包含关系。当获取到用户的位置信息后,系统会将其编码为WGS84坐标系中的标准几何点对象,并查询包含该点的地理围栏数据。查询电子围栏信息后,系统会根据需要打包相应的业务返回给用户,为用户提供附近门店的高精度查询服务。5、PostgreSQL的高可用解决方案鉴于O2O业务可能的增长潜力和业务预期,未来O2O门店数量可能达到数百万甚至数千万。由于几何操作的性能成本,单个PostgreSQL无法保证高并发场景下的服务能力。因此,anytime业务系统使用PostgreSQL的Citus插件搭建高可用的分布式集群。Citus基于PostgreSQL的开源分布式数据库开发,完美融合了PostgreSQL的应用生态。Citus良好的扩展性使其在保证数据库稳定性的同时无缝兼容PostgreSQL版本的演进。一、常规Citus集群部署架构图5:常规Citus集群部署架构Citus采用Container-Worker部署架构,即一个或多个数据库作为Container节点,多个数据库作为Worker节点。容器节点不存储任何业务数据,只保存分片规则和数据切分相关的元数据。业务数据被分成M个分片,分布在N个Worker节点中。除了分表数据,还有一部分参考数据没有经过数据切分,在每个节点中存储相同的数据副本。为了防止单点故障下的数据丢失,Citus还提供了“分片复制”功能。启用该功能后,Citus会将每个分片数据副本分发到多个Worker节点中。当单个节点宕机时,Container会自动将指向该节点的请求路由到其他备份节点。2.苏宁Citus集群部署架构图6:苏宁Citus集群部署架构在传统的Citus部署方案中,一般采用多个数据库作为Container节点,组成一个高可用的Container集群,通过流复制来保证不同Container的元数据节点一致性。然而,该解决方案存在两个缺陷。一是Container节点只存储元数据,浪费了大量的存储空间。其次,为了提高集群的读写性能和高可用,需要横向扩展Container节点。基于性能和稳定性的考虑,苏宁采用了另一种部署方案。借助Citus的MX功能,所有Worker节点也可以携带元数据并通过流复制保持一致性。这消除了进一步区分Container节点和Worker节点的需要。每个数据库同时存储元数据和业务数据,既节省了存储空间,又实现了数据库集群的去中心化,避免了由于Container节点宕机而导致集群服务能力的损失。结语借助高可用的PostgreSQL集群和PostGIS地理组件的技术赋能,苏宁随时随地业务系统拥有更加精准可靠的O2O服务能力。线上数据与线下终端的融合,不仅为苏宁开辟了更广阔的发展空间,也引发了零售业新的价值进化。作者简介:王翔,苏宁科技集团消费平台研发中心技术经理。毕业于安徽大学电子信息工程专业。目前致力于苏宁随时、苏宁基金会、苏宁拼购等多活解决方案的设计与部署、系统架构拆分、后端性能优化、服务端开发。【原创稿件,合作网站转载请注明原作者和出处为.com】
