汇报一下,闲鱼的ipv6改造之路

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: 势在必行,水到渠成

作者:闲鱼技术-靖杨

1、背景

  ipv6作为改进ipv4的下一代ip技术,其目的是为了解决ipv4地址枯竭的问题,同时在网络数据转发效率与安全性方面有很多改进。其第一版协议标准(RFC1883)早在1995年就已发布,但是由于现存ipv4网络升级成本较高以及ipv4自身的改进等种种原因直到最近几年ipv6才开始在全球范围内大规模应用。<br />      在我国从2018年5月工信部通知贯彻两办文件开始,三大运营商迅速完成移动端IPv6改造,并急速拉升用户量。闲鱼作为阿里巴巴旗下全球最大的闲置交易社区,为响应国家政策同时迎接未来技术的变革,开启了基于ipv6的技术改造。

2、IPV6应用架构分析

要让闲鱼app支持ipv6网络,势必需要理清现在完整的网络应用架构;由于阿里庞大复杂的技术体系,实际上可能很多同学也不太清楚我们的网络应用架构到底是什么样的,在此借此机会梳理了闲鱼完整的app网络应用架构:

闲鱼app网络应用架构


image.png
图1


如上图所示,端上发起一次请求后:

  1. 首先请求dns的服务解析域名地址。
  2. 对于图片、js等静态资源直接请求cdn服务获取。
  3. 对于业务接口通过https请求到LVS负载服务,然后转到aserver(类似ngnix的http代理服务器),再通过mtop将http请求转换成rpc调用到达后台服务。

ipv6解决方案

闲鱼的ipv6改造是基于阿里集团的ipv6架构实施的,有了上图的网络应用架构后,ipv6的解决方案看起来就很清晰了:


image.png
图2

请求流程:app--->VIP(NAT转换 TOC传递CIP)--->aserver(CIP打包装入Http header)-->mtop服务。
目前的方案是在LVS层通过阿里自研的技术将IPV6通过NAT技术转换成IPV4,然后将client ipv6信息通过http header传入下游服务,减少后端改造工作量;后续应用完全上云后是端到端的ipv6/4双栈支持。

3、改造原则

网络属于基础设施,改造过程中需要非常小心,否则容易引发大故障。在改造过程中我们总结了以下原则供参考:

  • 一定要可测试、可灰度、可实时监控诊断分析、可随时回退。
  • 必需能支持ipv4/ipv6双栈环境,确保ipv6即使出现问题也不影响用户。
  • 改造过程先小模块再全业务;先分支业务再核心业务。
  • 先android再ios;android上架灵活。
  • 上线过程中,先开启主业务服务域名放量,提升ipv6月活用户量,再开启cdn域名放量提升ipv6流量占比。
  • 主要做移动端改造,PC端流量很小,优先级较低。

4、改造上线步骤

整体改造步骤

image.png
图3

  1. 调研app端上修改点与后台服务修改点。
  2. app与后台服务基于ipv6改造升级。
  3. 支持ipv6的内侧app,测试版本app进行内部灰度。
  4. 支持ipv6的正式app,集成后线上开始灰度,并逐渐放量发布。
  5. 服务域名ipv6放量:主服务域名通过amdc控制用户ipv6的比例,逐步在各省市放量。
  6. cdn域名ipv6放量:静态页面、图片、视频,通过amdc精细化控制逐步在各省市放量。

具体的改造点

  1. 首先需要确保app集成的网络sdk库是支持ipv6的,如果不支持,需要升级sdk网络库或者应用自行开发。闲鱼使用的集团提供sdk网络库,升级到最新版本就支持ipv6环境了。
  2. 前端页面中使用到ip地址的逻辑需要支持ipv6格式。
  3. 后端业务逻辑中使用ip地址作为参数和数据库存储地方需要修改支持ipv6地址。
  4. 使用ip地址调用获取LBS的服务需要支持ipv6地址库。
  5. 用户画像、搜索、推荐使用到了用户ip的地方支持ipv6地址格式。

测试方法

  1. 需要确保本地ip是双栈环境。以WiFi网络为例:

网络环境.png
图4

  1. app端通过专用测试工具测试ipv6网络连接,比如www.dotouch.net.cn提供的app网络测试工具。里面会有详细的ipv4/6网络链接与流量统计信息。
  2. 使用web工具通过浏览器直接访问指定域名,统计ipv6访问的详细信息。
  3. 记录日志查看ip相关信息。

5、上线策略与监控

灰度上线:

1、支持ipv6 app上线:ipv6改造测试完成后,首先使用独立的app版本开始灰度发布,在这个过程中开启所有域名的ipv6策略,观察一段时间看是否运行稳定。灰度完成后,再将支持ipv6版本的特性合如主版本开始发布。
2、前端、服务端改造发布。
3、ipv6域名上线:通过amdc控制各个域名的放量比例,可以控制的维度包含:域名名称、appkey、省市地区、运营商。
在放量过程中一般是针对某个域名逐步进行放量,针对指定域名开启某些省份各个运营商的ipv6功能,开启时候按照百分比控制;开启ipv6功能后,后如果用户处在双栈网络环境(同时支持ipv4与ipv6),那么优先走ipv6的网络,如果用户当前只有ipv4 only环境,app自动切换到ipv4网络。
一个具体放量配置如下:
image.png
图5

ipv6监控

我们使用集团提供的一些工具监控以下信息:

  1. ipv6 cdn的网络质量。
  2. ipv6 cdn流量占比。
  3. 接口请求时延、超时率、错误率。
  4. 使用ipv6网络的用户dau、mau统计信息。

6、效果与展望

自去年底闲鱼app支持ipv6上线以来,逐步开启了各个省市的放量,目前ipv6的日活用户占比达到了55%左右。业务运行稳定,未来我们会进一步开启相关域名的ipv6能力,提升ipv6用户的日活占比与流量占比。ipv6技术具有更高的网络报文转发效率与更强的安全性,随着集团ipv6技术的持续增强,相信未来我们可以给用户提供更好的使用体验。


相关文章
|
存储 程序员 C语言
C语言变量命名规则
C语言变量命名规则
1485 0
|
10月前
|
安全
saas是什么意思,saas软件是干嘛的
SaaS(软件即服务)是一种通过互联网按需租用软件的模式,无需购买、安装或维护。它解决传统软件成本高、部署难、升级烦等问题,让企业像用水电一样使用软件,大幅降低门槛,提升效率,实现降本增效。
5478 0
|
移动开发 缓存 JavaScript
微信h5跳转小程序wx-open-launch-weapp开放标签不显示(已解决)
微信h5跳转小程序wx-open-launch-weapp开放标签不显示(已解决)
3556 0
微信h5跳转小程序wx-open-launch-weapp开放标签不显示(已解决)
|
11月前
|
编解码 Ubuntu Linux
ubuntu系统安装指南:免费且适合老旧电脑,4GB内存也能流畅运行!
点击启动台,找到并点击设置。在设置中,选择语言和区域,再点击管理语言。安装所需的语言包,输入密码进行确认。等待大约2分钟,语言包安装完成后,点击安装语言,选择中文选项。这里有简体和繁体两种选择,根据个人需求进行选择。再次等待2分钟,安装完成后,点击这里,选择中文并应用。然后,将出现的中文拖动到最上面,应用更改并退出设置。最后,重启虚拟机,再次进入系统时,你会发现界面已经变成了中文,而且系统依然保持流畅。Ubuntu系统不仅外观漂亮、干净,而且性能稳定、安全可靠。如果你的电脑内存只有4GB,或者你对Windows系统感到厌倦,那么Ubuntu绝对是一个值得尝试的选择。它不仅办公打印一应俱全,还拥
|
负载均衡 网络协议 Linux
LVS,软负载均衡
LVS(Linux Virtual Server)是一项广泛应用的负载均衡技术,由章文嵩博士于1998年发起,自Linux 2.4.24版本起成为官方内核的一部分。LVS通过四层负载均衡技术实现高性能、高可用的服务器集群,支持多种调度算法和工作模式(如D-NAT、full-NAT、IP隧道、DR),适用于HTTP、数据库等应用。相比7层负载均衡器(如Nginx、HAProxy),LVS具有更高的并发处理能力和更低的资源消耗,适合大规模流量分发。本期文章详细介绍了LVS的工作原理、优势与不足,并对比了常见的负载均衡产品,帮助读者根据具体需求选择合适的解决方案。
2666 6
LVS,软负载均衡
|
存储 Linux Go
如何在Github上Pull Request的教程
关于如何在GitHub上发起Pull Request(合并请求)的详细教程,包括Fork(分支)、Clone(克隆)、创建新分支、修改代码、提交更改、推送到远程仓库等步骤,并提供了解决权限问题的方法,如创建个人访问令牌(Personal Access Token)。
1064 6
|
人工智能 编解码 算法
VideoFusion:开源视频处理神器!一键去黑边水印,AI提升画质+批量剪辑全搞定
VideoFusion 是一款开源的AI视频剪辑工具,支持自动去除视频黑边、水印和字幕,提供批量处理、画质提升等功能,适合视频创作者和自媒体运营者使用。
2038 3
|
移动开发 前端开发 搜索推荐
《前端技术基础》第01章 HTML基础【合集】
超文本标记语言(HyperText Markup Language,简称 HTML)是构建网页结构的基础标记语言。它与 CSS、JavaScript 协同,负责搭建网页“骨架”,用标签组织内容,像标题、段落、图片等元素,通过起始与结束标签(部分可单用,如`<img>`)界定层级与布局,将信息有序整合。标签含特定语义,向浏览器传达展示方式,为网页准确呈现及后续美化、交互筑牢根基。
591 25
|
存储 安全 算法
深入探索iOS系统安全机制:保护用户隐私的前沿技术
本文旨在探讨苹果公司在其广受欢迎的iOS操作系统中实施的先进安全措施,这些措施如何共同作用以保护用户的隐私和数据安全。我们将深入了解iOS的安全架构,包括其硬件和软件层面的创新,以及苹果如何通过持续的软件更新来应对新兴的安全威胁。此外,我们还将讨论iOS系统中的一些关键安全功能,如Face ID、加密技术和沙箱环境,以及它们如何帮助防止未经授权的访问和数据泄露。
|
存储 数据采集 JSON
Open NotebookLM,一键PDF/URL转播客!
本文带你来了解,结合不同的开源模型,例如Qwen2.5-72B-Instruct, CosyVoice-300M)等,将PDF文件(比如论文paper),或者网页URL内容,转换成为有趣的播客😊。