一、高可用:


举例子说,系统的可用性要达到4个9(99.99%)那么根据上图可以看到是不能一年内超过53分钟。这样看的话确实很难达到。但是公式上说了是计划之外的。相当于是意外停机,而不是上线部署,系统切换这种正常停机。
计划外停机和正常运行着两个状态在不同场景下定义不同,系统的一部分非关键功能降级,对整个系统来说算计划外还是正常?降级持续或累计多久才算非正常停机?我们可以再系统的SLA(service level agreement)服务等级协议中定义描述。
那么备战中如何在SLA定义好的情况下(吞吐量和响应时间)去考虑系统的可用性则需要涉及到多个因素,比如可扩展性、网络状况、容灾备份以及系统的实现方式等。

高可用HA(High Availability)是分布式系统架构设计中必须考虑的因素之一,它通常是指,通过设计减少系统不能提供服务的时间。
方法论上,高可用是通过冗余+自动故障转移来实现的。
整个互联网分层系统架构的高可用,又是通过每一层的冗余+自动故障转移来综合实现的,具体的:
(1)客户端层到反向代理层的高可用,是通过反向代理层的冗余实现的,常见实践是keepalived + virtual IP自动故障转移。
(2)反向代理层到站点层的高可用,是通过站点层的冗余实现的,常见实践是nginx与web-server之间的存活性探测与自动故障转移。
(3)站点层到服务层的高可用,是通过服务层的冗余实现的,常见实践是通过service-connection-pool来保证自动故障转移。
(4)服务层到缓存层的高可用,是通过缓存数据的冗余实现的,常见实践是缓存客户端双读双写,或者利用缓存集群的主从数据同步与sentinel保活与自动故障转移;更多的业务场景,对缓存没有高可用要求,可以使用缓存服务化来对调用方屏蔽底层复杂性。
(5)服务层到数据库“读”的高可用,是通过读库的冗余实现的,常见实践是通过db-connection-pool来保证自动故障转移。
(6)服务层到数据库“写”的高可用,是通过写库的冗余实现的,常见实践是keepalived + virtual IP自动故障转移。

二、可扩展性

扩展性分为两种:1-水平扩展、2-垂直扩展
1-水平扩展:一般大家会说堆机器,增加资源的节点数,使负载均衡到每个节点,以应对高流量下的请求。
2-垂直扩展:资源有限的情况下,以及高配置的服务器都需要考虑垂直扩展方案。可以对比应用12因素来参照


三、灾备

新的机器资源除了用于扩容,还有个最大的用途就是增加灾备能力。现在都是异地多活,多机房部署,要能保证一个机房有故障的情况下,系统依然高可用。在备战期间,会进行全链路压测,将流量入口全部切换到一个机房,对数据库进行主备切换等,来验证和查找整个系统的瓶颈以提升整个系统的灾备的能力。
记住一点,添加机器也不是万能的,优化代码逻辑,优化架构设计会从根本减少很多问题。

四、性能、柔性和鲁棒性

对于大促的应对,首先会对应用架构进行升级,对于主要流量点进行着重关注,可以考虑缓存和异步化的方式来提高性能。
如何理解柔性和鲁棒性?
鲁棒性强调的是系统结实,不容易出问题,柔性强调出现故障后快速隔离影响和快速修复的能力。
鲁棒性可以通过限制上线的数量以及加强对紧急上线的审批力度来控制。
柔性可以在系统流量的高峰期,对所依赖的重要性不高的服务进行降级,对所依赖响应能力差的服务进行熔断,对多个已来访进行隔离实现舱壁的效果,也可以不断优化自动化程度来提高柔性。

五、安全

对于黑客不明攻击,以及非法请求需要进行合法校验。大的流量促销入口,可以限制IP,限制账号,限制时间,限制数量,限制接口的同一用户调用次数来控制非法恶意攻击请求。比如短信验证码,现在增加图片识别滑动、拖动、识图等功能来增加黑客攻击难度。保证系统安全。
京东利用了SDL+安全开发控制,基于京东大促数据墙建立了保障指挥系统,对全站HTTPS进行推广和优化,并通过DDoS攻防平台进行攻击流量的集中监控来有效保证安全。

六、网络

网络隔离指的是对测试环境,性能压测环境,UAT环境,生产环境进行隔离,即相应环境下的服务器是不能互通的,这样可以保证一个干净的网络环境,这样优先去掉了外界的干扰因素后面出现问题也便于排查。
做系统预案的时候主要包括两个部分,一个是技术预案,一个是业务预案。技术预案一般是自动容错,故障自动转移,主备自动切换,备用的网络专线,备用域名,备用服务器,数据堆积处理,上下游限流处理, 数据库阻塞、死锁、连接数满等等等等,这个后面专门弄个文章来讨论下。而业务预案往往被忽视,甚至没做,比如你的电商平台下有10家物流供应商,一旦其中的一个或者多个出现异常导致无法作业,这时候应该可以自动切换选择不同的供应商,或者调整权重分配。

七、捣乱猴子(故障)演练

故障演练也包括两部分,一个是正常的故障演练,比如数据库主备库宕机自动切换演练,nginx主备切换演练,redis节点宕机切换演练,应用宕机演练等等。另外一个就是破坏性的演练,项目在不发通知的情况下秘密成立一个破还演习小组,在任何时间以任何手段对系统环境进行破坏,其中包括网络,中间件,应用,数据库等等,比如让网络突然掉线或者应用集群破坏50%,这个可以考验整个项目团队的应急能力和整个系统恢复所需要的时间以及看出更多的漏洞,最后项目团队做总结。

八、集中办公

集中办公一般在大促前的两个礼拜就开始了,项目的核心人员包括核心开发人员,架构师,DBA,网络工程师等到一个相对独立封闭的环境进行办公,这样做的主要目的就是保证这些人可以在一个相对安静的环境下更专注的去寻找系统中的一些漏洞和系统优化,以及对于系统问题及时响应。

九、预防大于一切-值班安排

系统的每个模块都要保证至少有2~3个人是精通的,这样一旦出现问题可以迅速的进行排查修复,而且安排7X24个小时白夜班轮岗。

架构师---如何应对双十一和618大促相关推荐

  1. 【恩墨学院】京东618大促网关承载十亿调用量背后的架构实践

    京东618大促网关承载十亿调用量背后的架构实践 王栋 京东618大促,其网关承载了几十亿的流量和调用,在这种情况下,网关系统必须保证整个系统的稳定性和高可用,保证高性能和可靠,以支撑业务.他们面临的是 ...

  2. 为应对618大促期间快递压力 达达上线“苍穹”大数据平台

    [TechWeb]6月10日消息,为了应对618大促期间快速增长的快递单量,达达在技术侧进行了全面升级.其中,"达芬奇"智能运力调控系统升级加入智能预合单功能,并上线了" ...

  3. 解密京东618大促数据库运维的攻守之道

    来自:DBAplus社群 本文根据高新刚老师在[2019 DAMS中国数据智能管理峰会]现场演讲内容整理而成. 讲师介绍 高新刚,京东数科数据库团队负责人,负责京东数科数据库平台的管理维护工作,带领团 ...

  4. 618 大促背后的淘系前端技术体系

    简介:2020年618大促已经过去,作为淘系每年重要的大促活动,淘系前端在其中扮演着什么样的角色,如何保证大促的平稳进行?又在其中应用了哪些新技术? 淘系技术特此推出「618 系列|淘系前端技术分享」 ...

  5. 全栈出征,京东技术基石如何为“618”大促护航?

    6月18日24时,2020年的618大促落下帷幕,京东618大促期间累计下单金额达到2692亿元,创下新纪录. 与往年不同,今年618是京东核心业务全面上云的第一年,也是京东融合人工智能.云计算.物联 ...

  6. 这套Java调优方案太顶了!同时支撑10个618大促都不是问题

    为了有条不紊的化解订单洪峰,每年京东 618 大促之前,都会对系统进行一些优化和测试,以保证订单系统.库存系统.结算系统等正常运转. 数据库系统作为重要的基础设备,就好比人的大脑记忆系统,没有了数据库 ...

  7. java压测请求线程数_程序员撕开京东 618 大促压测的另一面 | 原力计划

    作者 | 天涯泪小武 责编 | 王晓曼 出品 | CSDN博客 前天618大促演练进行了全链路压测,在此之前刚好我的热key探测框架也已经上线灰度一周了,小范围上线了几千台服务器,每秒大概接收几千个k ...

  8. 程序员撕开京东 618 大促压测的另一面 | 原力计划

    作者 | 天涯泪小武 责编 | 王晓曼 出品 | CSDN博客 前天618大促演练进行了全链路压测,在此之前刚好我的热key探测框架也已经上线灰度一周了,小范围上线了几千台服务器,每秒大概接收几千个k ...

  9. 免费下载电子书!618大促背后前端代码如何智能生成?

    简介: 你关心玩法,我关心技术!作为淘系每年重要的大促活动 618 是如何保证平稳进行的?七大章节全方位展示 618 中的前端身影!另附 6000+ 字图文版前端学习秘籍和面试官直达简历投递地址,还不 ...

最新文章

  1. [jQuery]使用jQuery.Validate进行客户端验证(高级篇-下)——不使用微软验证控件的理由...
  2. OpenCV自适应阈值化函数adaptiveThreshold详解,并附实例源码
  3. sublime插件开发教程(附源码)
  4. UGUI 锚点设置为四方扩充模式然后设置局部坐标为0将出现什么问题
  5. Vue.js 极简小例:数值计算、千米换算为米、九九乘法表、循环
  6. CentOS 安装WildFly Jboss10
  7. ES6 的遍历器接口 Iterator
  8. ichartjs android,在android上动态实现ichartjs的3D柱形图
  9. 我们如何通过 AI 模拟实现属于自己的清明上河图?
  10. python基础知识2——基本的数据类型——整型,长整型,浮点型,字符串
  11. 如何查找论文是否被SCI,EI检索
  12. python软件长什么样子图片_使用Python把多个图片拼接成为长图
  13. redisson分布式锁实现原理
  14. 电子厂里撂了挑子,我默默自学起了Android|2021年中总结
  15. 三维点云处理-1.2主成分分析PCA
  16. 终结HashMap面试?我是谁?我在哪
  17. Linux命令--arp--使用/实例
  18. 实验1 进程管理实验-计算机操作系统
  19. 为发烧而生:个人电脑诞生记
  20. 查看设备串口列表和串口上电使能

热门文章

  1. 7.2 BPMN Scope
  2. Goby 漏洞更新 | 速达软件 V.NET home 文件 存在 Struts2 代码执行漏洞
  3. nginx限制ip访问频率
  4. webp格式图片怎么转换成jpg?
  5. RK3368 8.1 HDMI声音调节只有最大和最小两个等级
  6. paper阅读笔记(ABSA)(LCF-BERT):LCF: A Local Context Focus Mechanism forAspect-Based Sentiment Classifica
  7. 数学基础从高一开始3、集合的基本运算
  8. html 隐藏域 用什么标签,html中隐藏域hidden的做用介绍及使用示例
  9. 金指拓客助力实体门店在短视频低成本精准拓客 打造同城私域号
  10. c# Winform 程序嵌入PPT