作为运维,你是否遇到过一些用户域名解析异常,你是否又遇到过某些区域云商加速节点异常导致业务不可用,此时的你一脸茫然,不知所措?作为运维,你是否被最后一公里问题搞得焦头烂额?

那么今天我们就来探讨一下最后一公里网络传输上的容灾以及优化方案。

目前大多数公司为解决最后一公里问题基本都是选择云商的各种加速服务,但是它的稳定性也直接影响到业务的可用性,如何优雅的做容灾以及如何提高最后一公里的接入成功率,是亟待解决的问题

本文将结合 ZEGO 业务中的具体实践,介绍一种在 SDK 侧感知异常并进行自动容灾切换的方案。通过该方案可有效降低业务对云商加速异常的敏感,提高业务的可用性,同时可以提高用户在弱网环境下接入的成功率。 该方案能有效提升用户体验和系统高可用,也希望我们的经验能够帮助到更多的技术团队。

一、问题与弊端

首先来介绍下当最后一公里接入质量不好时,终端用户的接入服务通常会遇到的问题:

  • 弱网环境接入失败或者时延较大
  • 协议被禁
  • DNS解析失败
  • 域名被劫持

大多数公司会采用的云商加速,这确实能解决较多最后一公里的一些问题,特别是全球化业务的情况下,云商有更多的边缘节点去覆盖最后一公里的用户,云商加速已经成为很多公司不可或缺的一部分。在实际业务生产中,我们通常会将较多的 Http、WebSocket 等请求走云商加速,以享受其边缘节点缓存和就近接入的加速。但是在享用云商加速服务带来更好体验的同时,也经常会被云商故障所影响,比如因加速边缘节点异常,导致访问失败。

每一次的云商加速故障,我们往往没有较快的方式恢复,只能手动去掉加速选择直连或者更换加速的云商或者寄希望于云商快速解决。但始终有几个问题无法很好解决:

  • 时效性:当云商加速出现问题时,运维人员会手动进行域名切换,因为需要人为操作,响应时长就很难保证。另外,切换后故障恢复时间也无法准确保障。
  • 有效性:切换至直连或者备份云商后,因为 Local DNS 缓存,无法及时生效等问题。
  • 风险性:切换整个集群的域名,本身是个较大变更风险。

针对以上问题 ZEGO 自研统一接入服务,通过 SDK 配合统一接入服务进行容灾容错。该方案不仅能够有效降低云商加速异常对业务的影响,还能提高终端用户的接入成功率,现在 ZEGO 官网最新版本 SDK 默认支持统一接入。

二、ZEGO 统一接入方案的设计思路与效果

在正式介绍实现原理之前,先给大家看下优化前后 SDK 第一次接入后端服务方式(后续的请求过程不再依赖DNS)的对比:

优化前的接入方式:

图 1

优化前的端侧 SDK 接入后端服务主要步骤有 4 部分组成:

  • 初始化 SDK:主要负责 SDK 就绪前的一个初始化动作,加载配置等一些关键信息
  • DNS域名解析:SDK 初始化之后,拿到柔性配置中的域名开始进行域名解析‍
  • 云商加速域名:DNS 解析云商的加速域名正常可以得到一个加速节点进行访问‍
  • 回源服务域名:这个域名是回源域名,直接 A 记录到后端服务

此方案的不足之处就是,当 DNS 解析失败或者云商加速节点故障,就会失败。

优化后的接入方式:

新增统一接入服务后,我们在原有流程上新增统一接入流程,此流程弥补了 DNS 解析失败和云商加速失败的的不足,整体流程如下:

图 2

2.1 方案设计思路

为更好的接入终端用户,降低云商异常对业务的影响,提高业务可用性,同时降低运维同学在运维方面的压力,在方案设计之初,我们确定了以下目标:

  • SDK 自动切换主备域名:在主域名异常时,端侧能第一时间感知并自动切换备用域名进行加载重试,减少对人为操作的依赖;‍
  • 统一接入支持多协议接入:支持 QUIC、TCP 等多协议接入,避免协议被封情况;‍
  • 域名解析失败无影响:支持在公共 DNS 故障无法解析的情况下依然能够正常获得接入点节点;‍
  • 兜底 IP:在所有的容灾策略都失效的情况下,可以直接访问兜底的 IP。

一直以来,弱网环境下的接入成功率都是比较低的,但仅仅依靠链路层面上的保障,很难处理局部问题和实现快速止损。用户终端作为业务的最终投放载体,对资源接入有着天然的独立性和敏感性。如果将容灾前置到终端侧,无论从时效性,精准性,都是传统的直接访问域名的方式无法比拟的。

在端侧进行容灾,就需要感知服务的可用性,然后实现端侧自动切换和自愈的能力。

2.2 实现原理

统一接入层在全球范围内提供面向端侧 SDK、支持多种协议接入方式(如 QUIC、TCP 单流和 TCP 多路复用协议),提供 HTTP 类请求、TCP 长连接的代理服务。统一接入充分利用 ZEGO 全球 200+ 机房的优势就近接入用户,实现丝滑接入。

统一接入整体方案简易图:

此方案主要包括 3 个主要模块:

  • ZNS:主要提供域名解析能力,当公共 DNS 出现问题的时候,ZNS 能够依然保障域名能解析出节点;
  • access-ctrl:主要提供统一调度的能力,根据端侧的客户端 IP 调度返回符合客户端最佳接入的统一接入节点。
  • access-node:统一接入节点,能够提供多协议接入的节点,转发后端服务。

2.2.1 容灾逻辑

当 SDK 初始化成功之后,会优先使用公共 DNS 进行域名解析(可配置或者优先 ZNS 解析);当公共 DNS 解析失败时,ZNS 使用首先使用 UDP 协议进行请求解析,当时 UDP 协议失败时,会再次同时发起 UDP 和 TCP 协议再次发起请求;域名解析成功后,会进行统一调度请求,当统一调度请求失败时,SDK 会同时使用 QUIC 和 HTTP 协议再次发起调度请求;统一调度请求成功后,SDK 会发起统一接入请求,统一接入连接失败时,会尝试使用QUIC,TCP 等不同协议再次请求;当统一接入请求失败时,会走云商加速的逻辑进行尝试连接。云商加速也有不同云商的加速容灾进行切换。走云商加速依然失败,会走到兜底 IP 的逻辑;通过直连服务端负载均衡 IP。

2.3 优化效果

① 业务成功率

以使用统一接入方案前后业务成功率对比,某 App 在 2022.03.14 开启统一接入之后,登录成功率由 96% 提升到 99%。

图 4

② 容灾优化

2021-12-07 A 云商域名解析服务异常,导致大面积域名无法解析,故障 49 分钟。

使用了支持开启了统一接入的 SDK 版本的客户避免了故障,大大提高了服务的可用性。

3.5 适用场景适用所有依赖 CDN 全站加速,域名解析等服务,希望降低异常网络环境对业务影响的端侧场景,包括 Web、SSR Web、Native 等技术场景。

四、总结

经过不断的建设与发展,统一接入方案日趋成熟,在最后一公里的接入上容灾优化明显,现已成为 ZEGO 默认接入使用的公共服务。在多次域名解析故障,云商加速故障中发挥了巨大的作用。在端侧,当前该方案日均容灾 10万+次。

在运维侧,实现了精准告警,同时丰富了异常信息,大大提高了运维问题排查效率。自从方案大规模落地以来,云商加速异常时鲜有手动切换操作,极大减轻了运维同学的运维压力。

ZEGO 最后一公里网络传输的容灾及优化方案相关推荐

  1. oracle异地容灾备份 英文6,异地容灾备份的方案.doc

    异地容灾备份的方案 PAGE PAGE 4 异地容灾 数据备份解决方案 BakBone NetVault 2006-3 目 录 TOC \o "1-3" \h \z \u HYPE ...

  2. 第一讲:双活容灾技术和方案概述

    容灾建设在我国已有十多年的历史了,尤其是2007年发布国标GB/T20988-2007<信息系统灾难恢复规范>后,各行各业对容灾建设都非常重视,各种新的容灾技术和产品也得到了快速的发展和应 ...

  3. 网络推广——符合网站现状的优化方案才是最适合进行网络推广的方案

    现如今各行各业都加快了进军互联网的脚步,走得慢了很可能就被市场淘汰了,同时也是证明当下互联网技术发展的进步和用户需求迫切需要得到解决的体现,也正是如此,越来越多的企业开始注重网站的建设与发展,开始采取 ...

  4. 网络存储与容灾系统-作业三

    假设一个应用程序的I/O吞吐量是5200IOPS,其中70%是读访问,则RAID6中磁盘负载是多少?若磁盘的吞吐量是180 IOPS,利用率要求低于70%,则RAID6需要多少磁盘? 答:RAID6写 ...

  5. Kubernetes 上免费的容器存储及容灾备份恢复方案

    公众号关注 「奇妙的 Linux 世界」 设为「星标」,每天带你玩转 Linux ! 云原生时代为什么还需要本地存储? 云原生时代,对于有存储应用的容器化上云,一般的解决思路是"计算存储分离 ...

  6. 针对web服务器容灾自动切换方案

    思路: 当服务器A 发生故障,服务器B可以迅速接管服务器A的任务,不影响用户的正常访问. 当服务器A 故障恢复,服务器A可以马上接管服务器B的任务,服务器B恢复备机状态. 做法: 两台服务器上配置一个 ...

  7. 贵州省新农合业务系统容灾技术支撑服务项目

    2.1项目背景 新农合业务是中国移动贵州公司在医疗卫生行业类的一大重要信息化应用.贵州省新农合项目建设至今,在线运营业务包括68个县(区).1224个乡(镇).16508个村:建档总人数3358.44 ...

  8. 中小企业数据异地备份容灾解决方案

    中小企业数据异地备份容灾解决方案                [url]www.eisoo.com[/url] 详情 [email]wmx@eisoo.com[/email] 一. 背景: 随着信息 ...

  9. UIT信息容灾概论(6)

    1.1.    主要的数据容灾方式 正常情况下,系统的各种应用运行在一个或多个生产计算系统上,数据同时存放在生产中心和灾备中心的磁盘中.生产中心由于断电.火灾甚至地震等灾难无法工作时,我们即采取一系列 ...

最新文章

  1. Oracle数据库——SQL高级查询
  2. java 微信api框架_Java架构学习(五十二)使用框架开发微信微信框架介绍整合微信开发框架WxJava使用微信返回消息模板接口使用WxJava框架发送模板消息http协议参数转义知识...
  3. 从链表中删除数据的时间复杂度真的是O(1)吗?
  4. J - Fill (UVA - 10603)
  5. mysql 特殊字符集_特殊汉字“”引发的对于字符集的思考;mysql字符集;sqlalchemy字符集设置;客户端字符集设置;...
  6. Spring Boot快速注册服务脚本
  7. 阶乘、斐波那契数列(java版)
  8. unity3d点击屏幕判断是否击中场景中物体
  9. 高吞吐低延迟Java应用的垃圾回收优化
  10. 获取linux系统信息的一个python脚本
  11. 苹果cmsv10精仿好看的挖片网免费自适应简约模板
  12. OpenCV——Roberts算子
  13. 【SQL】字符串去空格解决方法
  14. vue起服务时或npm install时遇到code EPERM errno -4048这样的报错,还有就是文字数量超出盒子可以设置多行省略或单行省略!!!
  15. 科学家要用3D打印技术复制大脑,今后人类都可以“永生”了
  16. linux添加虚拟主机
  17. 避免2.4GHz ISM频段各种类型无线设备干扰的技术【转】
  18. 中文版ASAM OpenSCENARIO与OpenDRIVE标准正式发布
  19. 谁“偷”走了我的雨伞
  20. 传感器实验——寻迹模块

热门文章

  1. zookeeper动态重配置操作
  2. PCL学习笔记——NormalEstimation估计点云的法向量
  3. 苹果手机如何拍照识别文字?
  4. endnote一打开就自动关闭_EndNote amp; Mendeley中载入APA 7th模板
  5. MOXA Nport在二所ATC的使用方式(川大是UDP方式)
  6. 【通证经济】价值、应用、市场,被掩盖的区块链宝藏!!
  7. 2022蓝牙耳机热销榜,性价比高口碑好的蓝牙耳机品牌
  8. 三大主流前端框架比较,程序员会怎么选?
  9. 【毕业设计】基于springboot + vue微信小程序商城
  10. 2021-07-08IDEA+Java+Servlet+JSP+Bootstrap+Mysql实现Web学生成绩管理系统