阿里妹攻略:在这场抗击新型冠状病毒肺炎的战斗中,普通人能做些什么?也许“宅在家里”是现在大多数人可以做出的重要贡献之一。在这些深沉的“宅”时代,在手机或电脑上玩游戏、追剧,成了很多人暂时忘记现实的“良药”。但!眼看就要得分的比赛突然崩盘,关键剧情突然中止。近日,“某应用崩盘”频频上热搜,带来了大多数网友都能体会到的痛。网友们都在催促程序员赶快上班。事实上,疫情期间,在线流量激增,很多在线应用都面临着巨大的挑战……要解决在线应用在大流量和突发流量冲击下频繁闪退的问题,首先需要考察企业当前的IT架构是否能够支撑未来的业务发展。阿里巴巴在多年双十一高并发、高可用、高客户体验要求的背景下,积累了相应的技术体系,赋能罗辑思维等客户,帮助其实现全链路压测。本文从高用户和突发高流量场景中梳理真实案例,发布阿里在构建高可用架构过程中的实战笔记,希望能帮助更多企业从容应对接下来的高流量场景。为什么你的应用程序崩溃了?一个非常复杂的服务器在我们日常生活中是比较稳定的,因为app端是比较稳定的。“崩溃”一般发生在看不见的“服务器”(或云)上,而这个服务器有多复杂?以目前比较成熟的云架构为例,阿里云有云计算基础、安全、企业应用三大类近200种云产品可以用来构建在线服务。而我们会涉及到的从客户端(App/PC)到服务端的关键节点包括CDN、动态加速、高防、应用防火墙、4/7层负载均衡、前后端服务集、缓存、数据库存储、中间软件、基础设施层等,整个链路都面临着不确定性,比如负载均衡中影响流量的产品规格有5个,后端服务的服务规模更是复杂困难来评估和检查。任何一个节点出现问题都会导致服务不可用,给终端用户一种“崩溃”的感觉。私有云、混合云、自建IDC都存在同样的问题。如何有效、全面地测试服务器的吞吐能力,发现所有问题,甚至做好容量规划,具备对高峰流量的控制和调度能力,是所有企业需要思考和应对的。没有提前规划的服务能力如果应用没有提前规划自身的服务能力,没有提前规划关键节点,则没有弹性扩容、在线保护、断路器降级等在线应急措施。当业务出现突发事件时,难以保证核心接口能够稳定对外提供服务。一旦应用“崩溃”,很多企业都无法采取正确的措施。仓促扩张解决不了问题,反而会带来更多难以预料的问题,导致“崩溃”进一步恶化。除了问题发现、容量规划、流量控制、断路器降级导致的“崩溃”,运维状态的隐患,如故障影响面、配置一致性、监控和根因分析相关工具,以及复杂人事组织的高可用如果没有足够的演练和验证方案,也会导致你的应用在关键时刻“崩溃”。阿里巴巴工程师高可用架构搭建笔记接下来,我们将以笔记的形式与大家分享阿里巴巴工程师在高可用架构搭建实践中积累的真实经验。架构设计首先要实现架构可视化。利用AHAS的架构感知,可以全面了解云上的系统架构,直观呈现云资源、容器、应用之间的层次依赖关系。服务器、存储和网络是现代云平台的基础设施。随着云战略的推进,越来越多的企业在云平台上构建业务、服务和系统。开源软件和云服务的多样性、开发语言的异构性以及企业IT团队组织和能力的差异都增加了标准化的复杂性。架构感知功能应运而生。通过对操作系统和第三方标准接口的采集和分析,捕获进程级调用关系,利用特征库算法识别进程使用的技术组件。最后,在服务器、容器和进程三个维度上,以可视化的方式展示了应用架构,给用户一个全面清晰的云架构图。围绕这个基础视图,将不断衍生出云资源、容器、应用架构的多维架构视图,以及站点搬迁、重构、资产管理等场景化视图,真正实现CMDB的可视化并驱动问题发现,助力业务增长,释放更多维度红利上云。至于治强弱依赖,因为强依赖本身就意味着万事兴旺,万事俱损。结合AHASSDK的引入和预嵌入,一旦平台的最大吞吐量达到瓶颈,除了第一层防护外,还可以预先标记门户或Web应用的峰值流量限制作为弱依赖。服务可以顺利下线,从而达到节省更多资源保证核心计算能力的目的,同时也可以去除非核心对核心服务的影响,最终取得两者之间的平衡通过合理高效的服务降级,最大限度地降低业务和成本。使用AHASSDK后,在编码时,只需要关心如何定义资源,即需要保护哪些方法/代码块,而不需要关心如何保护这个资源。然后通过添加规则来保护资源,规则立即生效。容量规划和外网模拟压测:首先,PTS可以高效快速的构建同模型同量级的业务流量。直接100%兼容开源主流JMeter脚本。对于没有现成脚本的情况,可以使用PTS自研视觉交互进行0代码编排。编排完成后,从公网各区域运营商发起,真实模拟特定业务场景下的外网流量,对云上或云下的整体架构进行全面验证和检测(从网络接入应用服务)然后是存储层和基础设施的瓶颈和问题)。全链路压测:更进一步,如果想在生产环境中直接准确的衡量业务容量,可以使用PTS相关的解决方案,让生产环境具备识别压测流量并将其路由到指定影子的能力储藏区域。准备好存储区,然后在同生产环境下对基础数据同规模的业务流进行压测,最终实现对线上生产环境的精准测算能力。当然,由于试压流量数据已经隔离,可以方便安全的进行清洗维护。业务监控面对复杂的应用环境和快速增长的业务,ARMS可以帮助用户在各种环境下快速构建完善的监控体系,实现从页面到数据库,从应用性能到基础资源,从IT端到端的监控对业务终端监控。减少故障排查时间,降低跨部门沟通成本,最终减少因故障和体验不佳给企业带来的损失。运行态或已有应用的在线管控,可以使用AHAS探针形式(AHASSDK之外更轻量级的解决方案),在不修改代码的情况下,对业务高峰和消息场景进行强流量控制。对于结构复杂的,可以快速降级系统内外的不稳定因素,保持业务稳定。同时还具有单机过载保护能力(根据RT动态调整入口流量)。有时,系统来不及进行压力测试或不知道配置。单机智能过载保护是规则设定时非常好的功能和方法。以上都可以在运行状态和运维端进行引入和控制。对于在线配置项和业务属性值,通过AHAS交换模块的轻量化方案进行安全统一管控,该部分能力即将开放,敬请期待。日常巡检风险提前暴露,通过Advisor智能顾问对云上主要云资源进行全面巡检和风险识别。规则来源于阿里云一线TAM同学面向客户的技术体系积累,以及阿里生态中SRE的最佳实践。融合。基于上述架构图和用户输入,可以做出更深层次的应用/业务架构检查和建议。归一化演练AHAS的故障演练模块遵循混沌工程实验原理,融合了阿里巴巴内部实践的经验。容器服务和云平台四层进行超多维度的编排和定制,产品也提供了丰富成熟的故障经验库。从而帮助用户实现包括架构、业务、人员在内的全方位高可用提升。故障演练在依赖治理、业务连续性提升、故障修复验证等场景中发挥着巨大的作用。工具清单1.应用高可用服务AHAS是一款专注于提高应用高可用的云工具产品。提供自动应用架构检测、故障注入高可用评估、一键流控降级等功能,可快速低成本升级应用。可用性。https://www.aliyun.com/product/ahas2。性能测试PTS是一个基于云的测试工具,适用于所有技术背景的人。不同于传统工具的复杂性,PTS提供了性能测试、API调试、监控等多种能力,基于互联网的交互。自研和开源适配功能均可轻松模拟任意规模用户接入服务的场景,随时发起任务,省去繁琐的建设和维护成本。并与监控、流控等兄弟产品紧密结合,提供一站式高可用,高效检测和管理业务性能。https://www.aliyun.com/product/pts3、SmartAdvisorAdvisorIntelligentAdvisorAdvisor根据用户情况,结合阿里云长期客户端最佳实践,基于TAM核心基础能力(TechnicalAccountManagement)服务系统,为用户提供云资源、应用架构、业务性能、安全等方面的全面诊断和优化建议。现在,越来越多的阿里云云原生客户可以通过Advisor便捷地享受专业的TAM基础服务,更好地用好云。同时,我们也将围绕Advisor为有相关需求的客户提供专项、深度的TAM服务。https://www.aliyun.com/product/advisor4。企业级高可用架构解决方案脱胎于阿里巴巴电商业务。高可用技术系统通过所有双11流量高峰测试和日常稳定性测试,服务于阿里全生态,开始服务外部企业客户,解决方案为企业提供营销活动支持,整体成本控制(全链路压测、容量规划、流量控制、调度)、应急响应能力(交换机和预案)、容灾逃生能力(架构感知、故障演练、异地多活、单元化)。https://www.aliyun.com/solution/ehasl5,混沌测试工具ChaosBladeChaosBlade是基于混沌工程实验原理,基于阿里巴巴近十年的故障测试和演练实践,结合最新的混沌测试工具。集团各业务经验最佳思想和实践,提供丰富的故障场景实现,帮助分布式系统提高混沌工程工具的容错和恢复能力。https://github.com/chaosblade-io/chaosblade6,轻量级流控框架Sentinel以流量为切入点,从流量控制、断路器降级、系统负载保护等多个维度帮助您保护服务的稳定性.https://github.com/alibaba/Sentinel/wiki
