订单中心架构设计与实践

不同的业务采用不同的系统架构,会有自己的一些特色架构难题。今天我们来学习下电商业务中的订单中心的架构设计,以及会遇到哪些技术挑战。

一、背景

随着用户量级的快速增长,vivo 官方商城 v1.0 的单体架构逐渐暴露出弊端:模块愈发臃肿、开发效率低下、性能出现瓶颈、系统维护困难。

从2017年开始启动的 v2.0 架构升级,基于业务模块进行垂直的系统物理拆分,拆分出来业务线各司其职,提供服务化的能力,共同支撑主站业务。

订单模块是电商系统的交易核心,不断累积的数据即将达到单表存储瓶颈,系统难以支撑新品发布和大促活动期间的流量,服务化改造势在必行。

本文将介绍 vivo 商城 订单系统建设的过程中遇到的问题和解决方案,分享架构设计经验。

二、系统架构

将订单模块从商城拆分出来,独立为订单系统,使用独立的数据库,为商城相关系统提供订单、支付、物流、售后等标准化服务。

系统架构如下图所示:

三、技术挑战

3.1 数据量和高并发问题

首先面对的挑战来自存储系统:

  • 数据量问题

    随着历史订单不断累积,MySQL中订单表数据量已达千万级。

    我们知道InnoDB存储引擎的存储结构是B+树,查找时间复杂度是O(log n),因此当数据总量n变大时,检索速度必然会变慢, 不论如何加索引或者优化都无法解决,只能想办法减小单表数据量。

    数据量大的解决方案有:数据归档、分表

  • 高并发问题

    商城业务处于高速发展期,下单量屡创新高,业务复杂度也在提升,应用程序对MySQL的访问量越来越高。

    单机MySQL的处理能力是有限的,当压力过大时,所有请求的访问速度都会下降,甚至有可能使数据库宕机。

    并发量高的解决方案有:使用缓存、读写分离、分库

下面对这些方案进行简单描述:

  • 数据归档

    订单数据具备时间属性,存在热尾效应,大部分情况下检索的都是最近的订单,而订单表里却存储了大量使用频率较低的老数据。

    那么就可以将新老数据分开存储,将历史订单移入另一张表中,并对代码中的查询模块做一些相应改动,便能有效解决数据量大的问题。

  • 使用缓存

    使用Redis作为MySQL的前置缓存,可以挡住大部分的查询请求,并降低响应时延。

    缓存对商品系统这类与用户关系不大的系统效果特别好,但对订单系统而言,每个用户的订单数据都不一样,缓存命中率不算高,效果不是太好。

  • 读写分离

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
对于大中台来讲,现在并没有十分严格的定义,每个企业对其的理解都是不同的,有的在技术上使用大中台模式,有的在业务上使用大中台模式,有的将两者相结合。“大中台,小前台”的机制最初阿里提出的时候,主要应用于O2O线上线下协同、电商等场景,对于电商来说,市场环境是瞬息万变的,而前台是主要的一线业务,这时就需要一个强大的技术中台提供快速设计方法和系统性后端服务,去应对市场变化,灵活快速的做出应对策略。 技术中台从技术角度出发,数据中台从业务数据角度出发,业务中台站在企业全局角度出发,从整体战略、业务支撑、连接用户、业务创新等方面进行统筹规划,由基础中台、技术中台、数据中台L合支撑来建设业务中台。 本套中台案例基于真实工业界业务讲解,将多种经过工业界验证的成熟技术解决方案呈现给大家,本套课程拒绝枯燥的理论,全程代码实操,通过项目驱动的方式,让大家能够真实体验中台工业界开发过程,帮助大家建立中台思维,学习本套课程全部内容可以帮助提高自主开发一套高性能高可用高扩展的中台系统的能力。本套案例集后端+前台+测试+运维一体,多方位的带你熟悉全过程。本课程将带大家实现一个真实的工业界中台项目,该项目是基于真实的知名互联网企业项目讲解,本课程将分为4个阶段: 第一阶段:会实现中台系统的大部分核心服务,包括:会员中心,商品中心,交易中心,商家中心,支付中心,友凡商城等等。 第二阶段:进一步完善中台系统的核心服务以及优化,包括:营销中心,搜索中心,店铺中心,缓存优化,数据库优化等等。 第三阶段:进一步优化以及完善产品服务,包括:前台系统,中台系统,友凡商城 友凡生鲜,友凡超市等等。 第四阶段:项目收尾阶段以及运维阶段,包括:压力测试,系统维护,系统部署,虚拟化方案,测试方案等等。 本课程包含的技术: IDEA集成开发工具 SpringBoot 2.0.8.RELEASE SpringCloud Finchley.SR2 Thymeleaf(模板引擎技术) 支付宝支付MyCat、MySQL、Druid  持续集成解决方案(Jenkins) 认证解决方案(JWT) 网关解决方案(Zuul) 负载均衡解决方案(Ribbon) 分布式事务+多线程+事件驱动 MyBatis+Redis+Quartz Ehcache+Hystrix Nginx(Web服务器) Restful AOP技术 性能压力测试Jemter VUE+jQuery+Ajax+NodeJS VUE+Element-UI 容器部署Docker Kubertenes Lucene、ElasticSearch(搜索) 设计模式、RabbitMQ Swagger2 文档生成工具 人工智能(RNN、LSTM)多语言开发(Python、Django)课程亮点: 1.与企业无缝对接、工业界真实业务场景 2.集后端+前台+测试+运维一体,多面学习技术链 3.多语言协调开发,熟悉语言应用场景 4.支持项目快速迭代和开发 5.引入人工智能智能客服系统6.使用微服务技术栈+前后端分离构建项目 7.引入全新的设计理念 8.全链路性能压力测试 9.分布式事务解决方案 10.事件驱动设计解决方案 11.多线程技术+设计模式的实战应用 12.分布式架构下实现分布式定时调度 13.集成MyBatis实现多数据源路由实战 14.集成SpringCloud实现统一整合方案 15 Kubernetes+Docker容器化部署和管理 16.大型系统分布式部署方案 17.高性能系统(支撑海量数据) 18.高并发下的服务降级、限流实战 19.实现高并发请求和实现高可用架构解决方案 20.全程代码实操,提供全部代码和资料 21.提供答疑和提供企业技术方案咨询企业一线架构师讲授,代码在老师的指导下企业可以复用,提供企业落地方案。  版权归作者所有,盗版将进行法律维权。 

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值