小白网-奉贤部落-奉贤免费信息发布平台

查看: 65|回复: 0

阿里亿级长连网关的云原生演进之路

[复制链接]

2万

主题

0

回帖

8万

积分

论坛元老

Rank: 8Rank: 8

积分
88256
发表于 2025-7-26 13:07 | 显示全部楼层 |阅读模式
作者:光锥
AServer接入网关承载着全部阿里团体的进口流量,负责维系数十亿用户的长链,支持数万条路由战略转发他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。它是毗连几亿用户和几十万背景办事节点的桥梁他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。客岁的双十一需要支持数十亿在线用户、数万万QPS和数万种有用的API控制战略,实现平安牢靠的转发路由,保证用户体验的流利他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
在大范围营业流程和控制的支持背后,需要对系统的每一个细节停止精准控制,消除每一个潜伏的风险点他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
借助云原生架构,可以大大简化运维操纵,下降潜伏风险他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。客岁双十一阿里AServer接入网上千个pod顺遂过了高峰他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。本文首要先容阿里AServer接入网关若何拥抱来自上一代架构的改变,云原生的演进之路是周全的他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
架构布景每年的双十一促销都是对阿里一切办事最严重的考验他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。特别对于AServer接入网关,作为阿里团体的第一个网关,需要抵抗大促高峰带来的流量高峰,清洗进犯流量,所需集群范围庞大他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
庞大的集群范围和对机械性能的极端要求,致使运维的复杂性;随着接入营业的增加,支持的营业场景变宽,营业对路由战略的灵活性和实时性要求变高,对路由战略的静态放置才能有着激烈的需求他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。由于营业的多样性、营业线的闭网节奏分歧、故障隔离等缘由,衍生出对流量隔离稳定性的需求他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
运维的复杂性、静态结构的需求、流量隔离以及对性能的极致要求,鞭策了AServer接入网关的不竭演进和长大他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。在紧跟营业成长的同时,慢慢下降了运维本钱,增强了系统的稳定性,经得起一次又一次“双十一”的考验他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
工作履历
tengine gateway作为阿里团体的AServer接入网关,承载着全部阿里团体的进口流量,并初步支持域名转发战略,按照域名转发给分歧的后端办事,营业形式相对简单他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
在All in wireless时代,为了优化手机真个用户体验,下降办事器职员的开辟本钱,团体自行开辟了MTOP(手机淘宝开放平台)API网关,为客户端和办事器端供给了分歧的API平台他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。同一个域名仅经过URI照顾的API信息转发到响应的办事,接入网关需要支持按照API(URI区分)的路由转发才能,几年间敏捷增加到数万条法则他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
随着营业成长的日益邃密化,同一API下的分歧营业场景有望细分他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。比如对于双十一公布会的来历,手淘、付出宝等出站页面等场景要更邃密的控制他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。为了顺应营业成长,网关需要支持邃密化管控才能,按照营业请求参数和请求头停止治理和分流他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。每一个请求都要从不计其数条灵活的设置法则中婚配出唯一的途径,同时连结极高的性能,这是一件很是具有应战性的工作他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
营业模子图
操纵和保护布景
一路头根本支持根本设备不完善,网关层基于tengine搭建他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。最简单快速的处理计划是利用物理机,摆设流程和设置可以完成办事构建他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。随着营业的增加,设置治理成为瓶颈,网关层需要一个强大的设置治理平台,以标准化的方式天生营业设置他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。自立开辟的设置治理平台将设置分为三部分:利用设置、公共设置治理和证书设置他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
  • 常用设置:经过Git版本治理天生tenengine运转的根基设置,如启用模块设置、tenengine运转逻辑设置等他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
  • 设置:经过标准模板天生营业所需的引擎设置他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
  • 证书设置:由于证书有有用期,为了避免到期时忘记更新,还承当了自动更新证书的使命他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。初始系统摆设架构:
    该计划可以实现办事自助接入,经过设置治理平台的模板天生tengine设置,然后按时推送到网关机械,重新加载流程使设置生效他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    经过这类运维形式,可以不依靠根本设备快速演进他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。但是,随着营业的增加和集群范围的增大,物理机运维形式的弊端逐步显现他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。蛮横发展的时代已经曩昔,作为阿里办事的进口,稳定成为重中之重他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。物理机的二进制分发依靠手工摆设,需要批量履行号令安装rpm包,批量重启进程,这些都是经过黑屏操纵完成的他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    这类运维形式明显不能满足今朝的稳定性要求,经过野生公布轻易因误操纵形成系统故障他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。别的,很难保证物理机械运维的分歧性,包括二进制系统的分歧性和机械情况的分歧性检查(如内核参数等他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。).曩昔的野生运维方式明显已经跟不上时代的步伐他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    处理出书和情况分歧性题目标最好计划是容器化技术他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。随着团体根本设备的完善,接入网关的集装箱化革新扫除了障碍他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。稳定量(系统设置和二进制)打包成一个整体停止公布,变量(利用设置、公共设置和证书)继续由设置治理平台治理,并利用容器化技术停止调剂他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    容器转换后的公布和设置变动流程:
    容器化的架构简化了建站、扩容、收缩的操纵,公布效力获得了大幅提升他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。增加了审批流程,卡点系统化,避免了野生操纵能够带来的失利他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。公布进程还可以与监控系统毗连,自动报警和停息公布他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    焦点题目
    随着电贸易务成长越来越快,范围到达瓶颈后,营业会加倍横向扩大,邃密化水平会越来越高,迭代速度也会越来越高,网关层顺应营业变化的本钱也会变高他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。由此发生的焦点题目:
  • 运维复杂度:由于对性能的极端要求,网关集群对机械有特别要求;网关设置治理的特别性致使了运维的复杂性他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。特别性的存在不能很好的毗连团表现有的运维系统,需要升级;
  • 静态调剂才能不敷:随着接入营业的增加,支持的营业场景拓宽,营业对路由战略的灵活性和实时性要求越来越高他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。静态设置不管是有用实时性还是战略灵活性都难以满足营业成长需求,需要支持路由战略的静态调剂才能;
  • 流量隔离本钱高:缺少轻量级的营业范围隔离才能,新建集群本钱高,需要轻量级的多集群流量隔离计划来支持营业线分歧的收集封闭节奏和故障隔离他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。近几年云原生的快速成长也为网关层供给了更好的架构挑选他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    针对接入网关存在的题目,云原生架构连系团体营业场景和云原生开源系统,开启了AServer接入网关的云原生演进之路他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。对于分步考证,分化为运维系统升级和办事治理三个阶段网关为网状,南北架构拆分他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。接下来,具体诠释每个步调的演变他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    操纵和保护系统升级
    1待处理的题目
    经过容器化的升级摆设,大大简化了摆设运维形式,可以处理那时最突出的题目他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。但是,仅仅改变摆设形式是远远不够的:
  • 由于接入网关的特别性(比如需要和设置治理平台接口,有大量的VIP需求),不能间接和团体的根本设备接口,所以开辟了自力定制的运维工具他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。扩大和收缩进程需要多个根本组件经过非标准接口协同工作,极大地影响了运维产物的迭代效力他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
  • 故障机换机等操纵依靠内部系统轮询检测,团体根本设备系统只能经过与定制运维平台对接处置,延时较长他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
  • 运维从团体运维系统平分手出来他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。2进化思惟
    随着团体内部针对云原生利用设想的同一根本架构ASI(Alibabaserver Less infra structure)的慢慢完善,供给基于原生K8S API的完整云原生技术栈支持他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    云原生存划编排才能强,经过自界说实现k8s扩大,很轻易抹平网关层的特别性他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。ASI首创的自动化运维手段可以间接利用到网关层他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    经过节点池分别可以实现层对层模子的特别性他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。网关机节点池可以自界说模子和内核参数,消除了网关运维的特别性,同一治理运维他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    3进化计划
    经过k8s自带的控制器扩大才能,可以自界说容器结构,在扩大和收缩时监控Pod变化事务,向设置治理平台增加和删除机械,同时可以挂载/卸载VIPs,平滑运维的特别性,一切资本都由声明式API界说,方便运维他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    对于网关的运维,需要预留一个很是简单的运维平台,只用于搭建网站他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。与常见的利用相比,网关需要在响应的地区建立VIP停止附加域等操纵,轻量级且易于保护:
    经过ASI革新,将接入网关的运维整合到团体的ASI云原生系统(进步托付效力,去除专门的运维),通用才能下沉到ASI和根本系统,同时具有风险隔离、自规复和弹性的才能他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
  • 风险隔离:利用Sidecar功用来隔离平安和工程功用,以避免它们之间的相互干扰他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。假如平安才能异常,只会影响流量清洗他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。平安才能升级后,全部办事不会不成用他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
  • 自规复:对于容器的自愈才能,原本的容器化方式依靠于内部利用的轮询检测,缺少正确性和实时性他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。ASI升级后,经过对集装箱自己的检测,可以在3-5分钟内识别并更换故障集装箱;
  • 灵活性:自动灵活性他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。经过对ASI的革新,标准的声明式API可以用于各类系统的对接,组内组件可以集成,大大简化了扩大和收缩操纵,为自动化灵活性供给了支持他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
  • 屏障模子差别:经过节点池分别,网关利用可以利用特别模子,底层设置屏障差别,无需特别操纵他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。治理和网关网状收集
    1待处理的题目
    随着网关层接入办事范例的增加,需要支持数万条API路由法则,路由战略也越来越邃密化,tengine的原生才能没法满足营业需求他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。在曩昔的几年中,以非标准方式界说的Teengine模块的定制开辟已经很好地顺应了营业的成长他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。但随着营业需求加倍邃密化,Teengine模块定制开辟的本钱也逐步增加他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    2原始架构
  • 路由设置是模块设置和本机设置的组合他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。多个模块设置配合决议路由战略,分离的设置没法识别一个请求的完整路由途径他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
  • 经过功用模块的分别,很难依照营业粒度实现增量更新;
  • 基于tengine架构,静态变更才能不敷,域名变更天天按时推送设置并生效,没法满足营业快速迭代需求;
  • 非标准协议间接毗连分歧的管控平台,毗连本钱高,不轻易控制;
  • 对于分歧的营业线(如淘、优酷),要实现资本隔离,由于大部分模块设置采用静态公共设置,建站本钱较高他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。3进化思惟
    若何静态放置和细化控制路由战略是云原生系统下重要斟酌的题目他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。参考业界网关层做法,如孔、大使等他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。,支流的网关数据平面实现都是基于nginx大概envoy他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。分歧产物的可扩大性、静态结构才能和成熟度的比力:
    综合斟酌静态、标准和性能,利用envoy作为数据平面更合适云原生演进偏向:
    静态和灵活性
  • envoy实现的标准xDS协议充足灵活,可以静态设置和变动他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
  • Envoy具有杰出的可扩大性,经过实现过滤器扩大,可以实现团体独占的路由逻辑他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。标准
  • Istio标准组件,具有强大的社区支持和快速成长他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
  • 阿里巴巴团体mesh采用istio技术计划,利用envoy作为数据平面选项,可以与团体营业管控同一他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。表演
  • C++实现,性能充足好,开辟效力比tengine高他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。envoy的弱点是作为一个istio标准组件,它有很强的工具向路由才能,作为一个南北向组件,它需要一些性能和稳定性的优化,但从久远来看,静态性和标准化更重要他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    4进化计划
    复用组导频作为同一的控制平面组件,实现网关本身的网状化;
    控制平面需要为权限封闭供给一层治理和控制逻辑,以便供给每个显现的营业产物的编写他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。各产物经过k8s声明式api编写路由战略,然后由飞翔员控制平面转换成xDS数据平面协议,实时同步到数据平面特使他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。南向路由网关的实现架构:
    由于团体的大范围设置,几十万条路由法则,几千个利用,几十万个营业节点,开源系统很少有这样的范围他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。南北网关利用Pilot+Envoy计划后,需要对原生组件停止优化和定制,处理范围带来的性能和稳定性题目:
  • Pilot支持SRDS协议:处理大范围API设置带来的线性婚配性能题目他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
  • 设置更新:实现和进步控制面的增量更新才能,避免全更新带来的变更半径扩大风险他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
  • 节点变化优化:处理数十万营业节点状态变化对控制平面和数据平面性能的影响他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
  • 定制:按照团体独有的路由法则定制过滤器的实现他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。经过对开源系统的定制和优化,可以很好的婚配团体内部的需求,经过灵活的设置和组合,经过快速迭代控制平面通明传输的才能,实现团体内部分歧营业的特别需求他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    南北割裂
    1待处理的题目
    作为网关用户和营业之间的桥梁,连结用户长链的活跃度,优化协议,让用户尽能够快速稳定的毗连到群组;支持灵活的路由和融合办事限流战略,以及负载平衡他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。虽然毗连连结活动和路由转发完万可以作为网关,但它们对迭代效力和营业特征的需求是完全分歧的他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    在一些大的推行场景下,即使出现意外的流量高峰,网关层作为庇护营业办事的屏障,依靠高性能和水位预留,仍然可以稳如磐石他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。斟酌到保活长链,协议优化有这个长迭代周期和高性能;由于路由和流量清洗的战略灵活复杂,资本消耗自然相对较高他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。假如将路由和流量清洗的架构拆分,整体资本操纵率可以大猛进步他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    2进化思绪和计划
    与客户端交互的模块,如协议卸载、长链连结活动等他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。,并能连结极高的性能,被零丁朋分红北向集群他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。由于它们性能好,只需要几台机械就能筑起高高的堤坝盖住大水;至于办事路由战略,以及平安清算才能,更消耗性能,所以拆分到南向集群,由北向高坝庇护过载他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。南行集群可以下降预留水位,从而进步整体资本操纵率他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。这样既可以进步资本操纵率,又可以灵活设置,满足营业快速成长的需要他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    整体架构
    经过三个阶段的成长,终极的架构图以下:
    办事器接入网关云当地架构
  • 同一控制平面:经过团体同一控制平面停止营业接入、营业发现、融合和限流控制,起到同一处置变更和封闭的感化;
  • 北向毗连层:基于tengine,承载上亿在线用户和流量峰值,起到高坝的感化,进步南向路由层的资本操纵率;
  • 南向路由层:基于Envoy,经过导频转换xDS协议静态公布路由战略,实现静态放置路由和轻量级流量隔离的计划;
  • 云原生根本:运维运营基于团体同一根本架构ASI,屏障网关差别,下降运维复杂度他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。未来,阿里AServer接入网关将一步步向云原生演进他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。每一次进化都是基于困扰我们很久的题目,但并不止步于处理题目他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。同时,基于当前时代的处理计划,云原生架构的转型还远未竣事,云原生的上风还没有完全发挥出来他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。技术升级终极是为了办事产物他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。云原生升级后,我们有了强大的引擎他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。接下来我们要做的就是操纵这个引擎来革新产物形状,让基于网关的开辟者终极受益他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    产物集成
    一个网关产物最好的状态是什么样的状态?开辟者天天都在用,但不需要关心网关的存在,所以存在感最低的状态能够就是最好的状态他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。今朝从接入网关的产物形状上表暴露一些实现细节他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。当一个门户利用上线时,它需要几个分歧的系统停止交互来完成拜候他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。云原生革新完成后,可以更好的实现All in One,实现产物的集成和闭环他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    快速弹性
    ASI Pod虽然经过了升级革新,可是可以自动停止机械更换、机械迁移等操纵,下降了运维本钱他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。而尚云最重要的才能是快速弹性,比如双十一高峰前快速扩大,大促后快速收缩,可以大大削减大促预留的机械资本,从而节省巨额本钱他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。固然还有很多题目需要处理,比如平安性、牢靠性、灵活性、实时性,这些都需要配合云的根本设备,才能充实操纵云的上风他早就发现系统有个隐藏的缝隙私下花了好几个早晨优化了代码。
    关注我们,每周3次移动技术理论为你想干货!
  • 回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    Archiver|手机版|小黑屋|小白网-奉贤部落-奉贤免费信息发布平台  

    GMT+8, 2025-11-11 13:32 , Processed in 0.310714 second(s), 21 queries .

    Powered by Discuz! X3.4

    © 2001-2023 Discuz! Team.

    快速回复 返回顶部 返回列表