 蚂蚁金服网络代理演进之路3 uid转发目标zone 4 响应请求 5 写入cookie 6 再次请求app1 7 跨机房转发 50% 50% • 机房内zone随机路由 • Cookie zone转发 • 蓝绿发布 • 容灾 ØZone内容灾 Ø机房级别 Ø城市级别 • 弹性调度 • 压测 • 灰度蚂蚁金服SSL/TLS实践 合规 性能 安全软硬件一体解决方案 Intel QAT Cavium 3草案中的1-RTT机制通 过扩展的方式提前应用 • ECC-signature扩展 使用高效ECDSA签名算法的同 时,兼容广泛使用的RSA证书 按需握手 • 业务可根据需求灵活选择明文 或密文传输,提升业务效率 动态Record Size • 平衡吞吐与时延 高效 优化 灵活 TLS扩展安全合规能力持续升级 国密算法 • 拥抱监管 • 安全可控 • 金融科技 AntTLS库 • 基于OpenSSL 握手优化 短连补偿 智能心跳 数据压缩 质量模型 自动重试 云端补偿 柔性建连 假连淘汰 动态超时 § 终端策略覆盖移动网络难点 § 优化对业务透明 § ROI考虑 好网更快 弱网更好 协议优化 支付宝网络接入层架构示意 § 关键词:动态Hpack + PB + 动态字典 + Zstd通信协议&架构持续升级 多终端&协议接入 架构升级 云原生生态融合 § MQTT协议的IOT设备接入0 码力 | 46 页 | 19.93 MB | 6 月前3 蚂蚁金服网络代理演进之路3 uid转发目标zone 4 响应请求 5 写入cookie 6 再次请求app1 7 跨机房转发 50% 50% • 机房内zone随机路由 • Cookie zone转发 • 蓝绿发布 • 容灾 ØZone内容灾 Ø机房级别 Ø城市级别 • 弹性调度 • 压测 • 灰度蚂蚁金服SSL/TLS实践 合规 性能 安全软硬件一体解决方案 Intel QAT Cavium 3草案中的1-RTT机制通 过扩展的方式提前应用 • ECC-signature扩展 使用高效ECDSA签名算法的同 时,兼容广泛使用的RSA证书 按需握手 • 业务可根据需求灵活选择明文 或密文传输,提升业务效率 动态Record Size • 平衡吞吐与时延 高效 优化 灵活 TLS扩展安全合规能力持续升级 国密算法 • 拥抱监管 • 安全可控 • 金融科技 AntTLS库 • 基于OpenSSL 握手优化 短连补偿 智能心跳 数据压缩 质量模型 自动重试 云端补偿 柔性建连 假连淘汰 动态超时 § 终端策略覆盖移动网络难点 § 优化对业务透明 § ROI考虑 好网更快 弱网更好 协议优化 支付宝网络接入层架构示意 § 关键词:动态Hpack + PB + 动态字典 + Zstd通信协议&架构持续升级 多终端&协议接入 架构升级 云原生生态融合 § MQTT协议的IOT设备接入0 码力 | 46 页 | 19.93 MB | 6 月前3
 Service Mesh的实践分享难度极大。需要客户端修改 代码、发布、上线。 难度小。切换流量到remote proxy可以实 现用户无感知的无损升级。 难度小。通过LVS摘流量滚动升 级 动态扩容难度 应用内置,无须扩容 物理机sidecar单客户端,无须扩容 Daemonset根据宿主机的配置调整Proxy的 资源以应对客户端增多的情况。容量超标 则临时转移到remote proxy 承接临时流量和非主要流量, 基本无动态扩容需求。上云之 难度小。Sidecar故障可以将流量临时切到 remote proxy解决 升级难度 难度大。升级Sidecar需要业务容器一起发布,协调成本 高,而且全量升级sidecar对整个系统的动荡太大 难度小。切换流量到remote proxy可以实现用 户无感知无损升级。可以轻易的实现全网一月 一升级,快速的迭代、落地、反馈 动态扩容难度 单机使用,无须扩容 需预先根据宿主机的配置调整Proxy的资源以 应对客户端增多的情况。容量超标则临时转移 服务实例的差异导致配置相当复杂,容易 配置不合理 • 无法动态根据系统指标调整阈值 • 目标 • 用户无需拍脑袋设值,服务治理中心根据 历史指标进行推荐,对不合理的设置进行 建议,如 • 根据应用的历史延迟时间推荐超时设置 • 根据应用的历史流量数据推荐限流设置 • 根据动态指标自动调整配置 • 如单个实例内指标异常(超时率、cpu异常等) 动态调整限流值或直接降级 Proxy Server0 码力 | 30 页 | 4.80 MB | 6 月前3 Service Mesh的实践分享难度极大。需要客户端修改 代码、发布、上线。 难度小。切换流量到remote proxy可以实 现用户无感知的无损升级。 难度小。通过LVS摘流量滚动升 级 动态扩容难度 应用内置,无须扩容 物理机sidecar单客户端,无须扩容 Daemonset根据宿主机的配置调整Proxy的 资源以应对客户端增多的情况。容量超标 则临时转移到remote proxy 承接临时流量和非主要流量, 基本无动态扩容需求。上云之 难度小。Sidecar故障可以将流量临时切到 remote proxy解决 升级难度 难度大。升级Sidecar需要业务容器一起发布,协调成本 高,而且全量升级sidecar对整个系统的动荡太大 难度小。切换流量到remote proxy可以实现用 户无感知无损升级。可以轻易的实现全网一月 一升级,快速的迭代、落地、反馈 动态扩容难度 单机使用,无须扩容 需预先根据宿主机的配置调整Proxy的资源以 应对客户端增多的情况。容量超标则临时转移 服务实例的差异导致配置相当复杂,容易 配置不合理 • 无法动态根据系统指标调整阈值 • 目标 • 用户无需拍脑袋设值,服务治理中心根据 历史指标进行推荐,对不合理的设置进行 建议,如 • 根据应用的历史延迟时间推荐超时设置 • 根据应用的历史流量数据推荐限流设置 • 根据动态指标自动调整配置 • 如单个实例内指标异常(超时率、cpu异常等) 动态调整限流值或直接降级 Proxy Server0 码力 | 30 页 | 4.80 MB | 6 月前3
 严选 ServiceMesh 实践ServiceMesh 实践 王国云 网易资深专家 严选中台技术团队负责人/容器化负责人1/24 背景 2016.4 2016.7 2017 严选正式对外发布 技术团队规模:10+ 单体 严选初创 严选业务快速增长 RPC框架、cNginx发布 技术团队规模:50+ Service Mesh 架构试点 严选业务快速增长 服务化 技术团队规模:200+ Service Mesh 架构全面落地 CNCF 2017年4月25日 1.0Releases Linkerd 2016年9月13日 1.0Releases 2017年9月14日 加入 CNCF Envoy 2017年9月15日 发布 最新版本:0.7.1 nginmesh 2016年9月29日第一次被公开提出 Service Mesh 概念正式提出9/24 云原生 Service Mesh 框架 - Istio • 注册发现:云外基于 Consul,云内基于 K8s 默认的 ETCD √ 调用控制 协议支持:HTTP 1.X/2.X,GRPC,WebSocket,Dubbo, Thrift √ 路由控制:静态路由、动态路由、流量染色、分流控制等 √ 负载均衡:支持 RR、权重、一致性 Hash 等 √ 流量复制:Envoy 自带 √ 故障转移 √ 安全 访问控制:RBAC vs Mixer √ 治理控制0 码力 | 25 页 | 2.07 MB | 6 月前3 严选 ServiceMesh 实践ServiceMesh 实践 王国云 网易资深专家 严选中台技术团队负责人/容器化负责人1/24 背景 2016.4 2016.7 2017 严选正式对外发布 技术团队规模:10+ 单体 严选初创 严选业务快速增长 RPC框架、cNginx发布 技术团队规模:50+ Service Mesh 架构试点 严选业务快速增长 服务化 技术团队规模:200+ Service Mesh 架构全面落地 CNCF 2017年4月25日 1.0Releases Linkerd 2016年9月13日 1.0Releases 2017年9月14日 加入 CNCF Envoy 2017年9月15日 发布 最新版本:0.7.1 nginmesh 2016年9月29日第一次被公开提出 Service Mesh 概念正式提出9/24 云原生 Service Mesh 框架 - Istio • 注册发现:云外基于 Consul,云内基于 K8s 默认的 ETCD √ 调用控制 协议支持:HTTP 1.X/2.X,GRPC,WebSocket,Dubbo, Thrift √ 路由控制:静态路由、动态路由、流量染色、分流控制等 √ 负载均衡:支持 RR、权重、一致性 Hash 等 √ 流量复制:Envoy 自带 √ 故障转移 √ 安全 访问控制:RBAC vs Mixer √ 治理控制0 码力 | 25 页 | 2.07 MB | 6 月前3
 Service Mesh 发展趋势(续) 蚂蚁金服 | 骑士到中盘路向何方?棋到中盘路往何方Part 0:前言 5月底,我在Cloud Native Meetup上做了一个“ServiceMesh 发展趋势:云原生中流砥柱”的演讲,当时主要讲了三块内容: - Service Mesh产品动态 - Service Mesh发展趋势 - Service Mesh与云原生 今天的内容可以视为是上次演讲部分内容的深度展开,如社区 关心的Mixer v2,以及我个人看到的一些业界新的技术方向, WebAssembly (WASM) in Envoy - https://github.com/envoyproxy/envoy/issues/4272 - 计划在1.12版本提供(1.11版本发布于7月12日) - envoy-wasm项目:Playground for Envoy WASM filter - https://github.com/envoyproxy/envoy-wasm Assembly扩展Envoy的好处 Part 2:ServiceMesh灵魂拷问二:性能有了,架构怎么办? • 避免修改Envoy • 避免网络远程调用(check & report) • 通过动态装载(重载)来避免重启envoy • 隔离性 • 实时A/B测试 (内容来自”Extending Envoy with WebAssembly”)Envoy支持Web Assembly的架构 Part0 码力 | 43 页 | 2.90 MB | 6 月前3 Service Mesh 发展趋势(续) 蚂蚁金服 | 骑士到中盘路向何方?棋到中盘路往何方Part 0:前言 5月底,我在Cloud Native Meetup上做了一个“ServiceMesh 发展趋势:云原生中流砥柱”的演讲,当时主要讲了三块内容: - Service Mesh产品动态 - Service Mesh发展趋势 - Service Mesh与云原生 今天的内容可以视为是上次演讲部分内容的深度展开,如社区 关心的Mixer v2,以及我个人看到的一些业界新的技术方向, WebAssembly (WASM) in Envoy - https://github.com/envoyproxy/envoy/issues/4272 - 计划在1.12版本提供(1.11版本发布于7月12日) - envoy-wasm项目:Playground for Envoy WASM filter - https://github.com/envoyproxy/envoy-wasm Assembly扩展Envoy的好处 Part 2:ServiceMesh灵魂拷问二:性能有了,架构怎么办? • 避免修改Envoy • 避免网络远程调用(check & report) • 通过动态装载(重载)来避免重启envoy • 隔离性 • 实时A/B测试 (内容来自”Extending Envoy with WebAssembly”)Envoy支持Web Assembly的架构 Part0 码力 | 43 页 | 2.90 MB | 6 月前3
 进击的 Traefik | 云原生边缘路由器探秘(Docker, Swarm, Kubernetes, M arathon, Mesos, Consul, Etcd, Z ookeeper, BoltDB, Rest API, file…) 来自动化、动态的应用它的 配置文件进行设置Traefik 项目 •https://github.com/containous/traefik •MIT License •Written in Go •25 configurations are NOT compatible with the v2.X )Traefik 2.0 新特性 •TCP 支持 •中间件 •全新的 Dashboard •金丝雀发布 •流量复制 •其他功能......1 Traefik 介绍 2 Traefik 2.0 核心概念 3 Traefik With Docker 4 Traefik With KubernetesTraefik )Providers • Providers 可以是编排工具、容器 引擎或者 key-value 存储等等 • Traefik 通过 Providers 的 API 查 找有关路由相关信息,并动态更新 • 基于标签、key-value、注解、文 件 • Docker、Kubernetes、Marathon 、Rancher、FileEntryPointsRouters匹配器Services0 码力 | 35 页 | 8.58 MB | 6 月前3 进击的 Traefik | 云原生边缘路由器探秘(Docker, Swarm, Kubernetes, M arathon, Mesos, Consul, Etcd, Z ookeeper, BoltDB, Rest API, file…) 来自动化、动态的应用它的 配置文件进行设置Traefik 项目 •https://github.com/containous/traefik •MIT License •Written in Go •25 configurations are NOT compatible with the v2.X )Traefik 2.0 新特性 •TCP 支持 •中间件 •全新的 Dashboard •金丝雀发布 •流量复制 •其他功能......1 Traefik 介绍 2 Traefik 2.0 核心概念 3 Traefik With Docker 4 Traefik With KubernetesTraefik )Providers • Providers 可以是编排工具、容器 引擎或者 key-value 存储等等 • Traefik 通过 Providers 的 API 查 找有关路由相关信息,并动态更新 • 基于标签、key-value、注解、文 件 • Docker、Kubernetes、Marathon 、Rancher、FileEntryPointsRouters匹配器Services0 码力 | 35 页 | 8.58 MB | 6 月前3
 七牛容器云ServiceMesh实践• 故障注入较困难(代码侵 入性强) • 测试环境不稳定,后端Pod 频繁重启 • 解决方案 • Contour产品化 • Istio的灰度发布和流量管理 • Istio的Tracing产品化落地场景—云存储系统 • 历史问题 • 灰度发布 • 预上线系统验证体系 • 系统故障隔离 • 跨集群访问 • 线上问题链路追踪 • 解决方案 • Istio南北流量分流策略产品化 • 基于Istio的QoS产品化 基于Istio的Tracing产品化 • 跨集群流量调度七牛容器云产品逻辑架构 Kubernetes + Docker + 生态链七牛容器云产品未来发展 • 更多功能 • 故障熔断 • 故障注入 • 业务配置动态分发 • 优化升级 • 性能优化: • DPDK + eBPF • 系统优化 • 根据需求裁剪Istio。解耦Envoy和其他组件 • 裁剪Istio相关CRD,简化系统结构ServiceMesher公众号0 码力 | 15 页 | 3.86 MB | 6 月前3 七牛容器云ServiceMesh实践• 故障注入较困难(代码侵 入性强) • 测试环境不稳定,后端Pod 频繁重启 • 解决方案 • Contour产品化 • Istio的灰度发布和流量管理 • Istio的Tracing产品化落地场景—云存储系统 • 历史问题 • 灰度发布 • 预上线系统验证体系 • 系统故障隔离 • 跨集群访问 • 线上问题链路追踪 • 解决方案 • Istio南北流量分流策略产品化 • 基于Istio的QoS产品化 基于Istio的Tracing产品化 • 跨集群流量调度七牛容器云产品逻辑架构 Kubernetes + Docker + 生态链七牛容器云产品未来发展 • 更多功能 • 故障熔断 • 故障注入 • 业务配置动态分发 • 优化升级 • 性能优化: • DPDK + eBPF • 系统优化 • 根据需求裁剪Istio。解耦Envoy和其他组件 • 裁剪Istio相关CRD,简化系统结构ServiceMesher公众号0 码力 | 15 页 | 3.86 MB | 6 月前3
 蚂蚁金服双十一 Service Mesh 超大规模落地揭秘Mesh-结论9 为什么要 ServiceMesh-结论-方案 应用A 应用 应用B 应用C 应用D 应用E SOA 解耦了不同的业务团队之前的耦合 服务注册中心客户端 限流熔断客户端 动态配置客户端 故障注入客户端 Service Mesh 解耦了业务开发与基础团队之前的耦合 应用代码 业务应用开发 基础设施开发 Mesh 化10 三、方案落地 方案落地11 最终选型:自研数据面+轻量 方案落地-框架升级后 应用代码 SOFABoot_Old SOFABoot/SOFARPC API SOFABoot_New JVM RPC 检测 pod 变量,注 入启动参数 判断开启了 MOSN 发布和订阅服务 直接调用,关闭寻 址功能 其他16 方案落地-容器替换 Pod Pod Old Pod New With MOSN Pod New With MOSN 扩容 缩容 资源0 码力 | 26 页 | 2.71 MB | 6 月前3 蚂蚁金服双十一 Service Mesh 超大规模落地揭秘Mesh-结论9 为什么要 ServiceMesh-结论-方案 应用A 应用 应用B 应用C 应用D 应用E SOA 解耦了不同的业务团队之前的耦合 服务注册中心客户端 限流熔断客户端 动态配置客户端 故障注入客户端 Service Mesh 解耦了业务开发与基础团队之前的耦合 应用代码 业务应用开发 基础设施开发 Mesh 化10 三、方案落地 方案落地11 最终选型:自研数据面+轻量 方案落地-框架升级后 应用代码 SOFABoot_Old SOFABoot/SOFARPC API SOFABoot_New JVM RPC 检测 pod 变量,注 入启动参数 判断开启了 MOSN 发布和订阅服务 直接调用,关闭寻 址功能 其他16 方案落地-容器替换 Pod Pod Old Pod New With MOSN Pod New With MOSN 扩容 缩容 资源0 码力 | 26 页 | 2.71 MB | 6 月前3
 Service Mesh 在蚂蚁金服生产级安全实践Envoy 提出的 Sidecar 证书管理方案,方案的核心流程在于引入 SDS Server 进行密钥管理和分发,Sidecar 通过 gRPC 请求获取证书,并利用 gRPC stream 能力实现证书动态轮转。 当然,Sidecar 和 SDS Server 的通信也需要保证自身的通信安全,存在以下两种方案:  Sidecar 与 SDS Server 采用 mTLS 通信,采用静态证书方案,通过 selector 能力选择指定范围内(批量 or 单实例)的Pod 实例,同时关 联社区现有CRD,从而实现保留在兼容社区CRD设计方面的灵活性,又能实现任意CRD的更细粒度控 制能力 以TLS 开关为例,在发布TLS开关时,先提交 ScopeConfig 通过 Pod IP 这个label 实现单实例开关控制, 在观察正常后,逐步调整ScopeConfig 的Selector 范围,实现功能的灰度上线能力Service0 码力 | 19 页 | 808.60 KB | 6 月前3 Service Mesh 在蚂蚁金服生产级安全实践Envoy 提出的 Sidecar 证书管理方案,方案的核心流程在于引入 SDS Server 进行密钥管理和分发,Sidecar 通过 gRPC 请求获取证书,并利用 gRPC stream 能力实现证书动态轮转。 当然,Sidecar 和 SDS Server 的通信也需要保证自身的通信安全,存在以下两种方案:  Sidecar 与 SDS Server 采用 mTLS 通信,采用静态证书方案,通过 selector 能力选择指定范围内(批量 or 单实例)的Pod 实例,同时关 联社区现有CRD,从而实现保留在兼容社区CRD设计方面的灵活性,又能实现任意CRD的更细粒度控 制能力 以TLS 开关为例,在发布TLS开关时,先提交 ScopeConfig 通过 Pod IP 这个label 实现单实例开关控制, 在观察正常后,逐步调整ScopeConfig 的Selector 范围,实现功能的灰度上线能力Service0 码力 | 19 页 | 808.60 KB | 6 月前3
 金融级云原生 PaaS 探索与实践金融级云原生 PaaS 探索与实践 王成昌(晙曦)蚂蚁金服技术专家2/20 一、业务背景 二、多集群管控 三、发布运维体系 目 录 contents 目录3/20 一、业务背景 业务背景4/20 业务背景 业务架构 演进 • 容量  应用|数据库|机房 • 容灾  机房|地域5/20 业务背景 业务架构 单元化 • 高可用 • 一致性 • 可扩展 • 面向站点级别输出7/20 PaaS 能力 • 面向多租户多环境; • 基础资源管控; • 应用发布运维体系; • 业务实时监控,日志收集; • 机房级和地域级容灾能力; 业务背景业务背景 CAFÉ API Server Aggregation Layer 异地多活架构 同城双活架构 K8S API Server 基础发布运维 跨集群应用 资源管理 IaaS层(Aliyun/OpenStack/VMWare/Bare 跨集群管理 单元化能力 容器镜像管理 批次发布 原生资源管理 Pod伸缩管理 集群伸缩管理 变更管控 配额管理 运维原子操作 精细化调度 接入层流程调拨 应用层流量调拨 跨集群状态 分发/汇聚 数据层流量调拨 压测/灰度 流量管理 单元化 元数据管理 弹性流量管理 跨集群发布策略 多集群管理 跨集群网络 跨集群镜像管理 蓝绿发布 灰度分组发布 中间件变配 (DRM/Scheduler/Message)0 码力 | 20 页 | 1.71 MB | 6 月前3 金融级云原生 PaaS 探索与实践金融级云原生 PaaS 探索与实践 王成昌(晙曦)蚂蚁金服技术专家2/20 一、业务背景 二、多集群管控 三、发布运维体系 目 录 contents 目录3/20 一、业务背景 业务背景4/20 业务背景 业务架构 演进 • 容量  应用|数据库|机房 • 容灾  机房|地域5/20 业务背景 业务架构 单元化 • 高可用 • 一致性 • 可扩展 • 面向站点级别输出7/20 PaaS 能力 • 面向多租户多环境; • 基础资源管控; • 应用发布运维体系; • 业务实时监控,日志收集; • 机房级和地域级容灾能力; 业务背景业务背景 CAFÉ API Server Aggregation Layer 异地多活架构 同城双活架构 K8S API Server 基础发布运维 跨集群应用 资源管理 IaaS层(Aliyun/OpenStack/VMWare/Bare 跨集群管理 单元化能力 容器镜像管理 批次发布 原生资源管理 Pod伸缩管理 集群伸缩管理 变更管控 配额管理 运维原子操作 精细化调度 接入层流程调拨 应用层流量调拨 跨集群状态 分发/汇聚 数据层流量调拨 压测/灰度 流量管理 单元化 元数据管理 弹性流量管理 跨集群发布策略 多集群管理 跨集群网络 跨集群镜像管理 蓝绿发布 灰度分组发布 中间件变配 (DRM/Scheduler/Message)0 码力 | 20 页 | 1.71 MB | 6 月前3
 陌陌Service Mesh架构实践Redis传输协议 / 复用Redis客户端 • 服务发布Proxy / 并行调用Proxy 服务治理 • 服务治理平台、配置中心 • 监控、日志、分布式跟踪 • 异步调用、压测7/24 流量代理机制 PHP服务发布入流量代理 PHP并行调用出流量代理 16年起开始使用流量代理机制解决跨语言服务治理问题8/24 分享主题:字号 分享嘉宾 发布服务数 2000+ 注册实例数 2万+ sidecar模式 • 与业务进程相同Pod不同Container 陌陌微服务容器化部署比例在80%以上 并且还在进一步推进 业务接入方式 • 研发人员:升级SDK版本 • SRE:发布系统配置发布项 sidecar模式部署17/24 数据平面升级方式 – 平滑升级机制 平滑要求 • 业务进程不重启 • 流量保持不变 方案选择 • FD迁移 vs 哨兵集群 原理 • sendmsg 借助JNI与Netty Java实现FD迁移18/24 数据平面升级方式 – 发布流程 容器化发布方式 • 发布过程同时存在新旧两个Agent • 注入新Container • 预留占位Container • Container内部升级 当前方案 运维Agent • 单个Pod升级Agent • 多个Pod发布编排 Agent发布流程19/24 数据平面容灾方式 服务类应用 • 场景:出流量由入流量产生0 码力 | 25 页 | 1.25 MB | 6 月前3 陌陌Service Mesh架构实践Redis传输协议 / 复用Redis客户端 • 服务发布Proxy / 并行调用Proxy 服务治理 • 服务治理平台、配置中心 • 监控、日志、分布式跟踪 • 异步调用、压测7/24 流量代理机制 PHP服务发布入流量代理 PHP并行调用出流量代理 16年起开始使用流量代理机制解决跨语言服务治理问题8/24 分享主题:字号 分享嘉宾 发布服务数 2000+ 注册实例数 2万+ sidecar模式 • 与业务进程相同Pod不同Container 陌陌微服务容器化部署比例在80%以上 并且还在进一步推进 业务接入方式 • 研发人员:升级SDK版本 • SRE:发布系统配置发布项 sidecar模式部署17/24 数据平面升级方式 – 平滑升级机制 平滑要求 • 业务进程不重启 • 流量保持不变 方案选择 • FD迁移 vs 哨兵集群 原理 • sendmsg 借助JNI与Netty Java实现FD迁移18/24 数据平面升级方式 – 发布流程 容器化发布方式 • 发布过程同时存在新旧两个Agent • 注入新Container • 预留占位Container • Container内部升级 当前方案 运维Agent • 单个Pod升级Agent • 多个Pod发布编排 Agent发布流程19/24 数据平面容灾方式 服务类应用 • 场景:出流量由入流量产生0 码力 | 25 页 | 1.25 MB | 6 月前3
共 25 条
- 1
- 2
- 3













