一文解读阿里云短信网关的云原生技术

简介: 基于云原生技术打造全球融合通信网关

随通信行业不断的业务迭代,新的赛道为业务带来了新变化,生态合作和渠道的规模上量给系统带来了模式创新的同时,也带来了更大的压力。

 

同时,国际站的地域环境和当地政策法规的因素,给全球化的建设也带来了全新的机遇和挑战。

 

本文将探讨云原生时代下的网关技术,面向全球化、平台化、精细化的时代背景,如何在云原生时代挖掘自我蜕变的契机,又如何拖着沉重的技术负债实现涅槃重生,实现高性能、高可用、低成本的架构演进和技术突破,本文结合历年双11顶流下的网关技术实践经验落笔成文,希望对各位读者有所帮助。


云通信网关发展新趋势与挑战

阿里云通信短信网关是基于领先的通信架构和大规模分布式网关处理技术打造的云原生网关,提供稳定的通信服务能力,具备可冗灾、可恢复、可切换的高可用服务保障能力,实现客户的SLA保障要求,最终实现资源的最大利用和利润的最大化。

 

高性能、高可用、低成本——是趋势,也是挑战。

 

高性能,十万级并发、秒级触达

阿里云通信起步于2017年,早期孵化于阿里通信,后与阿里云整合,经过短短几年的发展,目前已经是阿里云上最热门的云服务产品之一。在2019迎来规模化发展,这一年在天猫双11活动当天实现了历史峰值,覆盖全球200多个国家。

 

从技术层面上看,云通信短信网关在双11支撑了十万级QPS的流量分发,而且这类并发不是简单的查询,而是需要实现与运营商或其它第三方系统交互。如此之大的业务流量和资源的调度,除了要做好系统保障,同时还要保障发送与响应的低延迟,实现全球覆盖、秒级触达,这是很大的一个挑战。

 

诉求是:同时满足高并发和高性能。

 

那么现在的问题瓶颈主要出在哪里呢?

 

1.    目前的网关架构主要是以规模换性能,需要大规模集群分布式部署提供高并发能力。


2.    在通信网络传输上,需要依托通信标准协议等长连接方式通过互联网传输。

 

高可用,分钟级故障隔离及恢复

随着业务发展,云通信资源节点将要达到万级,如何在十万级并发下实现万级节点的稳定性是非常大的难题。另外,云通信有着类似于秒杀一样的突变型流量的业务场景,比如营销短信,会在几分钟内发送海量的短信请求,这种瞬时流量往往会形成洪峰对系统产生冲击。

 

从技术层面上看,云通信短信网关采用微服务分布式架构进行领域拆分部署,并大量使用异步编程多线程并发调度模型,系统复杂度可见一斑,这么大的集群规模和密集型的通信网络,除了要做好业务故障监控覆盖率、告警准确率100%,同时还要保障故障隔离及快速恢复,实现整体系统高可用,这又是一大挑战。

 

那么现在的系统风险还存在哪些隐患呢?


1.    目前的网关架构主要是多中心多分组的部署架构,需要将不同维度的业务、场景、客户进行隔离部署。


2.    其次在数据存储资源上,需要重点关注数据库的稳定性。

 

低成本,容器资源弹性可伸缩

随着指数级增长的运算规模,尤其是在双11期间部署的上百台服务器,当流量和资源进一步翻翻,成本消耗也会水涨船高。然而,在大促过后,潮涨潮落之后,就是容器资源的扩容与缩容,但是对于有状态的服务来说,扩缩容所对应资源迁移成本和难度着实不是一件轻易的事。

 

从技术层面上看,有状态的服务是捆绑住了资源,原因是短信是长连接异步全双工的通信模式,本质上的冲突是潮汐流量下资源的利用率问题,面对这种有状态的服务和昂贵的资源成本,除了要做好流量和资源最优匹配,减少闲置资源的成本浪费,提升CPU利用率,同时还要实现无状态的容器资源弹性可伸缩,进一步降低运维成本,这又是一大挑战。

 

那么现在的技术难点又有哪些呢?

 

1.    目前的网关部署主要是DevOps的模式,需要预先申请资源再进行镜像容器的部署。


2.    在资源连接的管理上,需要对资源连接的进行预分配,实现资源连接与容器IP的绑定。

 

借力破局:基于云原生的边缘网关架构


云原生是一套因云而生,又应云而行的技术方法体系,降本增效是云原生应用最大价值。


下面,就结合云原生的技术特点聊一下短信网关建立了哪些技术优势。

 

易部署、广覆盖,分钟级服务部署

云原生是一套因云而生的技术方法体系,而阿里云又拥有遍布全球的中心和边缘节点,那么短信网关如何基于容器化、服务网格、微服务等云原生技术,结合边缘云,打造轻量级边缘网关和云网部署架构,实现易部署、广覆盖的全球就近接入和分发能力,以此达成提升网关性能和减少运维成本的发展目标。

 

为了实现异部署的目标,这里主要有两个重点:一是系统架构支持云原生化的易部署,二是DevOps平台支持应用环境的易部署。

 

首先在系统架构层面上,短信网关为此拆分解耦实现了两层架构体系来对业务进行支撑,打造的轻量级网关架构更易于部署在各地域,使客户实现就近接入,保障低延迟的短信发送体验。如下图所示:

1.png

短信网关两层架构对业务支撑提供多种解决方案,轻量级的网关架构非常易于部署在各地域,使客户的实现就近接入,保障低延迟的短信发送体验。轻量易于部署,无论是公有云、混合云或专有云,都可以基于容器化实现快速部署构建。短信网关两层架构业支持相互独立部署,也可以整合集成部署,帮助打造多样化的部署架构。

 

其次在DevOps平台层面上,为了适配多云环境的部署情况,边缘网关需要的中间件和资源要尽可能轻量级和开源化,包括部署到公有云、混合云和专有云里。基于此,我们在设计上边缘网关完全基于云原生的底座进行构建,实现部署上更强的适配性。

2.png

在DevOps平台方面我们选择了两种方式进行支持:全托管集群和边缘全托管集群,这两个平台都可以将底层的资源池通过虚拟化技术封装成一个个的容器,在结合镜像服务即可实现服务的快速部署,特别要说的边缘全托管平台还可以纳管驻外的资源池,这样我们在面向混合云部署时,只通过镜像就可以部署到客户的容器化服务中。

3.png

综上所述,边缘网关基于阿里云边缘节点,助力业务下沉至离用户10公里的地方,减少时延和带宽成本,在保障稳定性的同时实现技术降本和全球多节点的快速部点。

 

易调度,低延迟,毫秒级响应

云原生又是一套应云而行的技术方法体系,上文提到短信网关是通过多分组的部署解决方案,在接近用户的区域分别独立部署网关,进行与供应商的低延时高质量对接。那么这里就有一个问题;如此大规模的边缘节点是如何被调度的?调度的复杂度又有多高?

 

针对流量调度复杂场景,降低业务架构复杂度,通过架构升级实现业务逻辑与流量管控逻辑解偶,让复杂调度变为可观测、可管控的统一的流量调度模型,以此实现易调度、低延迟的发现目标。

 

为了实现易调度的目标,同样需要解决两个重点:一是系统架构支持云原生化的易调度,二是通信网络架构支持应用环境的易调度。

 

首先在系统架构层面上,实现基于三级策略的路由寻址调度算法实现节点间、节点与资源间、资源与连接间的数据链路通信;以及基于多因子多权重的路由协同控制动态感知算法实现异常情况下的稳定可靠路由寻址。

4.png

除此之外,短信面向的场景:验证码、通知、营销等,对于时效性的要求非常高,技术上我们实现了基于场景优先级的自适应弹性流控算法,多个消息队列之间不再是孤立的,每个队列的流速控制都会受到其他队列运行情况的影响,优先级越高的队列流速控制越大,优先级越低的队列流速控制越小,并且可以随系统运行情况自行动态调整,具备高时效性的自适应调整能力。其实,无论哪种算法,主要实现的目标都是让流量更加平滑、更即时。

5.png

其次在通信网络架构层面上,我们主要采用了云上开源的中间件产品,比如Nacos、Redis、MNS等,另外在VPC组网过程中,也大量采用来EIP、NAT、SLB、VPN、IPSec等网络加速技术,以此来保障通信的低延迟。


我们知道云服务通常部署独立VPC内,VPC访问需要通过SLB/NAT,公网用户主动访问云上资源的流量是经过SLB进行转发,云上资源主动访问公网的流量是经过NAT进行转发。针对跨region云上网络互访情况,我们采用的方法是对跨Region网关调用的是先走到本Region网关的弹内,再到达本Region网关的弹外,这样网络传输的性能就会有所保障。

6.png


易运维,省成本,秒级弹性伸缩

上文中提到短信网关有着庞大的集群规模和全球节点,除了在调度上的考量外,另外还有一个问题:如此大规模的边缘节点是进行成本控制的?潮汐流量下的弹性伸缩又如何运维?

 

从本质上来看,短信网关的运维核心难点还是因为连接的有状态,有状态就会产生各种的复杂问题,其中最大的难点就是有状态的容器不能进行弹性扩缩容。所以,实现省成本的目标之一也在于此。为了实现易运维的目标,需要解决两个重点:一是系统架构支持云原生化的易运维,二是可观测技术支持数智化的易运维。

 

首先在系统架构层面上,我们通过分布式松耦合网关架构实现了对传统通信网关的云端再造,解耦业务处理模块和通信协议会话模块,业务处理层无需关心通信连接状态,可根据流量动态扩缩容,自研的数据连接器提供路由发现、调度的能力。


7.png


为了更轻量级的部署和设计,我们将云网架构从整体上拆分成独立的领域模块,每个模块都独立解决各自领域的问题。对一些协同关联的业务服务领域,我们采用的是服务集成和扩展的方式进行服务间的通信模式,而不是在本地网关进行开发,从而保障本地网关的轻量级和专属性,进而更易于运维。

8.png

其次在数智化运维层面上,首先思考的是为什么要深挖可观测技术?可观测数据覆盖的范围是哪些?数据是隔离的?还是聚合的?从网络结构上看是是什么样的?

 

“可观测”是个比较大而全的概念,包括了应用性能指标、链路追踪、容器监控、系统监控、日志监控等等,每个都是单独一个点,但是对于业务应用系统来讲,我们要做的应该是一个全方位的可观测体系。

 

具体从层次来看,最上面是“看到”,能看到指标,能告警;下一层是可以“分析”,可以追踪调用链,可以分析RT、异常出在哪里;最下层是反作用,对于一些比较明确的场景,通过系统自动化实现基于编排的根因分析、基于编排的故障自动定位。

9.png

总结来说,可观测应该是一个多面的,我们其实解决的是如何基于这些可观测数据聚合分析并反作用于业务网关,能做到自动化AIOps的运维管控。

 

经过演进发展,网关始终致力于规模化、边缘化、数智化三个方向发展:

 

通过云网关和边缘网关的云网架构实现全球多站点、多节点的网络拓扑部署;

 

着力边缘化的架构演进助力规模化网关的快速、便捷的部署能力,同时重建云网通信模式,实现云网关的弹性水平伸缩能力;


最后通过可观测技术对全球网关节点实现监控、埋点的Metrics和Trace,构建基于编排的根因分析能力。


希望通过上面的内容可以帮助到大家对云通信全新的理解,如果有感兴趣的同学也欢迎进行沟通交流。


「视频云技术」你最值得关注的音视频技术公众号,每周推送来自阿里云一线的实践技术文章,在这里与音视频领域一流工程师交流切磋。公众号后台回复【技术】可加入阿里云视频云产品技术交流群,和业内大咖一起探讨音视频技术,获取更多行业最新信息。    

相关文章
|
13天前
|
Cloud Native 前端开发 JavaScript
前端开发者必看:不懂云原生你就OUT了!揭秘如何用云原生技术提升项目部署与全栈能力
【10月更文挑战第23天】随着云计算的发展,云原生逐渐成为技术热点。前端开发者了解云原生有助于提升部署与运维效率、实现微服务化、掌握全栈开发能力和利用丰富技术生态。本文通过示例代码介绍云原生在前端项目中的应用,帮助开发者更好地理解其重要性。
44 0
|
15天前
|
Kubernetes Cloud Native 持续交付
云端新纪元:云原生技术重塑IT架构####
【10月更文挑战第20天】 本文深入探讨了云原生技术的兴起背景、核心理念、关键技术组件以及它如何引领现代IT架构迈向更高效、灵活与可扩展的新阶段。通过剖析Kubernetes、微服务、Docker等核心技术,本文揭示了云原生架构如何优化资源利用、加速应用开发与部署流程,并促进企业数字化转型的深度实践。 ####
|
2天前
|
Kubernetes Cloud Native 云计算
云原生技术深度解析:重塑企业IT架构的未来####
本文深入探讨了云原生技术的核心理念、关键技术组件及其对企业IT架构转型的深远影响。通过剖析Kubernetes、微服务、容器化等核心技术,本文揭示了云原生如何提升应用的灵活性、可扩展性和可维护性,助力企业在数字化转型中保持领先地位。 ####
|
10天前
|
监控 Cloud Native 持续交付
云原生技术深度解析:重塑现代应用开发与部署范式####
本文深入探讨了云原生技术的核心概念、关键技术组件及其在现代软件开发中的重要性。通过剖析容器化、微服务架构、持续集成/持续部署(CI/CD)等关键技术,本文旨在揭示云原生技术如何促进应用的敏捷性、可扩展性和高可用性,进而推动企业数字化转型进程。不同于传统摘要仅概述内容要点,本部分将融入具体案例分析,直观展示云原生技术在实际应用中的显著成效与挑战应对策略,为读者提供更加丰富、立体的理解视角。 ####
|
12天前
|
敏捷开发 Cloud Native 持续交付
云原生技术在现代企业中的应用与实践
【10月更文挑战第23天】本文将深入探讨云原生技术在现代企业中的广泛应用,并结合具体案例分析其对企业数字化转型的推动作用。我们将从云原生技术的基本原理出发,逐步揭示其在提高业务敏捷性、降低成本和增强系统可靠性方面的优势。同时,文章还将分享一系列成功实施云原生技术的企业案例,为读者提供实践中的参考和启示。最后,我们将讨论云原生技术面临的挑战及未来的发展趋势,为企业在这一领域的进一步探索提供指导。
|
14天前
|
Kubernetes Cloud Native 开发者
云原生技术入门:Kubernetes和Docker的协作之旅
【10月更文挑战第22天】在数字化转型的浪潮中,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,引领读者步入云原生的世界,着重介绍Kubernetes和Docker如何携手打造弹性、可扩展的云环境。我们将从基础概念入手,逐步深入到它们在实际场景中的应用,以及如何简化部署和管理过程。文章不仅为初学者提供入门指南,还为有一定基础的开发者提供实践参考,共同探索云原生技术的无限可能。
23 3
|
13天前
|
Cloud Native 持续交付 云计算
云原生技术深度探索:构建现代化应用的基石####
【10月更文挑战第21天】 本文将深入探讨云原生技术的核心概念、关键技术及其在现代软件开发中的应用。我们将从容器化、微服务架构、持续集成/持续部署(CI/CD)、无服务器架构等关键方面展开,揭示这些技术如何共同作用,帮助企业实现高效、弹性且易于维护的应用部署与管理。通过实例分析,展现云原生技术在实际项目中的显著优势,为读者提供一套全面理解并应用云原生技术的指南。 ####
31 2
|
15天前
|
Cloud Native 持续交付 开发者
云原生技术在现代软件开发中的实践与挑战####
本文探讨了云原生技术在现代软件开发中的应用,重点分析了其核心组件如容器化、微服务架构、持续集成/持续部署(CI/CD)以及无服务器计算的优势与面临的挑战。通过实际案例,阐述了如何有效实施云原生策略以提升系统的可扩展性、可靠性和开发效率。同时,文章也指出了在向云原生转型过程中常见的技术障碍和解决策略,为开发者和企业提供了宝贵的实践经验分享。 ####
|
16天前
|
Cloud Native 安全 Devops
云原生技术在现代软件开发中的实践与挑战####
本文探讨了云原生技术在现代软件开发中的应用,深入分析了其核心概念、优势以及面临的挑战。通过实际案例,展示了云原生架构如何提升应用的灵活性和可扩展性,同时指出了企业在实施过程中需要注意的关键问题。本文旨在为开发者和企业提供有价值的参考,帮助他们更好地理解和应用云原生技术。 ####
|
8天前
|
Cloud Native 安全 持续交付
云原生技术在现代软件开发中的应用与挑战####
本文深入探讨了云原生技术在现代软件开发中的广泛应用及其面临的主要挑战,旨在为开发者和企业提供实用的指导和策略。云原生技术通过其独特的架构和方法论,极大地提升了软件的可扩展性、弹性和敏捷性。然而,随着技术的不断演进,如何有效应对其在安全性、复杂性和成本控制等方面的挑战,成为了业界关注的焦点。本文将详细阐述云原生技术的核心概念、实际应用案例,并针对当前面临的主要挑战提出相应的解决策略。 ####

热门文章

最新文章

下一篇
无影云桌面