从艺术升事件,聊一聊高可用和高并发

最近是艺考报名的时间,而与往年不大一样的是今年很多知名学府启用一个名叫“艺术升”的APP报名的方式,谁知自1月3日至1月6日,官宣每秒最大并发连接数从1.98W扩大到34W,服务器跟不住挂了,而最倒霉的是那些急于报名的莘莘学子,每天5,6点都要开启【冻狗模式】

从艺术升事件,聊一聊高可用和高并发_第1张图片
从艺术升事件,聊一聊高可用和高并发_第2张图片


作为一个国考级报名的流量入口搞成这个样子,几十万的考生自然情绪激愤寒窗十几年就被一个APP给毁了,杀人的心都有了,于是网上传来各种各样的声音:

有这样的:
从艺术升事件,聊一聊高可用和高并发_第3张图片

这样的:
从艺术升事件,聊一聊高可用和高并发_第4张图片

还有这样的:
从艺术升事件,聊一聊高可用和高并发_第5张图片

为此官方也被搞得焦头烂额,迅速从阿里云,袋鼠云调拨高级技术专家,增调150台服务器,共225台服务器组成临时报考专业集群,才逐渐恢复了服务
从艺术升事件,聊一聊高可用和高并发_第6张图片

至于为什么一个不知名的公司能够垄断全国报考的,我们暂且不论,而今天我们要聊的就是关于技术层面的高并发高可用的问题。


为了能够达到前文所说的“坚持”,希望和大家共同学习互联网行业中涉及高并发高可用的技术要领,后期的文章我们将按照以下目录进行整理和发布:
从艺术升事件,聊一聊高可用和高并发_第7张图片


什么是高可用

高可用 HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。


墨菲定律 – 任何事没有表面看起来那么简单 ;所有的事都会比预计的时间长 ; 可能出错的事情总会出错; 担心某种事情发生,那么它就更有可能发生

服务运行环境中可能面临各种不确定性:机房断电,导致整个网络服务中断(笔者曾在几周内连续遇到黑色星期五);DBA从删库到跑路;系统磁盘坏掉,数据面临丢失风险;服务功能因非重要业务代码导致无法正常使用;这些其实都是我们要尽量控制的范围:

事前处理:

  • 副本:例如:系统的双机热备,双机双工,数据的:高可用集群,主主共存
  • 隔离:热点隔离(秒杀商品),数据隔离(订单),线程隔离、进程隔离、集群隔离、机房隔离(异地多活)、读写隔离(db分离)、动静隔离
  • 配流:常见于秒杀场景,为避免突发流量导致服务宕机,通过采用限流机制对整体入口流量进行控制
  • 预防:针对已预知和突发性应急的事情做好前期的预防准备工作,一旦发生不可测事情,能够及时对业务做出调整,保证核心服务的正常运转。

事发处理:

  • 监控:利用探针技术(skywalking),埋点技术,以及众多开源的监控软件
  • 报警:略… …

事中处理:

  • 降级:一般是从整体负荷考虑,就是当某个服务熔断之后,服务器下层将不再被调用,此时上层可以自己的备用信息或返回一个缺省值,这样可保证核心服务能够正常运转,但用户体验有损
  • 熔断:一般是某个服务故障或者是异常引起的,类似现实世界中的‘保险丝’,当某个异常条件被触发,直接熔断整个服务,而不是一直等到此服务超时
  • 回滚:当执行某种变更出现故障时,最为稳妥和有效的办法就是回滚。比如DB的事务回滚(DB事务机制),代码库回滚(GIT的文件版本控制),发布回滚(发布系统支持)

事后处理:

  • 复盘:回顾事件发生的前因后果,查找日常工作中待改进的地方,并为此提供相应的优化方案,且落地实施,持续优化。
  • 技能优化:需求更适合业务实际场景的技术方案,确保不拘泥也不过渡设计

什么是高并发

高并发(High Concurrency)是互联网分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计保证系统能够同时并行处理很多请求。

例如:2018年初媒体报道12306高峰时段1秒售出近700张火车票,相当于一秒钟一辆热门动车组的票被售光。日网络页面浏览量超过1500亿次,在比如:2018年天猫双11每秒订单创建峰值49.1万笔,开场21秒,天猫双11交易额超过10亿;2分05秒破100亿元;4分20秒,成交额超191亿元,已超2012年双11全天的成交额。如此繁华的场景是与服务支撑系统高性能,高吞吐的表现密切相关的,那当我们设计系统考虑并发性的时候肯定是通过对其有影响的因素方面入手的,那我们先了解一下有哪些因素会影响到一个系统的并发性:

性能因素:

  • 并发数:对网站/软件同时发起的请求数,一般也可代表实际的用户
  • 每秒响应时间:常指一次请求到系统正确响的时间(以秒为单位)
  • TPS(每秒事务数):每秒钟可以处理的事务(请求响应),大概的计算公式为:并发数/每秒响应时间=TPS
  • QPS(每秒查询数):TPS事务有读有写,而QPS指的是读取,一般情况QPS应是高于TPS的
  • IP(独立IP):一个IP可以发生多次UV和PV
  • PV(访问量):即Page View,页面浏览或点周量,用户每次新刷新即被计算一次
  • UV(独立访客):一般通过cookies记录等判断为一个独立用户,同一IP可能有多个UV(共享IP),发生多次PV
  • 流量(网络流量):请求所产生的网络流量,因为受限于带宽也是并发中的
    一个重要指

从艺术升事件,聊一聊高可用和高并发_第8张图片

解决方式概述:

  • 处理速度优化:(1) 对读次数较多的数据进行缓存化处理,并依据实际场景设计合理的缓存机制,提高缓存命中率,同时需要注意缓存的空间分配以及数据一致性问题;(2)、对数据处理及时性要求不高的信息可采用消息或调度处理方式,例如:通过MQ,调度机制实现业务的有效处理。(3)、合理编排多任务执行顺序,船型任务可进行并发性异步编排执行从而减少整体响应时间。
  • 增加处理手段:(1)、线程池多线程处理 (2)、扩容:水平扩容,垂直扩容
  • 队列:redis,rocketMQ,activeMQ,rabbitMQ … …

今天我们对后面的学习进行了一个小的规划,同时对概念性的知识做以说明,从下一期开始我们将逐步学习相关的实现和处理方法,谢谢关注!


我的公众号欢迎订阅

从艺术升事件,聊一聊高可用和高并发_第9张图片

你可能感兴趣的:(架构)