• 阅读笔记12


    阅读文章《当当网系统分级与海量信息动态发布实践》2

    系统分级

    对于电商网站,用户体验是第一位的,系统稳定运行是保证用户良好体验的基础。在资源有限的条件下,采取对系统进行级别划分的方式,对高级别系统保持重点关注,在设计、部署、监控等方面确保高级别系统具备良好的伸缩性、健壮性和敏感度,能够应对电商业务中不确定的极限峰值冲击。

    当当网基于可能对用户产生影响的程度与敏感度,将所有应用系统分为三级,简单描述如表1。

     

    表1  应用系统等级划分标准

    依此标准,当当网的一级系统主要包括卖场系统、商品详情、价格系统、库存系统、促销系统、购物车、交易系统、支付系统、会员系统等。

    二级系统则包括商品信息系统、订单系统、ERP、仓储系统、物流与干线运输系统等。

    三级系统主要是结算系统、报表系统,以及运营、活动管理类系统。

    其中一级系统基本可分为两类,第一类为面向用户访问的前端页面,第二类为购买流程所涉及的系统。一级系统的关键指标是可用性,在设计和部署时都要高标准严要求,要求具备完善的容错降级机制,日常保持较低的系统运行负载,配置高级别的监控告警流程,出现问题在要求的SLA标准内修复与解决。这两类系统的核心业务功能定位不同,采用的技术也不同,前端页面系统主要使用PHP语言,购买流程则主要由Java语言实现。

    前端页面系统是电商业务的流量入口,需解决的核心问题是保证大流量高并发情况下的快速展示可用,这方面业界已有较为成熟的解决方案,如CDN、缓存、静态化、异步加载、与依赖的数据源解耦、同机部署、数据库读写分离等。通过这样的设计使前端无状态页面应用可以水平扩展,增加Web服务器即可提升系统能力。

    为充分发挥系统资源潜力、提高性能,我们引入HHVM对PHP代码进行优化加速,经过性能测试验证,取得了显著效果,性能提升超过100%。现在当当网前端页面系统具备支撑10倍流量冲击的能力,面对超出极限的流量峰值,我们也有预案,主要采取延长缓存时效、本地静态化方式,屏蔽峰值流量对后端系统的冲击,并具备容错机制,在后端非关键服务失效时优雅展示等。卖场系统作为生成各种活动专题页面的工厂,支持通过配置将页面组件静态化,以满足更高访问量的要求。

    购买流程是电商业务流程中至关重要的环节,一旦出现问题,将使前面的引流、促销、搜索、推荐等营销成果付诸东流,因此购物车、交易系统和支付系统必须确保用户购买结算过程的高效稳定,并保证数据持久化的准确性和一致性。

    购物车与交易系统逻辑复杂,依赖服务众多,其中交易流程的实现依赖超过100个服务。我们梳理出核心业务流程,再根据与核心业务流程的关系,区分出对服务的依赖性强弱。弱依赖服务如积分、礼券、收藏夹等,通过较好的容错和降级机制,在业务量达到峰值时,可通过服务降级维持核心业务流程的稳定运行。对于强依赖服务中数据变化较少的配置查询类服务,则通过缓存数据来降低服务依赖关系,牺牲部分数据的及时性换取系统的健壮性。

    交易型系统的业务,成功率是关键指标,可能因为分布式服务集群中部分实例异常或网络问题导致调用强依赖的服务失败,需要发起重试,为兼顾用户体验和减少对系统资源的占用,采用设置较短超时时间及重试其他服务节点方式更为合理。经过优化,购买流程的系统可用性指标达到了99.99%。

    二级系统多数为后台订单与履约系统。在流量漏斗模型下,在一级系统内形成订单后,订单流转到二级系统,二级系统面对的峰值压力要小得多。

    二级系统多采用异步方式进行系统交互,对于超出处理能力的业务数据,异步机制削峰填谷,使系统得以在可控的压力下运行。系统资源占用维持在较高水位,既能充分利用系统资源,又可以保证较高的处理效能。当然,异步机制带来的延迟问题也必须控制在合理范围之内,在业务量骤增时可以容忍一定程度延迟。如果平时就经常出现延迟,则需要进行优化,或者重新进行容量规划,提高系统整体的吞吐能力。2014年为应对双11及未来业务发展,当当网对订单系统数据库进行了扩容,规模达到之前的5倍,其他部分系统也进一步分库分表,使之具备承载更高业务峰值的能力。

    系统分级是根据不同系统的特点,结合公司业务战略关注点进行的差异化处理。电商业务链贯穿多个系统,每一个环节都不容忽视。一级系统固然是核心优化的重点,二三级别系统的技术指标要求也同样严格。

    我们对每个系统的可用性都有严格要求,并将监控系统列为一级系统,时刻关注木桶理论中最短的那块板子,我们的目标是打造一套性能均衡,没有明显短板,日常能够应对5倍业务峰值压力的电商系统平台。

    文章链接:https://mp.weixin.qq.com/s?__biz=MzIyNjE4NjI2Nw==&mid=2652557384&idx=1&sn=fe85ffb4b3b87737c43637a948a21cf4&chksm=f39a353cc4edbc2ae3f34f18bdd8d3cab16bc9384dc8dacc3a0ec682881bf0b777b2ae5c1e04&scene=21#wechat_redirect

  • 相关阅读:
    WPF 依赖属性
    WPF 利用附加属性创建FreezableCollection集合和反射实现控件参数以MVVM模式传递
    VS Code 使用插件让HTML和JS代码运行在火狐浏览器
    WPF 键盘导航附加属性解决TreeView的Tab导航焦点问题
    WPF 透视相机的UpDirection(向上方向)
    ABP框架——集成Mysql
    CentOS7部署.Net Core2.0站点(中)
    CentOS7部署.Net Core2.0站点(上)
    (转)非常完善的Log4net详细说明
    GitHub for Windows提交失败“failed to sync this branch”
  • 原文地址:https://www.cnblogs.com/wang-jx/p/11051256.html
Copyright © 2020-2023  润新知