以阿里云全球故障为例,聊聊如何保障 Auth 服务的 SLA

在刚刚过去的“双十一”购物狂欢季,阿里云经历了一次大规模故障,导致阿里系产品集体中断服务。据报道,11 月 12 日,淘宝、钉钉、闲鱼、阿里云盘等阿里系产品出现无法使用的问题, “阿里全系产品崩了” 的话题迅速引发众多关注。此次故障不仅阿里自家的产品受到影响,据天眼查数据,阿里云的企业用户超过 300 万家,这些客户由于云服务不可用,业务运营受到严重影响。

故障的地域范围广泛,覆盖了包括华北、华东、华南、中国香港以及国际地区在内的多个地区。根据阿里云官网的官方通告,故障于 11 月 12 日 17:44 开始被阿里云监控系统检测到,直到 21:11,所有受影响的云产品最终恢复正常,整个事故过程持续了超过 3 个小时。

01.故障原因猜测

什么样的故障能致使阿里云全线服务不可用,且故障范围覆盖全球各个区域,故障恢复长达 3 个小时?

由于故障涉及到多个机房和区域,不太可能是存储或网络等基础设施的问题,因为这些通常采用多可用区部署。

现象主要表现为:被管控的资源,如云服务器 ECS 和云数据库 RDS,仍然可以继续运行,但用户无法通过控制台或API 进行管理操作。因此极有可能是 Auth 这样的一种全球性的基础服务。
虽然以上分析仅为推测,并不代表确切的故障原因,但不少业内专业也给出了类似的推测:

图片来源:DevOpSec

02.什么是认证服务?

认证服务( Auth 服务)是一种用于身份认证和授权的基础服务。它在许多系统和应用程序中起着关键作用,确保只有经过授权的用户可以访问受保护的资源和功能。大家常用的以下功能,都属于认证服务的范畴:身份验证、访问控制、用户管理、单点登录(SSO)、安全审计。作为系统的基础安全服务,它是建立安全、可信赖的系统和保护敏感资源的关键组成部分。

03.如何保证 Auth 服务的 SLA ?

对于如此重要的基础安全服务,其企业相关负责人如何提高企业认证服务的 SLA ,避免"全球性故障"?其使用者应该如何评估及挑选优质的认证服务厂商?围绕 "高 SLA (Service Level Agreement )的认证服务",其核心指导思想为:防治结合。

  • :在故障真的发生的时候,能及时收到故障通知,采用对应的降级策略,防止由于认证服务不可用造成全线服务不可用的大故障。
  • :在基础设施层面,保持云中立、保证异地多活、提升系统可观测性,拥抱容器化技术及微服务治理,从而全面提升整个系统的 SLA ,避免出现“短板效应”。下面将以 Authing ( Authing 就是身份云) 为例,为大家具体讲解“防治结合”的实施落地方案。

防:事件通知驱动 + SDK 快速集成 + 启动降级措施

为帮助认证服务使用方实现 “在故障发生时,能及时收到相关事件,采用降级策略” 这一防御目标,其解题思路为:通过 SDK 方式快速接入认证服务,减少研发成本的同时,通过让 SDK 订阅 Authing 服务端的相关故障事件,及时采取降级措施。

  • 多语言 SDK / API / 认证组件

通过丰富且兼容多种开发语言、多种开发框架的 SDK / API / 认证组件,可让用户 5 行代码快速接入认证服务,让其应用服务具备账号密码认证、短信验证码认证、社交账号登录、企业账号登录、单点登录 SSO、多因素认证 MFA 等安全能力。

  • 事件驱动的云原生身份平台

事件表明状态发生变化,即:某事已经发生。事件用于向相关方发出状态发生变化的信号。在本案例中,事件即为“故障事件”;

Authing 3.0 是以事件驱动(EDA)架构重塑的云原生身份平台,通过事件驱动架构大幅提升了平台的响应速度、可扩展性和开发者体验,并能够实现更加及时的安全事件响应和更加卓越的客户体验。

使用 Authing 的事件相关 SDK,开发者可以订阅 Authing 平台产生的事件,当事件发生时,Authing 服务会实时把事件的类型及当前事件关联的数据以 WebSocket 方式以 JSON 的数据格式主动推送给开发者。也可以在 Authing 控制台添加自定义事件,然后使用事件 SDK 向 Authing 服务推送自定义事件,用来触发特定的工作流程。式将事件内容以 JSON 格式进行推送。

借助事件驱动变化的理念,用户可以订阅“认证服务故障事件”,Authing SDK 在收到该事件后可根据用户的配置和期望方式,实施降级措施,避免全服不可用的故障。

  • 降级措施

降级措施是指在某种情况下,为了保证系统的可用性或确保某项功能的正常运行,采取的临时替代方案或备用方案。当系统或功能遇到问题或无法以预期的方式运行时,降级措施可以帮助系统继续正常运行,但会以降低的性能、功能或安全性为代价。

在本案例中,为了能让系统正常运行,将会牺牲较小部分的安全性。其中一种实现方式为:在接收到“故障”事件后,通过忽略本地缓存的认证 Token 的过期时间,持续提供认证能力;待收到“故障恢复”的事件后,再恢复到常规的更安全的认证方式上,即重新申请 Token 并验证 Token 的过期时间。

在主流的认证方式及协议,如 OAuth 2.0、OpenID Connect、单点登录等,都会使用 JWT(JSON Web Token)用于在不同实体之间安全地传输信息。客户端,例如浏览器等,会将 JWT 进行缓存,以便在后续的请求中使用。JWT 会有过期时间,用于指定 JWT 的有效期。在验证 JWT 时,依赖方通过不检查 JWT 的过期时间,持续使用本地缓存的 JWT 来提供认证服务,从而达到降级的目的。

治:云中立 + 异地多活 + 可观测性 + 微服务治理

尽管“防”的手段,可以通过牺牲部分安全性或功能来换取系统可用性,但其治本之道还是需要从基础建设、服务治理、可观测性的角度提升整体认证服务和系统的可用性,从而提升整体的 SLA。

  • 云中立

系统做到云中立,才能保证不被某一朵云厂商绑定,拥有了选择权,促进数据流动和互操作性。一旦出现某一朵云服务故障的时候,可以迅速将流量切到其他云上提供服务,缩短不可用时间。

为了让系统做到云中立,应该尽可能使用各个云的通用服务,减少对某一朵云的服务依赖;在设计服务架构时,最大程度去兼容用户私有云、各类公有云的云环境。通过成熟 Kubernetes 容器化技术,使整套服务体系同时支持公共云、混合云和私有云部署,并且达到分钟级别弹性扩容,最大可支持亿级别用户认证访问场景。

Authing 使用 Kubernetes 作为容器编排和管理平台,用于在跨多个主机和集群中自动化部署、运行、编排和管理容器化应用程序。同时在数据存储层面,选择通用标准的数据库、缓存、KMS、消息队列、日志等云服务,并在架构设计时,对各个云服务进行适配,从而达到灵活配置兼容各种云服务、多云部署、故障时能及时切换、系统云中立等目标。其架构如下图所示:

  • 异地多活

异地多活、多数据中心、两地三中心等,每当提到这些主流措施,其本质在于:增加冗余副本服务,用于在故障发生时,迅速使用副本服务提供系统可用性。地理位置、网络连接、副本个数和复杂性、数据同步复制、数据安全和合规性、SLA 等级、成本等是在设计异地灾备时,要重点考虑和平衡的。

Authing 通过多云部署 + 多 AZ (Available Zone) + 智能 DNS 的方式,实现异地多活、国内外多 Region 部署、故障时自动切流的方式,提升系统整体的可用性和对客户的 SLA。

  • 可观测性

可观测性(Observability)是指在复杂系统中全面了解、理解和监测系统的运行状态、行为和性能的能力。它是一种系统设计和运维的理念,旨在提供对系统内部和外部的可见性,以便快速识别和解决问题,优化性能,并提供对系统行为的深入洞察。

在本案例中上述的“事件通知驱动”从而实施降级措施的基础建设重要部分,即是系统的可观测性。要做的系统的可观测性,需要注重考虑:

1. 监测:通过收集、记录和分析系统的指标、日志和事件,实时监测系统的运行状态和行为。
2. 日志管理:管理和分析系统的日志数据,以了解系统的运行过程、事件和错误。
3. 追踪和分布式跟踪:通过跟踪请求在系统中的流经路径,了解分布式系统中不同组件之间的相互作用和性能延迟。
4. 管理:捕获和处理系统中的事件,如警报、通知和异常情况。
5. 可视化:通过仪表板、图表和可视化工具,将系统和应用程序的指标、日志和事件以可视化的方式展示出来。

Authing 基于对上述理念的理解,在公用云部署架构、私有化部署架构中都进行了考虑和设计,通过 Tracing、Metrics、Logging 的采集,进行事件管控,并及时将变更推送到客户端、服务端,从而启动相关策略的变化。此外,可视化报表大屏可帮助客户持续、及时地了解到一线的系统可用性指标情况、认证链路追踪、系统性能指标变化等,从而做到“心知肚明”,“及时响应”。

  • 微服务治理

微服务治理(Microservices Governance)是指在微服务架构中对微服务进行管理和控制的一系列实践和策略。由于微服务架构的复杂性和分布式特性,需要一种有效的方式来确保微服务系统的可靠性、可扩展性和一致性。重要要考虑以下方面:

1. 服务发现和注册:可以帮助服务在集群中自动注册和发现其他服务,并提供负载均衡和故障转移的能力。
2. 服务通信和协议:需要定义和管理服务之间的通信协议、消息格式和接口规范,以确保服务之间的互操作性和一致性。
3. 服务网关:服务网关是微服务架构中的入口点,可以提供统一的访问接口和安全性保护,并隔离客户端与后端微服务之间的直接通信。
4. 服务监控和可观测性:通过监控指标、日志和分布式追踪等工具,可以实现对微服务的实时监控和故障排查。
5. 服务安全和访问控制:包括身份验证、授权、数据加密和审计等安全措施,以保护服务免受恶意访问和攻击。
6. 服务版本控制和演化:需要管理服务的版本控制、发布策略和回退计划,以确保服务的无缝演化和兼容性。
7. 服务质量和 SLA 管理:包括定义和监测服务的性能、可用性和可靠性等指标,并确保满足业务需求和用户期望。

微服务治理是一个主流且较为成熟服务治理领域,Authing 也是按照上述的核心点进行具体的服务治理落地;但由于各个业务系统对微服务治理的需求和期望各有不同,这里不再具体阐述。

阿里云全球故障事件带来的巨大影响,又一次给行业的从业者、系统设计人员、企业服务采购者敲了警钟。虽然官方并未公布其故障背后的原因,但认证服务,作为最基础的门户安全服务,其 SLA 的高保证能最大程度避免这样的“全线”、“全球性”故障。本文通过“防治结合”的理念详细阐述了如何在认证服务领域,通过事件驱动设计理念、云中立理念、异地多活的措施、可观测性的提升、微服务治理的策略等具体方式提高系统的可用性、为用户承诺最高水平的 SLA。其设计理念也可以应用到其他服务领域。在具体落地时,还需要考虑具体 SLA 需求和成本的平衡,最终实现业务场景驱动技术迭代,技术迭代促进和保障业务场景。

作者:潘娟,Apache Member & Incubator Mentor,Apache ShardingSphere PMC,AWS Data Hero,中国木兰开源社区导师,腾讯云 TVP。曾负责京东数科数据库智能平台的设计与研发,现专注于分布式数据库 & 中间件生态及开源领域。被评为《2020 中国开源先锋人物》,2021 OSCAR 尖峰开源人物。CSDN 2021 年度 IT 领军人物,2022 年在 ICDE 发表论文 “Apache ShardingSphere:A Holistic and Pluggable Platform for Data Sharding”。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/145969.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【仙逆】藤化元嗜杀王林族人,白发暴怒加持,王林觉醒极境杀戮

Hello,小伙伴们,我是小郑继续为大家深度解析国漫资讯。 深度爆料,《仙逆》第十话最新剧情解析,藤化元因王林杀死藤厉并夺取其修为而大怒,他发誓要追杀王林到天涯海角,将其千刀万剐。他召集了门人弟子,下达了…

Nacos漏洞复现合集

本文主要复现nacos的一些经典漏洞,既是分享也是为了记录自己的成长,近期会持续更新。 1. QVD-2023-6271 Nacos身份绕过漏洞 1.1 漏洞级别 :高危 1.2 漏洞描述:低版本的Nacos存在默认的scertkey在未更换的情况下可以生成任意的可…

Duplicate keys detected: ‘0‘. This may cause an update error

Duplicate keys detected: ‘0’. This may cause an update error.当遇到该节点内容更新时,会因为重复的key导致无法更新。 该错误,是因为同级节点下存在两个由0开始的key,当遇到该节点内容更新时,会因为重复的key导致无法更新。…

C语言--每日五道选择题--Day12

第一题 1、如下程序的功能是&#xff08; &#xff09; #include <stdio.h> int main() {char ch[80] "123abcdEFG*&";int j;puts(ch);for(j 0; ch[j] ! \0; j){if(ch[j] > A && ch[j] < Z){ch[j] ch[j] e - E;}}puts(ch);return 0; } A…

前端学习笔记--面试题系列总结

event loop它的执行顺序&#xff1a; 一开始整个脚本作为一个宏任务执行执行过程中同步代码直接执行&#xff0c;宏任务进入宏任务队列&#xff0c;微任务进入微任务队列当前宏任务执行完出队&#xff0c;检查微任务列表&#xff0c;有则依次执行&#xff0c;直到全部执行完执…

并发编程产生的根本原因和C#怎么处理并发问题?

并发编程产生的根本原因和C#怎么处理并发问题&#xff1f; 前言 对于现在很多编程语言来说&#xff0c;多线程已经得到了很好的支持&#xff0c; 以至于我们写多线程程序简单&#xff0c;但是一旦遇到并发产生的问题就会各种尝试。 因为不是明白为什么会产生并发问题&#…

ubuntu中使用 vscode 连接docker开发环境

文章目录 ubuntu中使用 vscode 连接docker开发环境步骤一&#xff1a;安装 Remote Development 插件步骤二&#xff1a;连接远程环境步骤三&#xff1a;开发 问题解决参考连接 ubuntu中使用 vscode 连接docker开发环境 Remote Development 是一个 Visual Studio Code 插件&…

炒现货黄金怎么做?挖掘黄金的投资机会

黄金一直以来都是备受投资者追捧的避险资产&#xff0c;其价值和潜力是无法忽视的。而炒现货黄金作为一种快速获取收益的投资方式&#xff0c;备受关注。那么&#xff0c;如何在炒现货黄金中找到投资机会呢&#xff1f;为您详细解析&#xff0c;简单易懂&#xff0c;帮助您开启…

树的概念及结构|树的三种表示方法

前言 以前我们学的线性结构是一对一的线性关系&#xff0c;但现实中&#xff0c;还有一对多的情况要处理&#xff0c;那就是树形结构。今天我们将学习树的概念及结构、和树的三种常见表示方法。 一、树的概念及结构 1、树的概念 树是一种非线性的数据结构&#xff0c;它是由n…

MySQL--主从复制和读写分离

MySQL主从复制和读写分离相关知识 1.什么是读写分离 读写分离&#xff0c;基本的原理是让主数据库处理事务性增、改、删操作( INSERT、UPDATE、DELETE) &#xff0c;而从数据库处理SELECT查询操作。数据库复制被用来把事务性操作导致的变更同步到集群中的从数据库。 2.为什么要…

设备管理平台能做什么?企业如何做好设备维护管理工作?

在当今高度数字化的时代&#xff0c;企业运营离不开各种设备的支持。如何确保这些设备高效运转&#xff0c;降低故障率&#xff0c;成为了企业运营的关键问题。为此&#xff0c;设备管理平台应运而生&#xff0c;它借助数字化、移动互联网等技术&#xff0c;为企业提供全方位的…

劲升逻辑携手山东电子口岸及青岛港,赋能山东港口数字化建设

合作意向书签署现场 2023 年 11 月 11 日&#xff0c;中国山东——跨境贸易数字化领域的领导者劲升逻辑分别与山东省电子口岸有限公司&#xff08;简称“山东电子口岸”&#xff09;、山东港口青岛港子公司青岛港国际集装箱发展有限公司在新加坡-山东经贸理事会&#xff08;简…

【博士每天一篇文献-算法】Learning without forgetting

阅读时间&#xff1a;2023-10-29 1 介绍 年份&#xff1a;2016 作者&#xff1a;李志忠; 德里克霍伊姆&#xff0c;伊利诺伊大学 期刊&#xff1a;IEEE transactions on pattern analysis and machine intelligence 引用量&#xff1a;3353 提出一种名为"无忘记学习&quo…

在Qt设计师(Qt Designer )控件面板加入自定义控件

目录 1. 问题的提出 2. 本次开发环境说明 3. 具体实现 4. 注意的问题 5. 参考链接 1. 问题的提出 在Qt开发中&#xff0c;经常利用Qt设计师&#xff08;Qt Designer &#xff09;把界面设计好&#xff0c;将界面放到ui文件中&#xff0c;将逻辑处理放到cpp文件中&#xff…

Docker - 网络

Docker - 网络 理解Docker0 # 我们发现这个容器带来网卡&#xff0c;都是一对对的 # evth-pair 就是一对的虚拟设备接口&#xff0c;他们都是成对出现的&#xff0c;一段连着协议&#xff0c;一段彼此相连 # 正因为有了这个特性&#xff0c;evth-pair 充当一个桥梁&#xff0…

图片高清重建

图像超分辨率重建&#xff08;super resolution,SR&#xff09;是指利用计算机将一幅低分辨率图像&#xff08;low resolution,LR&#xff09;或图像序列进行处理&#xff0c;恢复出高分辨率图像&#xff08;high resolution&#xff0c;HR&#xff09;的一种图像处理技术。简单…

腾讯云4核8G服务器CVM标准型S5实例租用五年价格表

腾讯云服务器网整理五年云服务器活动 txyfwq.com/go/txy 配置可选2核4G和4核8G&#xff0c;公网带宽可选1M、3M或5M&#xff0c;系统盘为50G高性能云硬盘&#xff0c;标准型S5实例CPU采用主频2.5GHz的Intel Xeon Cascade Lake或者Intel Xeon Cooper Lake处理器&#xff0c;睿频…

【C#学习】button:只显示图片

第一步&#xff1a;设置按钮背景图片&#xff0c;并且图片随按钮大小变化 第二步&#xff1a;设置按钮使之只显示图片 button1.FlatStyle FlatStyle.Flat;//stylebutton1.ForeColor Color.Transparent;//前景button1.BackColor Color.Transparent;//去背景button1.FlatAppe…

修改Openwrt软路由的web端口

如何修改openwrt路由器的web访问端口号&#xff1f; 在OpenWrt路由器上&#xff0c;如何修改Web访问端口号&#xff0c;通常涉及到修改HTTP服务器的配置文件。默认情况下&#xff0c;OpenWrt使用的HTTP服务器是uHTTPd。 以下是修改Web访问端口号的步骤&#xff1a; 一、通过…

Meta开源支持1000多种语言的文本转语音与语音识别大语言模型

据不完全统计,地球上有超过7000多种语言,而现在的大语言模型仅仅只涉及到了主流的100多种语言。相对全球7000多种语言来讲,这仅仅只是其中的一小部分。如何让全球的人获益,把大语言模型扩展到更多的语言上,一直是大语言模型研究的重点。Meta发布了涵盖 1406 种语言的预训练…