前言

苏宁售后服务运营能力承诺服务系统(简称“ASAP”)是物流研发中心建设的针对苏宁售后服务的时效承诺管理和服务运营能力管理的核心支撑系统,ASAP系统经历两年多的线上考验与技术迭代,目前服务着成万级商家,亿级SKU。

系统定位及核心业务场景分析

首先介绍一下系统的定位,苏宁售后服务运营能力承诺服务系统(ASAP,下称“系统”),是售后服务能力的“库存系统”,主要为售后服务的服务时效承诺和运营服务能力提供管理,与易购商城及线下门店的商品销售及售后服务履约相关联,系统定位为苏宁易购核心销售链路上的核心服务之一。在商品销售和售后服务履约过程,为消费者、苏宁客服、苏宁自营售后服务商、厂家售后服务商和平台售后服务商提供能力服务支撑,为售后服务能力均匀有序的释放提供了系统支撑,从而保障了售后服务质量

然后介绍一下系统的主要功能及业务模式,系统主要提供服务承诺和服务能力的实时接口查询,服务能力的实时增加和扣减接口服务。从业务模式上又分为苏宁自营售后服务、厂家售后服务、平台服务商售后服务,其中苏宁自营售后服务是指由苏宁自营的帮客公司提供的售后服务业务,厂家售后服务是指由商品的原厂商(比如海尔、华为)提供的售后服务业务,平台服务商售后服务是指由平台服务商(比如闪修侠)提供的售后服务,针对这三种业务类型,系统提供全面支撑。

系统的特点

库存系统主要面临以下几个挑战:

  1. 高并发,热点争抢 
    涉及商品四级页的时效针对同一个商品,比如秒杀、团购、打折促销等活动商品,如何支撑高并发时效能力查询与扣减服务。
  2. 尽可能减少能力超扣,保证数据一致性
    区别与实物商品库存,售后服务能力主要是为了减小下单环节的依赖,能力控制可以放宽限制,服务的能力异步扣除,允许并发情况的少量超扣,但从服务上要保证扣完后的实际能力与查询能力保持一致性,这是底线原则。
  3. 系统扩展性 
    如何建设出可无限扩展的架构,在系统扩展过程中,各部署节点都需要具备无限扩展能力,而常见的瓶颈如数据库的连接数、队列的连接数等。
架构设计目标

应用架构

业务流程

1)服务商的运营人员针对服务类型进行服务承诺和服务能力的维护
2)消费者在苏宁易购APP或是网站上选购商品,打开商品四级详情页,调用SOLP进行时效查询
3)SOLP调用ASAP提供的时效查询接口进行查询。
4)消费者完成下单支付,订单由订单中心下发到“售后服务接单管理系统”,由“售后服务接单系统”调用ASAP系统进行能力扣减。
5)如后续的售后服务订单有取消或另约服务时间请求,则会调用ASAP的能力的回滚接口进行能力回滚。

系统架构

ASAP架构主要涉及:
1)ASAP服务:主要提供能力的加减服务包括能力新增和能力扣减接口,
2)ASAP后台:主要提供系统给运营人员进行承诺和时效服务的
3)中间件:主要涉及分布式服务框架RSF、任务调度平台UTS、消息队列WindQ
4)数据层:主要用到了Redis集群,mysql数据库集群。
5)基础服务:主要依托苏宁的基础DEVOPS工具链完成开发和运维工作。

技术框架

开发框架

系统采用苏宁SNF技术框架开发,苏宁SNF框架基于MAVEN项目管理,提供各种的骨架组件。在这些骨架组件中,基本的依赖和基本设置都在模板中做好,无需各项目重复工作。本框架也包括了基本的项目框架结构和各种基本设置,同时也集成了苏宁框架组统一的日志记录、异常捕获、数据访问等苏宁自己的基础组件。

项目组在SNF框架的基础上,进行少量的裁剪和扩充就可以进行开发,既能统一项目设置和架构,又能大量节省开发人员搭建框架的时间。

开发环境

STS+Maven+SVN +JDK1.7+JBoss。

分布式服务框架RSF

系统提供的核心的服务接口均采用苏宁自研的RSF框架实现,RSF框架 解决了分布式系统间的服务调用问题,提供一种透明的、高性能的RPC服务调用方案。

主要功能

  1. 支持同步、异步Future、异步Callback三种客户端调用模型;
  2. 支持TCP协议及Hessian、JSON、KRYO序列化机制;
  3. 服务节点的自动注册和发现;
  4. 多种负载均衡方式;
  5. 服务路由;
  6. 容错重试机制;
  7. 流控,熔断等机制;
  8. 统一的服务配置管理,支持配置的动态修改。

总体架构

系统面临的挑战及应对

虽然系统采用了SNF框架,基于苏宁组件和基础设施,搭建了高并发的分布式架构,但随着苏宁易购电商业务高速发展,订单屡创新高的背景下,系统依然面临一些挑战:

  1. 扩展痛点:受限于数据库的连接数瓶颈、Redis服务器的连接数瓶颈等因素,导致应用集群无法无限扩展;
  2. 机房容灾及机房容量:机房断电,电缆被挖,造成整个苏宁易购交易系统瘫痪;单个机房容量受限,无法创建更多的服务器;
  3. 热点瓶颈:虽然通过构建缓存化支持能力服务,但单个商品的并发查询和扣减仍然存在上限

为了解决上述问题,我们启用了应用的本机分布式缓式,并在公司规划下正在进行多活架构构建。

应用服务器内存缓存

我们通过Ehcache框架,对于一些配置主数据和能力总量在应用服务器进行内存缓存,从生产压测情况来看效果明显,在不新增服务器的条件下tps成倍增加,redis热点消失。

后续也计划对于已约数量等实时能力数据,通过分布式缓存实现共享,以进一步提升单个商品并发查询和扣减的热点瓶颈。

多活架构

目前ASAP系统在公司统一部署下实现了多活的支持,在多个机房之间建立数据库和Redis缓存数据的准实时同步,支持多个机房间的流量切换,当A机房出现故障,可由B机房完全接管,具体多活的生产应用还在联调中。

双11等大促活动保障

经过两年多的大促实战,基本形成了事前、事中、事后完整的大促保障工作机制,工作项标准化,越来越细致,组织上有专人牵头负责具体工作项事务,形成了完整的闭环。

容量和性能评估

对公司双11大促的 活动预告及销售目标进行详细评估和分解,转化成ASAP系统的核心服务的SLA,确定库存系统的核心服务的TPS目标。

性能压测达标

大促前,我们会进行多轮的生产压测,最重要的是单系统的接口压测和端到端全链路压测。通过单系统服务接口压测,我们排除接口潜在的性能瓶颈并针对性的优化,能够清楚认识负责系统的单接口所能支持的并发上限;通过生产真实流量回放的端到端全链路压测平台,进行全链路的生产压测,发现真实流量下的系统压力情况,和资源情况,提前发现性能瓶颈和潜在的系统风险。性能测试是大促筹备最为关键的一环。

系统健康体检

提前对系统的各方面进行全面的健康检查,比如db磁盘的容量、连接数、topsql,缓存的内存使用率、并发命令数和连接数,消息队列的连接数,各节点的cpu负载情况,排除单点故障,排除虚拟机的资源争用问题,排除高可用问题(同一物理机多应用节点)等。

机器扩容

基于容量预估出来的各服务接口的TPS目标,根据压测结果评估系统的服务器是否需要扩容,比如jboss集群是否需要扩容,redis集群是否需要扩容,数据库服务器性能是否有足够等。

梳理流控与降级方案

所有服务接口需要设定合理的流控阀值,以确保系统不会挂死;梳理所有接口的调用系统和业务场景并明确业务的优先级,假设系统因为某服务导致性能出现瓶颈,根据业务优先级逐步调整流控阀值;业务流控或系统流控要实现用户的友好提示;对于依赖系统,如果出现超时或宕机,则定义降级策略,确保服务请求的快进快出。

作者:汪成伟,苏宁易购IT总部物流研发中心技术总监,目前负责苏宁物流研发中心售后相关系统的架构与开发管理工作,具有十多年互联网一线研发及管理经验。曾负责过B2C电商平台、移动新闻资讯平台,用户上网行为分析大数据平台及O2O社交应用的研发工作。是DevOps的践行者,在企业应用架构设计、高并发系统设计、大促保障、研发过程管理、稳定性治理、安全开发上有丰富的经验。

苏宁大促高并发要求下的售后服务运营能力承诺服务系统架构实战\n相关推荐

  1. 高并发环境下,6个构建缓存服务需要注意的问题

    摘要:高并发环境下如何构建缓存服务,你知道吗? 本文分享自华为云社区<[高并发]高并发环境下构建缓存服务需要注意哪些问题?>,作者:冰 河. 缓存特征 (1)命中率:命中数/(命中数+没有 ...

  2. 高并发场景下数据库的常见问题及解决方案

    一.分库分表 (1)为什么要分库分表 随着系统访问量的增加,QPS越来越高,数据库磁盘容量不断增加,一般数据库服务器的QPS在800-1200的时候性能最佳,当超过2000的时候sql就会变得很慢并且 ...

  3. 【高并发】高并发环境下构建缓存服务需要注意哪些问题?我和阿里P9聊了很久!...

    写在前面 周末,跟阿里的一个朋友(去年晋升为P9了)聊了很久,聊的内容几乎全是技术,当然了,两个技术男聊得最多的话题当然就是技术了.从基础到架构,从算法到AI,无所不谈.中间又穿插着不少天马行空的想象 ...

  4. 高并发环境下如何优化Tomcat性能?看完我懂了!

    来自:冰河技术 写在前面 Tomcat作为最常用的Java Web服务器,随着并发量越来越高,Tomcat的性能会急剧下降,那有没有什么方法来优化Tomcat在高并发环境下的性能呢? Tomcat运行 ...

  5. 【高并发】在高并发环境下该如何构建应用级缓存?

    来自:冰河技术 写在前面 随着我们的系统负载越来越高,系统的性能就会有所下降,此时,我们可以很自然地想到使用缓存来解决数据读写性能低下的问题.但是,立志成为资深架构师的你,是否能够在高并发环境下合理并 ...

  6. 高并发场景下缓存的常见问题

    作者介绍: 丁浪,非著名架构师.关注高并发.高可用的架构设计,对系统服务化.分库分表.性能调优等方面有深入研究和丰富实践经验.热衷于技术研究和分享. 声明:版权归丁浪作者本人所有,转载请联系作者本人 ...

  7. 本地缓存需要高时效性怎么办_缓存在高并发场景下的常见问题

    缓存一致性问题 当数据时效性要求很高时,需要保证缓存中的数据与数据库中的保持一致,而且需要保证缓存节点和副本中的数据也保持一致,不能出现差异现象.这就比较依赖缓存的过期和更新策略.一般会在数据发生更改 ...

  8. 分布式锁和mysql事物扣库存_这个是真的厉害,高并发场景下的订单和库存处理方案,讲的很详细了!...

    前言 之前一直有小伙伴私信我问我高并发场景下的订单和库存处理方案,我最近也是因为加班的原因比较忙,就一直没来得及回复.今天好不容易闲了下来想了想不如写篇文章把这些都列出来的,让大家都能学习到,说一千道 ...

  9. 读数据库遇到空就进行不下去_如何解决高并发场景下缓存+数据库双写不一致问题?...

    推荐阅读: 一只Tom猫:手撕分布式技术:限流.通讯.缓存,全部一锅端走送给你!​zhuanlan.zhihu.com 一只Tom猫:MySQL复习:20道常见面试题(含答案)+21条MySQL性能调 ...

最新文章

  1. 暴力探测蓝牙设备工具redfang
  2. 互联网协议 — TCP — 重传机制(可靠传输保障)
  3. python 写创建和追加一个文件
  4. UCenter创始人密码正确但是登录不了
  5. SQL server 2008数据库的备份与还原、分离(转)
  6. Zigbee如何在智能家居中成为领先的连接技术?
  7. CentOS远程监控
  8. Android ProgressBar手动控制开始和停止
  9. Tricks(三十六)—— remove_list_entry(无需 if 逻辑)
  10. 开源代码motion
  11. MongoDB 在windows shell环境下的基本操作和命令的使用示例(五)
  12. AdventureWorks2008 数据库安装
  13. 微信小程序 短信验证码
  14. 部分双机热备软件详细介绍-行云管家
  15. html中scr作用,车用尿素在SCR系统中的作用讲解?
  16. 【软件测试教程】手机号码归属地开发文档
  17. 解决Error:All flavors must now belong to a named flavor dimension. Learn more at...
  18. mingw32-make.exe缺少的方法
  19. Docker及其使用思维导图
  20. ABBYY FineReader PDF15下载安装教程

热门文章

  1. ASP.NET Page执行顺序如:OnPreInit()、OnInit()
  2. HttpClient和HttpURLConnection的使用和区别(上)
  3. 构造函数和析构函数能不能是虚函数
  4. 关于解决oracle登录:ora-12154:tns:无法解析指定的连接标识符
  5. login控件设置居中
  6. 使用System.Transactions
  7. a表两个字段都与b表一个字段关联_数据库表的主键实例分析
  8. 人工智能学习--知识图谱的关键技术及其智能应用
  9. CPropertyPage::OnSetActive()和OnKillActive()函数:属性页切换时的处理函数
  10. python实现线性回归预测_机器学习实战笔记(Python实现)-08-线性回归