本文作者:阿里云 云通信架构师 / 张松然(然行)
在当今的数字时代,短信通信服务(SMS)需求的高峰和低谷往往难以预测,尤其在大型活动、紧急通知或者促销营销期间,SMS网关会遭遇剧烈的流量波动。为了保障服务的稳定性和响应速度,构建一个具备高弹性、高性能的SMS网关成为应对未来不断变化业务需求的当务之急。
本次分享深入解析了如何通过最新的技术和架构策略,打造一个能够自适应流量变化、保障消息准确无误送达的高弹性、高性能SMS网关。探讨了现代通信服务面临的挑战,包括突发的流量峰值和网络稳定性需求。详细阐述了使用云原生技术、微服务架构以及自动化扩缩容策略来构建SMS网关的实战过程,展示了在实际突发流量情况下,如何通过优化资源管理和调度策略,有效提高系统的吞吐量和可用性。
一、SMS通信的不断演变
挑战:突变流量如何确保SMS网关稳定高效?
在真实的高流量冲击下,通过精妙的资源调配与智能调度机制,系统的处理能力与服务的不间断性均得到了质的飞跃。然而,回顾过去,面对突变型流量场景下对架构设计,特别是在诸如“618”“双11”等大型促销活动中,阿里云通信SMS网关第一反应是采取的策略是预留较大规模集群,以确保服务在流量高峰期间的稳定性。但是,这种做法不可避免地带来了资源冗余问题,导致了不必要的成本支出,同时也加重了运维团队的负担与潜在的稳定性风险。
在此“增效降本”的背景之下,如何高效应对突发流量洪峰,同时设计并实施一套既能灵活伸缩、又能确保系统高度可用的架构方案,成为了我们亟待攻克的核心挑战。
重点:引入云原生和弹性架构的升级密钥
在此背景下,阿里云通信SMS网关作为数字化通讯解决方案的核心组成部分,其重要性不言而喻。它专注于为用户提供包括短信、语音服务、小号功能在内的多元化通信服务。其中,短信服务作为最为人熟知的通信方式,自1992年诞生第一条短信以来,便深刻的改变了人们的沟通习惯。这一简便快捷的通信形式在中国市场的发展尤为迅猛,从2001年的189亿条短信发送量,剧增至2008年的5900亿条,见证了移动通信行业的爆炸性增长。
阿里云通信自2017年启动以来,仅仅两年后,在2019年实现了规模化飞跃,技术实力与服务范围均得到了显著提升。特别是在电商年度盛事“双11”期间,阿里云通信SMS网关成功承载了每秒十万次查询(QPS)的流量峰值分发。
在此坚实基础上,短信网关作为协调南北向流量的关键组件,在设计与部署中充分体现了对高性能、高可用性的追求。架构划分为“网关”、“组网”、“管控”三大核心子领域的协同工作。
- 网关(点):在网关层面,设计聚焦于接入点的高可用性和故障隔离能力,确保无论从南向(运营商)还是北向(客户)接入,都能维持服务的连续性和稳定性。这要求“点”必须具备快速故障检测与恢复机制,以及负载均衡能力,以分散请求压力,提高服务韧性。
- 组网(线):组网作为“点”间通信的桥梁,核心在于优化路径规划、减少路由耗时,并确保多路通信和动态路由切换的平滑性。这有助于提升数据传输效率,尤其是在面对突变型流量时,能够迅速调整策略,保证信息的及时传递。
- 管控(面/体):通过将众多“线”整合成“面”,进而形成全面覆盖的“体”——管控体系,利用云原生技术构建的Cloud Ops平台,不仅实现了全球通信网络的统一管理,还极大增强了系统的可操作性和敏捷性,确保在全球范围内服务的一致性和高效运维。
短信网关拆分为应用网关和接入网关:
- 应用网关:通过Serverless架构部署,专注于业务逻辑处理,如数据处理与业务流程编排。采用低代码平台加速了服务的定制与迭代,适应多样化的业务需求,同时,Serverless模式确保了资源的按需分配,降低了运维成本,提高了部署效率。
- 接入网关:鉴于其有状态的特性,采用Kubernetes(K8s)部署,确保了与外部客户及运营商之间通信的稳定性与安全性。K8s提供的自动扩缩容、自我修复等特性,特别是在处理大量并发连接和维持会话状态时,展现了极高的可靠性和灵活性。
目的:实战架构选择、成本控制和性能保障
在短信网关的“点-线-面”部署架构中,成本控制与性能保障的决策考量是一项综合性的挑战,涉及到技术、策略与运营等多个维度。以下是一些关键点的总结:
成本控制与决策考量
- 多Region部署与成本优化:虽然多地域部署可以显著提升系统的高可用性,但同时也意味着更高的成本投入。因此,通过精准的业务流量预测和成本效益分析,合理选择部署区域,避免过度部署。
- 弹性设计与成本效率:对于无状态的应用网关,通过监控CPU利用率实现自动弹性伸缩,可以有效利用资源,降低成本。而对于有状态的接入网关,采用热部署减少停机时间的同时,避免过度预配。
- 组件化与代码复用:全球化架构设计中的组件化编程模式,减少重复开发成本,降低了维护成本和提升了开发效率。
性能保障与取舍
- 安全组网与合规性:在追求高性能的同时,确保数据安全和遵守各地区合规要求至关重要。
- 动态路由与低延迟:通过智能算法和网络拨测技术优化路由策略。
未来的方向
- 智能运维体系:随着云原生技术的深入应用,利用AI、大数据模型和低代码工具构建智能运维体系,大幅提升运维效率,减少人为错误,降低了运维成本,增强了系统的稳定性和灵活性。
二、架构重塑
传统架构的局限,为何我们需要变更?
早期的短信网关采用单体架构,确实面临了多个挑战,下面几点矛盾概括了单体架构在规模化发展过程中遇到的关键问题:
- 无状态与有状态的冲突:在单体架构中,短信网关既包含处理业务逻辑的无状态组件,也混合着需要维护会话或数据状态的有状态部分。这种混合导致任何无状态服务的变更都无意中影响到有状态的部分,增加了故障的风险和调试的难度。
- 技术债务的累积:随着时间推移,技术债务会逐渐积累。短信网关的单体架构使得这种债务更难管理和偿还,因为任何改动都可能牵一发而动全身,影响整个系统的稳定性和可维护性。
- 爆炸影响半径:短信网关的单体架构中,任何一个模块的故障或者更新部署都可能影响到整个系统,导致所谓的“爆炸影响半径”。这意味着即使是小的更改也需要整个系统下线,影响服务的连续性和用户体验。
- 性能瓶颈:随着用户量和请求量的增长,短信网关的单体应用难以水平扩展。由于所有服务共享相同的资源池(如CPU、内存),某个服务的高负载可能会拖慢整个系统的响应速度,难以通过简单增加资源来解决性能问题。
- 成本控制:短信网关在单体架构中,资源分配不够灵活高效,导致资源过度配置或浪费。同时,随着系统的复杂度增加,运维成本和故障恢复成本也会相应上升。
云原生与弹性,为SMS网关注入新活力
早期的短信网关在技术迭代的起始阶段,采用了单体架构的设计方式,这一选择在彼时或许符合了快速上线的需求,但随着时间推移,其局限性日益凸显,面临着扩展性差、维护成本高、难以快速响应市场变化等多个棘手挑战。
在此背景下,云通信领域在探索上云之路的过程中,展开了一场由浅入深的技术革新之旅。这一旅程从最初的尝试性触网上云,逐步过渡到策略的不断调整与优化,再到针对性部署的成熟过程。下面是对这一演进过程的分析总结:
1. 初始探索阶段(2020年):整站部署上云
- 特点:此阶段以国际站为试点,采取了较为直接的整站部署方式上云。这种方式虽然快速实现了云端迁移,但由于缺乏针对性的优化,导致了较高的成本投入。这一阶段更多是在探索云环境下的运维、部署和管理经验,为后续的优化奠定基础。
- 目标与挑战:目标在于快速实现云化,但面临的挑战主要是成本控制不佳以及可能的资源利用率不高,未能充分发挥云服务的弹性与成本效益优势。
2. 策略调整阶段(2023年):国内站的垂直上云策略
- 特点:在认识到初期策略的局限性后,国内站上云采取了更为精细的策略——垂直上云,特别是针对短信网关作为独立域进行优先改造。这一策略考虑到了不同业务域的特点与需求,尤其是短信网关对性能和高可用性的特殊要求,通过针对性的云化策略,旨在实现更高效的资源利用和成本控制。
- 目标与优势:目标在于降本增效,通过云原生技术和弹性伸缩能力,最大化利用云服务的优势。优势在于能够针对核心业务需求进行深度优化,确保关键服务的高性能和稳定性,同时通过云上互通的策略,保持了系统的整体协同性,提升了整体架构的灵活性和可扩展性。
正是基于这一系列深刻变革的积淀,全球融合通信网络的架构设计展现出了前所未有的前瞻视野与技术深度。其核心设计理念聚焦于分布式系统设计,即通过分层解耦和地理位置优化来提升系统性能、可靠性和可维护性。以下是该架构的关键组成部分解析:
- 控制面:控制面负责全局的资源配置、策略制定、监控运维等核心管理功能。它确保了网络的高效运作和客户体验的一致性,通过集中化的管理减少操作复杂度,同时提供灵活的策略调控能力以应对各种业务需求和网络状况变化。
- 数据面:数据面主要涉及数据的存储和处理,数据中心作为数据存储的核心。这一层的设计重点考虑数据安全、备份恢复机制及大规模数据处理能力。
- 传输面:传输面专注于数据的高效转发和传输,这一层的优化对于降低延迟、提高吞吐量至关重要,尤其是在全球范围内提供低延迟通信服务时。
通信云站点建设
- 中心站/地域站(应用网关):面向业务的应用网关部署,为全球用户提供核心服务。
- 边缘站(接入网关):部署接入网关,实现了用户接入的就近原则,降低了网络传输延迟。
低成本架构,不只是技术,更是策略
在此坚实的技术革新基础上,转向短信网关的成本优化策略制定时,我们深入分析了核心中间件的应用情况,重点考察了如Nacos、Dubbo、PolarDB、Redis、RocketMQ等广泛应用的技术组件。这些中间件大多数能够顺利迁移至云端,并在必要时可替换为云服务以适应不同环境,但针对某些特定内部系统如BMPs、VipServer,由于缺乏直接的云端对等产品,我们需要通过架构重构来实现兼容,这一过程直接影响成本控制与系统性能。
通过数据分析揭示,数据库成本占据了首位,这主要归因于短信网关作为数据产生源头,会累积庞大的交互记录、计费信息及历史追踪数据。其次,服务器资源,特别是容器化部署,构成了第二大成本项。再者,考虑到通信机制中同步与异步处理、消息重试的需求,消息队列成为成本控制的第三大要素。
基于上述分析,我们的成本节约策略聚焦于两个方面:
- 一是通过构建支持大规模、无状态且具备弹性伸缩能力的应用网关,优化容器与存储配置,直接减少这两方面支出;
- 二是利用接入网关技术,实现异构资源的高效虚拟化管理及跨云部署能力,以此来简化组网和路由设计,降低这部分的开销。
基于上述技术组件的深入分析与优化策略,我们不仅确保了短信网关技术架构的稳健性,还为其向高弹性方向的发展奠定了基础。进而,在设计高弹性的SMS网关时,我们首先依托于预配置的资源进行部署,并为应对大促期间的流量高峰预先规划扩容策略。目前,我们已进阶到利用流量预测模型与历史数据分析,实现了按需定时的自动弹性扩展,成本控制精细至每小时,极大提升了资源利用效率。
更进一步,针对无状态服务,我们根据CPU及内存使用情况实施了实时监控驱动的弹性伸缩机制,确保资源供给与需求变化同步,高效响应。这一系列策略根据不同场景量身定制,例如,对无状态应用采取水平扩展(HPA),而有状态应用则通过垂直扩展(VPA)来应对,同时结合智能化预测及事件驱动机制,在预见性扩容不足或遭遇如路由故障等异常状况时,能够迅速调度资源以维持服务连续性,强化整个网络架构的高可用特性。
在资源管理层,我们依托Serverless架构与Kubernetes(K8s)构建了强大的基础平台,根据不同应用环境的需求,借助事件驱动能力和Knative框架,实现了容器节点的灵活弹性管理。这一过程中,特别注重在弹性伸缩操作中保持中间件的平稳过渡,尤其是确保数据库能够在弹性扩容时实现无损上下线,保障数据一致性与服务稳定性,全面加固系统的弹性与可靠性。
高可用设计确保无间断服务
接入网关由于维护客户端会话状态的需要,我们采用了垂直伸缩(VPA)策略。这一选择基于会话持续性的要求:即便网关资源增加,用户的会话信息也必须保持在同一实例中,避免因水平扩展(HPA)可能引起的会话中断。通过提升单个实例的处理能力,即增加CPU、内存等资源,我们确保了服务在流量增长时仍能稳定处理带有会话状态的请求,有效应对流量峰值。
至于应用网关,因其处理逻辑多为无状态,我们采取了更为灵活的水平伸缩机制,结合定时与事件驱动的弹性策略。这使得我们能够在流量低谷时自动缩减资源分配,降低运营成本。
总结而言,通过针对接入网关与应用网关的不同特性定制化的弹性伸缩策略,我们构建了一个既能保持会话连贯性又能高效处理大规模无状态业务请求的高性能网关体系。这不仅优化了资源管理,降低了成本,还显著提高了整体系统的稳定性和对流量突变的适应能力。
在先前的国际站点云迁移项目中,我们采取了直接复制代码的策略进行整站上云,这导致维护两套独立代码库的成本激增,成为一项重大挑战。鉴于此经验,我们现在转向实施一套全球统一的代码部署架构,旨在优化资源与效率。
我们的新策略核心在于利用镜像技术和基础设施即代码(IaC),确保代码的标准化与部署的一致性。通过这种方式,我们能够基于单一代码库在全球范围内快速部署和扩展服务,大大降低了多版本代码带来的维护难题。虽然在初期实施过程中,整合DevOps与GitOps流程,并确保它们与云环境及弹性部署机制无缝对接,确实带来了一定的技术复杂度,但长远来看,确实显著提升了我们的运维效率、成本效益及全球业务的快速响应能力。
在确保高可用性设计中,我提出了一套三级保证策略,为云上迁移及运维提供了一个清晰而层次分明的框架,确保了系统的全方位稳定运行。以下是该策略的详细解读:
一级:全局稳定性监控与治理
- 目标:确保整个系统生态的宏观健康状态,覆盖所有关键服务和基础设施。
- 措施:实施全面的监控体系,利用大数据分析和AI辅助识别潜在问题,提前预警。
- 角色:技术负责人与系统架构师,他们负责设计并监督全局监控策略的执行,确保任何系统级异常都能被迅速识别并处理。
二级:垂直子领域稳定性
- 目标:深入到特定业务领域或技术子系统,细化监控与治理策略,确保各领域内的服务稳定可靠。
- 措施:依据业务特性和技术架构定制化监控规则,对特定组件的性能瓶颈、异常流量、错误率等进行密切追踪。设置领域内阈值和告警策略,及时响应领域特有的问题。
- 角色:领域和应用架构师,他们需深入了解各自负责领域的运行细节,制定针对性的稳定性保障计划。
三级:变更管理与稳定性风险控制
- 目标:降低因软件更新、配置变更或新功能上线带来的系统稳定性风险。
- 措施:实施严格的变更管理流程,包括但不限于代码审查、灰度发布、金丝雀测试、回滚策略等。利用混沌工程实验模拟故障场景,提前暴露潜在的稳定性隐患。
- 角色:开发人员、测试工程师及系统Owner,他们负责在日常开发和部署过程中,遵循最佳实践,确保每一次变更都是安全且可控的。
综合认知:
通过这一分级策略,不同角色的团队成员能明确自身职责所在,协同合作,形成从宏观到微观的立体化监控与治理机制。技术领导者把握全局,领域专家深入细节,开发与运维人员确保每一次变更的安全性,共同维护系统的高可用性。
三、性能之巅
高弹性SMS网关背后的高性能架构与优化策略
在优化短信SMS网关性能时,应关注的内、外部耗时。
内部耗时优化:弹性QPS与智能路径
- 弹性QPS:结合阿里云的服务网格(ASM)、应用自动伸缩组(Auto Scaling)等服务,根据实时流量动态调整后端路由决策链路。
- 网络智能路径选择:利用自研的网络探测及路由算法,持续监控内部网络状况,识别网络拥堵节点,动态调整流量的传输路径。此外,结合预定义的网络拓扑图和实时网络状况,利用最短路径算法或基于权重的路由算法,选择最优传输路线,减少内部传输耗时。
外部耗时优化:运营商画像与策略调整
- 运营商画像构建:收集并分析不同运营商在不同地域、不同时段的网络表现数据,包括成功率、响应时间等,构建运营商画像数据库。利用这些画像数据,在发送短信前,根据接收方的运营商和地理位置信息,优先选择历史表现最佳的通道,提升短信送达率和速度。
针对短信SMS网关性能优化,下面是我们使用三个策略的详细解读:
策略一:云网架构双向反馈环调度
- 场景智能识别:首先,通过机器学习模型识别不同场景的特征,如验证码短信的即时性要求高,营销短信可能有发送窗口限制等,以此为依据预设不同的优先级和策略。
- 动态路由选择:构建多级中心节点与接入节点的网络架构,利用实时网络探测技术,如Traceroute结合RTT(往返时间)评估,智能选择最优路径。同时,根据网络状况变化和业务需求,动态调整路由策略,确保高可用性和低延迟。
- 周期性优化:定期分析调度数据,评估路由效率,对策略进行迭代优化,确保随着网络环境变化和业务增长,系统始终保持高效运行。
策略二:多级重试积压阻塞反馈调度
- 快速响应机制:在遇到网络闪断或其他异常时,立即触发多级重试机制,不仅在发送层面实现重试,还应在路由层面寻找备选路径进行尝试,减少单点故障影响。
- 智能降级与回滚:结合业务重要性和当前网络状况,智能选择重试级别和顺序,必要时启动服务降级方案,优先保障核心服务。
策略三:负载感知路由寻址调度
- 三因子流量模型:结合客户预期流量、实际流量和预留承载流量,创建动态调整机制,以准确预测流量高峰,合理规划资源。
- 成本效益平衡:根据实时流量与预留承载流量的对比,动态调整资源分配,避免过度预留造成资源浪费,同时确保在突发流量下有足够的容量应对,达到成本与服务质量的最佳平衡。
以上所述案例具体展现了在处理客户预期流量、实际发生流量与系统预留承载能力之间微妙平衡的实践操作。核心目标聚焦于确保即使面对突变型流量的挑战,通过精细的弹性管理机制,也能使服务流程如同行云流水般顺畅且稳定。
四、未来展望
总结而言,我们的上云转型与优化之旅历经了三个关键阶段,每一步都标志着技术与战略的重要飞跃。
第一阶段:国际化云原生基础建设
在国际站点向云端迁移的初期,我们选择了Kubernetes(K8s)作为核心支撑,利用其强大的容器编排能力,结合微服务架构和Docker容器化技术,成功实现了系统的规模化上云改造。这一过程不仅加速了多国家、多地域的部署能力,还大幅提升了系统的灵活性和可维护性,为全球化运营奠定了坚实的基础。
第二阶段:国内站点的Serverless革新
随着国内站点上云进程的推进,我们积极探索并采用了Serverless架构,这一策略极大地强化了系统的弹性和性能,使得资源的按需分配成为可能,降低了运维成本,同时提高了资源利用率。Serverless的应用有效助力了我们的降本增效目标,使团队能够更加专注于业务逻辑和服务创新。
第三阶段:AI与低代码驱动的Smart网关时代
目前,我们正步入一个崭新的探索阶段,即利用AI技术和低代码开发平台来构建智能网关。这一创新旨在通过实时流量分析,提供更加智能的网络管理与决策支持,同时借助自然交互界面和自动化管理工具,优化网络效率、增强安全性并提升终端用户的体验。低代码平台的应用则进一步加速了业务流程的数字化和自动化,使得非技术背景的团队成员也能快速参与业务应用的开发与迭代,极大提升了响应市场变化的速度和创新能力。