从网络接入层到 Service Mesh,蚂蚁金服网络代理的演进之路

【信息科学与工程学】【产品体系】第三十九篇 IT产品系列需求01 互联网行业的需求 经过多轮补充,现整理出覆盖存储、网络、计算、安全、数据治理、AI治理、物联网/工控、管理与经营​ 八大领域的完整需求目录,共60条​ 详细需求。 阅读详情

详细阅读本文大约需要15分钟,先花150s听听是否对本文感兴趣吧~

本文作者:肖涵(涵畅)

上篇文章《诗和远方:蚂蚁金服 Service Mesh 深度实践 | QCon 实录》中,介绍了 Service Mesh 在蚂蚁金服的落地情况和即将来临的双十一大考,帮助大家了解 Service Mesh 未来发展方向和前景。蚂蚁金服持续在进行 Service Mesh 布道和交流。本文内容整理自 10 月 26 日 Service Mesh Meetup#7 成都站主题演讲,现场视频以及分享 PPT 获取方式见文章底部。

从网络硬件设备到自研平台,从传统服务治理到 Service Mesh,本文将介绍蚂蚁金服网络代理在接入层以及 Service Mesh 化道路上是如何一步步支撑起秒级百万支付,千万春晚咻一咻的。

前言


在云计算和 SDN 下,我们经常听到流量的东西南北向概念,简单来说从外部 Internet 等到数据中心内部的流量走向被称为南北流量,数据中心内部的 VM 之间的流量被称为东西流量。

当我们追踪南北向的网络流,请求通常会经过四层负载均衡,七层负载均衡等,这通常被我们称为网络接入层代理。当数据中心内部主动访问公网时候,流量通常也会经过 NAT 网关等做网络地址的转换,这也被我们称为网络代理。当我们把视角转向数据中心内部,网络代理的存在感似乎不是那么强,随着 SOA 的发展我们形成了各种成熟的服务通信框架,例如蚂蚁金服的 SOFARPC,阿里集团的 HSF,Google 的 gRPC 等等,网络代理功能被集成进了各种通信框架中,似乎已经 Proxyless 化了,但是随着微服务以及 Service Mesh 的架构提出,东西向的网络代理以独立的姿态又出现了。

本文将围绕蚂蚁金服近十年网络代理的变迁,揭示整个蚂蚁金服接入层网络以及 Service Mesh 的演进过程,同时带来我们的思考。

旧瓶新装

我们先来看看业界情况,传统四层负载均衡的代表产品当然是 IPVS,百度阿里等公司早年均对 IPVS 做了非常深度的定制功能,支撑了早期业务的飞速发展。接着也有 DPDK(阿里云 SLB),类 DPDK 技术的代表 Google 的 Maglev 以及 eBPF 技术的代表 Facebook 的 Katran 出现。

七层网络代理各个大厂均有产品代表,Google 的 GFE、百度 的 BFE、腾讯 的 TGW,阿里经济体内部也因为场景等原因有众多,例如手淘的 Aserver,集团 web 统一接入 Tengine,当然还有蚂蚁金服的 Spanner(后面会详细介绍)。同时随着 Service Mesh 概念的提出和技术的逐渐成熟,Mesh 中 Sidecar 角色的网络代理也像雨后春笋一样多了起来,包括蚂蚁金服的 SOFAMosn,Istio 社区方案的 Envoy 以及 Rust 编写的 Linkerd,当然 Service Mesh 场景的网络代理和网络接入层的代理我认为没有本质的差别,随着云原生的深入化,大家终将会形成合力并保持一致的形态。

上图是2019年 Gartner Networking 方向的曲线,可以看到在上升和爆发区有着非常多的网络代理的影子(Secure Access Service Edge,Service Mesh,Edge Networking,Firewall as a Service etc.),虽然网络代理是一项古老的技术以及产品形态,但是仍然随着基础设施以及业务的变化以新的能力和角色展现在世人眼前。

网络代理的十年

网络代理技术一直围绕“高效接入,访问加速,稳定高可用,安全合规”四个关键词,不断升级核心能力,架构以及运维能力,底层基础网络物理带宽从1G到10G、25G、100G;阿里骨干广域网络走出杭州扩展到全国、全球规模,不断地通过前瞻技术架构研发,技术自主能力的提升和转变,助力业务发展。

蚂蚁金服应用网络架构概览

产品理念

我们应该以什么样的业务设计来满足上层业务以及市场的需要?产品理念决定了产品的走向,我们设定了网络产品的核心理念模型:

网络产品设计理念

接入层代理十年变迁


接入层网络代理的十年变迁之路,我们可以总结为三个时代,四个阶段:PC 时代,移动时代和万物互联云原生时代,伴随着这三个时代,我们经历了四个关键路径。

前世

2010年前蚂蚁金服网络代理是商用设备的时代,包括 F5 的 bigip,Netscaler 等产品,对于商业设备白盒化,大家比较熟知的是去 IOE,其实网络设备走在了更前面。使用商用设备主要有几个问题,厂商的 Lockin,成本以及灵活扩展等问题,所以从2010年蚂蚁金服开始向自主研发演进。

自主研发

我们同时开启了四七层网络接入的自研之路,四七层网络由于场景的不同,在整个演进路线上也有较大的差异。

四层负载均衡

四层网络由于不理解业务语义,主要进化路线是伴随着系统技术,硬件技术的变化,围绕提高吞吐,降低延迟的目标而演进。2014年全面使用 DPDK 进行技术重构,将传统基于内核技术的 IPVS 新建,转发指标分别从万级,十万级提高到百万和千万级的每秒包转发。

同时随着 Ebpf,Xdp 技术的出现,基于内核的高速转发平面产品又横空出世(包括 Facebook 开源的 Katran)打破了 DPDK 技术的垄断,同时可编程交换芯片以及 P4 语言也加入了这一站场,这里不具体讨论每种技术的优劣。

Spanner

Spanner 是蚂蚁金服的统一接入网关,其意为扳手,主要是为蚂蚁金服 SSL 卸载和网络接入提供了白盒化解决方案,承载了蚂蚁金服所有的业务流量,包括支付宝 App,Web,商户等的终端访问。

金融级三地五中心架构的流量调度

上图展示了 Spanner 的编年史,在2013年蚂蚁金服上架了自己的逻辑数据中心架构 LDC,同时随着演进支持了目前的蚂蚁金服金融级的三地五中心容灾架构:

为了支持这套架构,蚂蚁金服的所有基础设施都进行了改造和技术升级,流量调拨能力作为最基础的能力,是一个基本盘,Spanner 通过对请求头的识别以及全站转发规则映射来实现流量调度,支撑并不限于以下场景:

  • 机房内随机路由;

  • 蓝绿发布;

  • 容灾:

    • 逻辑机房内容灾;

    • 机房级别;

    • 城市级别;

  • 弹性调度;

  • 压测流量调度;

  • 灰度流量调度;

SSL/TLS 实践

蚂蚁金服作为全集团最早实践 https 全站的 BU,一直围绕着安全,合规,性能的主题进行全站加密体系的建设。

成本之战

前面提到2012年 Spanner 全面上线后,我们接入层具备了定制业务逻辑的能力,在2013年很好支撑了 LDC 的上线,同时我们在性能成本方面也有机会去进行持续的提升,同年我们引入 SSL 加速卡软硬件一体解决方案,从现在来看该套方案已经非常成熟了,集团 Tengine,Openssl 都提供了非常方便的接入框架,但是当年这一块还一直处于探索阶段。我们在 Spanner 里做了 Nginx 的 SSL 握手异步化改造,改造了 Openssl 同 Cavium 的 SSL 加速卡进行适配,整套方案在当时的机型上较 CPU 提升了基于 RSA2048 算法的 SSL 握手3倍的性能,同时也对后续各大厂商在这方面的实践产生了指导性意义。

性能之战

在解决了全站 SSL 带来的成本提升问题后,协议性能以及用户体验问题摆在了我们面前,2018年8月,互联网工程任务组(IETF)正式发布 TLS1.3 协议的最终版本(RFC 8446)。该协议在安全性、性能和隐私方面有重大改进,大大提升 HTTPS 连接的速度性能。同年9月 Openssl 也宣布发布其最新版本 openssl1.1.1,支持 TLS1.3。但大家可以看到,无论是协议还是实现都在2018年才真正 Realese,但是在2014,2015年我们已经面临了移动网络下的 SSL 带来的问题,最终我们基于 TLS1.3 草案,在 TLS1.2 上以扩展形式实现了:

  • 1RTT,0RTT 减少握手延迟;

  • Cache Info 扩展缓存证书等服务端信息,避免再次握手时重复传输数据;

  • ECDHE-keyshare 扩展;

  • ECC-signature 扩展使用高效 ECDSA 签名算法的同时,兼容广泛使用的 RSA 证书;

  • Small Ticket 自定义 Session Ticket 编码格式,从160 byte -> 76 byte;

我们提前享受了 TLS1.3 带来了红利同时在此基础上做了更多优化,沉淀了蚂蚁金服的轻量级 mTLS 加密库。

安全合规能力持续提升

央行、国家密码管理局、支付清算协会等开启了非银行支付机构的国产密码落地改造工作,蚂蚁金服也全面开始拥抱监管,安全可控以及金融科技的能力建设。我们将此前在加密库,Openssl 等方面的积累沉淀再启程,打造了Babassl 库(阿里经济体共同打造):

  • Brisk and Better assurance SSL;

  • 基于Openssl;

  • 合并经济体内部对 Openssl 的定制修改;

  • 全面兼容现有国家密钥安全体系,并在此基础上推出了性能更优的国密+tls1.3单证书标准;

  • 支持 SGX 等可信机制;

  • 轻量级,适配多终端;

同时我们有 Openssl 亚洲唯一 committer 杨洋加持。

移动无线战役

伴随着 ALL IN 无线的集团战略的推进、支付宝 App 使用的人数增长和场景复杂化,我们同支付宝网络团队于2015年合作进行了名为“一网打尽”的移动技术整治专项,在介绍具体的技术改造前,我们先来看看移动互联网场景的问题:

  • 端到端的无线网络复杂性;

  • 运营商网络黑盒;

  • 无线终端的长时在线性;

具体到支付宝 App,线上支付、线下支付、大促、境外游支付等为常见的场景,而操作响应慢、无响应、支付缓慢、push 消息不及时等都是令人头痛的移动体验,所以我们围绕快速稳定和高效进行一场移动无线战役,这里将着重分析在 Spanner 上进行的技术改造。

咻一咻的并发挑战

网络通道方面是一个持续建设过程。此前我们基于 TCP 通道以及 SPDY 私有帧打造了一套高效的端到端的网络链路,一网打尽网络专项主要对流量通道进行了持续升级和流量收编,将 RPC 链路,Push 链路统一。由于当时的背景,HTTP2 并没有完备的实现,同时不支持双向全双工通信,HTTP2 也并没有对移动网络量身定做非常多的优化。基于此我们在统一通道上实现了新的协议 MMTP(蚂蚁无线传输协议)以及 MTLS(SSL/TLS 实践中提到),我们将Hpack 进行了动态化,同时进入基于 Zstd 的动态字典压缩算法,同时在实现上对包大小的追求到了极致,较之前的网络体验提升非常明显。在2015年的春晚红包中,我们支撑了3亿终端用户同时在线,数千万每秒的咻一咻点击。

经此一役,我们构建了统一接入双工通道,实现了移动网络通信的确定性,最终具备数亿活跃设备触达、上亿设备同时在线、体验可靠流畅的云管端通道技术能力,在此之后沉淀为蚂蚁金融科技移动产品 mPass 的网络接入组件。

万物互联云原生

这一阶段是我们再启程的阶段,通过前面个阶段的锤炼,我们的接入层已成体系,具备了持续集成,快速迭代的底座,为更好支持业务的不确定性提供了坚实的底盘。我们同蚂蚁安全团队、支付宝网络团队共同持续进行安全合规加强,网络体验提升的技术能力加强。

物联设备接入

基于 Spanner,我们实现了 MQTT 协议可以通过非常小的接入成本实现新的设备和协议的接入。目前我们支持了 MQTT 协议的 IoT 设备接入,包括支付宝收银盒等产品形态。

安全防攻击

在安全防攻击方面蚂蚁接入层一直在持续演进,通过和蚂蚁安全团队共建的 WAF,流量镜像等,完备了接入层的安全合规体系。

通信协议与架构升级

在高效接入方面蚂蚁接入层一直在持续演进,通过引入 QUIC 协议,蚂蚁全球加速节点来提升扫码支付,商户支付,境外游,海外钱包等的用户体验。

QUIC较优实践

  • 引入 QUIC LB 解决 QUIC 连接迁移难题;

  • 多进程轮转 Listen 解决 Server 平滑升级;

  • 服务不可用的网络 Reset;

  • UDP 数据包高吞吐内核调优;

  • 0RTT token 校验,防重放攻击;

  • 客户端 MTU 探测;

蚂蚁全球网络加速

为了提升境外游,蚂蚁海外站点等的蚂蚁金融用户体验,我们利用阿里集团全球的骨干网络,基于蚂蚁网络接入层技术建设了蚂蚁全球网络加速节点。

云原生生态融合

目前互联网最流行的词非“云原生”莫属,通过业务与基础设施解耦带来生产力解放的同时,传统基础设施的边界越来越模糊,IaaS 与 PaaS 将在一定程度上融合。目前传统的网络接入代理(包括 Spanner)仍然是以独立于应用生命周期的方式,通过中间层(多为自身管控平面)与业务服务进行关联,这样导致维护成本颇高,在服务通信 mesh 化后,接入层也可以通过下沉到中间件方式,从而达到基础设施融合的目的。在网络代理数据平面方面 CNCF 正在筹建通用数据平面 API 工作组(Universal Data Plane API Working Group / UDPA-WG),以制定数据平面的标准 API,为 L4/L7 数据平面配置提供事实上的标准。后续有望看到东西,南北流量代理均兼容 UDPA,从而编织出一张全局统一调度的云原生网络。

Mesh 架构下的网络代理

服务发现与路由

东西流量的服务发现与路由,其实是一个去网络代理的过程,我们可以看到从初期的集中式代理演进到了服务配置中心的点对点通信,但是在云原生微服务的演进过程中,我们又对网络代理有了新的要求。这里我不再着重描述 Service Mesh 是什么,能解决什么问题,只是稍作强调一下在 Service Mesh 场景下,网络代理又以新的方式回来了,他站在每一个服务的旁边帮助服务打理与业务无关的各种网络以及服务治理问题(负载均衡,服务路由,鉴权等)。

为金融业务而生的 SOFAMesh

蚂蚁金服于2017年开始探索 Service Mesh,2018年开始自研 Sidecar-SOFAMosn 以及控制平面(整体产品SOFAMesh),2019年上半年开始落地支撑了618部分业务,2019年下半年全面铺开迎接双十一大促,目前对外公布数据是覆盖交易核心链路100+应用,数十万容器实例,目前正在静待今年双十一的验证。

可以看到蚂蚁金服 SOFAMesh 在架构演进上的决心非常大,目前已经到了中盘拿结果阶段,为什么蚂蚁金服需要 Service Mesh:

  • 拥抱微服务,云原生;

  • 异构语言体系融合;

  • 统一服务治理;

  • 运维体系有利支撑;

  • 全局流量管理,打通南北,东西;

  • 金融级网络安全;

Service Mesh 架构带来的红利都是蚂蚁金服所需要的,这里不再多介绍,而对于金融级网络安全我可以多做一些描述。

我们通过 Mesh 化支持了服务的全链路加密以及服务鉴权,在金融场景同时支持国密算法,拥抱监管合规。同时控制平面适配蚂蚁金服 KMI 系统,能达到金融级的秘钥管理能力,同时在 Mesh 代理 SOFAMosn 上实现了 Mirroring 流量功能,通过实时分析服务通信流量构筑强大的金融风控系统。至此从研发,测试,灰度,生产打造了全安全生命周期 Service Mesh 架构,支撑了蚂蚁金服的各种业务。

云原生安全网络代理 SOFAMosn

SOFAMosn:

https://github.com/sofastack/sofa-mosn

Written in go

前面提到蚂蚁金服自研了 Golang 版本的网络代理 SOFAMosn:

  • 为什么我们要自研?

  • 为什么我们不用 Spanner?

  • 为什么不使用社区方案 Envoy、Linkerd?

其实在研发初期,我们已经预料到作为下一代蚂蚁金服的基础架构,Mesh 化势必带来革命性的变革以及演进成本,我们有非常宏大的蓝图:准备将原有的网络和中间件方面的各种能力重新沉淀和打磨,打造成为未来新一代架构的底层平台,承载各种服务通讯的职责。

这是一个需要多年时间打造,满足未来五年乃至十年需求的长期规划项目,合作共建团队跨业务,SRE,中间件,基础架构等。我们必须有一个具备灵活扩展,高性能,满足长期演进的网络代理转发平面。Spanner、Envoy 在研发效率、灵活扩展等方面均有不满足的地方,同时在整个 Mesh 改造涉及到非常多的部门和研发人员,必须考虑到跨团队合作的落地成本,所以我们基于 Golang 栈自研了云原生场景下的新型网络代理 SOFAMosn。对于 Golang 的性能,我们前期也做了充分的调研和测试,在 Service Mesh 场景下单 Sidecar 的性能从来都不是需要最高优先级考虑的问题,往往对性能 RT 有极致要求的业务目前看来并不适合 Mesh 架构。

SOFAMosn 能力与模块划分

SOFAMosn 主要划分为以上几个模块,我们可以基于 Stream、Net 等进行能力扩展,下面会讲到。

SOFAMosn 协程模型

Golang 体系下,我们使用轻量级的协程进行基础架构,一条 TCP 连接对应一个 Read 协程,执行收包、协议解析,一个请求对应一个 Worker 协程,执行业务处理、Proxy 和 Write 逻辑。

SOFAMosn 能力扩展

协议扩展

通过使用同一的编解码引擎以及编/解码器核心接口,提供协议的 plugin机制,目前已经支持:

  • SOFARPC;

  • HTTP1.x/HTTP2.0;

  • Dubbo;

NetworkFilter 扩展

通过提供 Network Filter 注册机制以及统一的 Packet Read/Write Filter 接口,实现了 Network Filter 扩展机制,当前支持:

  • TCP proxy;

  • Fault Injection;

StreamFilter 扩展

通过提供 Stream Filter 注册机制以及统一的 Stream Send/Receive Filter 接口,实现了 Stream Filter 扩展机制,包括支持:

  • 流量镜像;

  • RBAC 鉴权;

心跳检查扩展 Demo

基于 xDS 的动态配置

Mesh 场景下网络代理的挑战

从前面的介绍可以得知,网络接入层最大的挑战就是应对海量洪峰流量时的高效性,而作为 Mesh 场景的大规模落地,除此之外还有更多需要考虑的问题:

  • 不同的应用,部分 Mesh 化;相同的应用,部分 Mesh 化;TLS 链路的兼容等。我们必须做到任何场景下保证可正常处理请求,做到可灰度、可回滚的兼容,平滑迁移;

  • 通用的框架能力(SOFAMosn/Envoy)无法直接满足复杂的、定制的业务能力,需要进行针对性的更加灵活扩展实现;

  • 需要融合已有的应用服务体系,如注册中心、配置中心等,做到行为的一致性;

  • 大规模场景下需要面对的资源分配,自动化问题、性能问题,稳定性问题;

下面我主要谈谈大规模下的问题,数十万实例对控制平面性能,稳定性带来巨大挑战以及单实例数万路由节点,数千路由规则,不仅占用内存,对路由匹配性能也有较大影响。在服务发现方面,海量高频的发布订阅动作对网络代理的稳定性和性能也带来挑战。微服务的治理和运维同样一直都是一个难题,Mesh化后独立出来的网络代理需要融入到云原生业务体系里统一对待,所以SOFAMosn的独立平滑升级,良好的发布策略等都是非常重要的。

平滑升级

由于 Sidecar 作为基础设施的特殊性,我们需要达到基础设施升级的业务无感知的目的,传统的网络代理例如 Nginx 通过关闭老进程的 Listen 端口来做到新进程接管新连接和请求的目的,这种方案对于 HTTP 等短连接 Ping-Pong 协议是非常有效的,但是无法很好支持长连接的双向流式协议。所以我们在 SOFAMosn 上实现了连接迁移能力,达到网络代理升级过程中的连接平滑迁移,保证服务的持续性。通过 sendmsg 以及 TCP_REPAIR 都可以做到套接字的迁移,其实在此种场景中套接字的迁移能很好实现,整个连接的 session 恢复会是比较麻烦的过程。

资源问题

当网络代理 SOFAMosn 作为 Sidecar 部署时,我们面临了新的挑战,不再像 Spanner 一样独占物理机,或者以独立应用的容器化方式只用关心自己的能力以及资源消耗,我们必须精细化 CPU,内存等资源,才能达到与应用最优的协同合作方式。

性能数据

上图是一个简单的同 Envoy 的性能测试,测试双方使用默认配置没有使用任何调优,仅供参考。

总结与思考

关于未来:

  • 云原生,多云混合云时代,南北,东西流量的边界逐渐模糊;

  • 应用网络代理层部分能力固化,下沉至系统网络栈或者智能硬件设备;

  • Sidecar -> Proxyless -> Networkless;

  • 物理通信基础设施的升级势必带来应用网络层的变革;

回望这十年,是商业的发展不断推动着系统演进的十年,又是技术演进不断成就着商业的奇迹的十年,我们经过十年沉淀,建设了一套金融级的通信安全基础设施,具备全局调度能力的应用层网络 SDN 系统,新的基础软件,生态以及硬件在不断迭代,提供越来越极致的架构改变和性能提升,技术的进步又会驱动业务不断去拓展未曾接触或曾经无法解决的问题领域,给我们带来更大挑战,所以我们将来更需要密切把握技术脉搏、兼具全局视野,以帮助我们做出关键判断,未来已来,让我们与时代同行,期待下一个十年。

这次蚂蚁金服 Service Mesh 上双十一,将是 Service Mesh 的历史时刻:Service Mesh 首次超大规模部署,欢迎对 Service Mesh 感兴趣的同学持续关注本公众号,在双十一之后将会分享一系列蚂蚁金服 Mesh 化相关文章,与大家交流分享。

公众号后台回复“1106PPT”即可获取本次分享回顾视频以及 PPT 下载地址。

文章涉及相关链接

作者介绍

本文作者:肖涵(涵畅),蚂蚁金服高级技术专家。2011年加入蚂蚁金服,一直从事四/七层网络负载均衡,高性能代理服务器,网络协议相关的研发工作,目前是蚂蚁金服系统部应用网络组负责人。

本文归档在 sofastack.tack 网站。

???? 奖励支持 SOFAStack 的你~

* 点下右下角“在看”

* 到公众号对话框发送“暴福”,试试手气~

* 本期互动奖品“一夜暴福-加长版鼠标垫”

Unity程序化河流生成工具Waterways:从算法到实践的全流程解析 程序化内容生成(PCG)是游戏开发与三维建模领域的关键技术,它通过算法自动创建游戏内容,显著提升开发效率。其核心原理是将设计规则转化为可执行的代码逻辑,从而生成复杂、多样且符合自然规律的环境资产。在开放世界游戏和模拟经营类项目中,程序化生成技术能够快速构建大规模、高一致性的自然场景,如山川、森林与水体网络。Unity引擎作为广泛使用的开发平台,其地形系统与着色器管线为程序化工具的集成提供了强大基础。本文聚焦于利用Waterways这一Unity工具集,深入探讨如何通过模拟重力驱动、流量累积等自然水力原理,在 阅读详情

相关推荐

嘉立创封装图下载后必做的3步优化(附批量删除机械层技巧)

本文针对从嘉立创下载的封装图,系统讲解了三步核心优化流程,以解决其直接使用时的常见问题。重点介绍了如何高效批量删除冗余的机械层,避免制造错误;并详细说明了规范丝印层间距、统一焊盘命名等关键步骤,帮助工程师将第三方封装转化为可靠、合规的设计资源,从而提升PCB设计效率与文件质量。

weixin_29227585的博客 433

支付宝架构到底有多牛逼?看完这篇你就明白了!

一、背景 自2008年双十一以来,在每年双十一超大规模流量的冲击上,蚂蚁金服都会不断突破现有技术的极限。2010年双11的支付峰值为2万笔/分钟,全天1280万笔支付,这个数字到2017双11时变为了25.6万笔/秒,全天14.8亿笔。在如此之大的支付TPS背后除了削峰等锦上添花的应用级优化,最解渴最实质的招数当数基于分库分表的单元化了,蚂蚁技术称之为LDC(逻辑数据中心)。 本文不打算讨论具体到代码级的分析,而是尝试用最简单的描述来说明其中最大快人心的原理。 我想关心分...

一个天秤座的架构师 2万+

【ElementUI】el-table列宽自适应优化方案(v-fit-columns进阶指南)

本文深入探讨了ElementUI中el-table列宽自适应插件v-fit-columns的进阶应用。针对常见的表头错位、与fixed固定列冲突等难题,提供了基于$nextTick与doLayout的黄金组合、隔离自适应区域等稳如泰山的解决方案,并分享了配置优化、性能调优及封装最佳实践,帮助开发者实现优雅且稳健的表格列宽自适应。

weixin_29011667的博客 351

蚂蚁集团俞仁杰:金融级云原生之多活容器集群高可用建设实践

本文整理自蚂蚁集团金融云产品技术部SOFAStack产品专家俞仁杰在2020 GIDC全球互联网数据大会的分享。详细讲解了云原生架构下的多活高可用平台和产品建设相关经验和观点。过去几年是...

中生代技术 1983

跨越移植陷阱:ESP-IDF下LVGL与ILI9341的组件化集成与常见避坑指南

本文详细解析了在ESP-IDF环境下将LVGL图形库与ILI9341显示屏驱动进行组件化集成的完整流程。重点介绍了移植过程中的关键配置策略、内存管理优化技巧以及常见问题解决方案,帮助开发者有效规避内存溢出、显示异常等典型陷阱,实现高效稳定的嵌入式GUI开发。

yhn456789的博客 628

SSE消息推送避坑指南:从Chrome兼容性到Spring超时配置

本文深入探讨了在Java Spring Boot项目中实现SSE消息推送时,从浏览器兼容性到后端配置的完整避坑指南。针对Chrome并发连接限制、Safari自动断开、Nginx代理缓冲以及Spring SseEmitter内存泄漏与超时管理等生产环境常见问题,提供了具体的解决方案和最佳实践配置,帮助开发者构建稳定可靠的实时推送系统。

work3的博客 452

支付宝架构是真的牛逼 !

单元化后,异地多活只是多地部署而已。比如上海的两个单元为 ID 范围为 [00~19],[40~59] 的用户服务。而杭州的两个单元为 ID 为 [20~39]和[60,79]的用户服务,这样上海和杭州就是异地双活的。支付宝对单元化的基本要求是每个单元都具备服务所有用户的能力,即——具体的那个单元服务哪些用户是可以动态配置的。所以异地双活的这些单元还充当了彼此的备份。发现工作中冷备热备已经被用的很乱了。

程序员高级码农的博客 1803

Halcon阈值算子 -- 局部阈值之dyn_threshold

Halcon阈值算子 – dyn_threshold HALCON有很多阈值算子,接下来将一一介绍。本文先介绍dyn_threshold。 以下介绍主要参考HALCON帮助文档,并加上自己的体会。如有纰漏,欢迎留言指出 理论介绍 dyn_threshold算子的函数签名如下: dyn_threshold(OrigImage, ThresholdImage : RegionDynThresh : Offset, LightDark : ) 输入参数有: OrigImage:待处理图像 ThresholdIm

m0_47015717的博客 5386

【网络代理详解:原理、类型及应用】

定义网络代理(Proxy),又称代理服务器,是一种位于客户端和目标服务器之间的中间服务器。它可以接收客户端的请求,然后代表客户端与目标服务器进行通信,最后将目标服务器的响应返回给客户端。基本原理网络代理的工作原理基于客户端-代理服务器-目标服务器模型。在这个模型中,客户端需要配置代理服务器的地址和端口,然后将网络请求发送给代理服务器;代理服务器接收请求后,根据客户端的要求进行处理(如更改IP地址、缓存资源等),然后将请求转发给目标服务器;目标服务器将响应发送给代理服务器,代理服务器再将响应转发给客户端。

武帝为此的博客 1万+

Python - 多页pdf 合称为一页

尝试使用 ReportLab 来重画 pdf,但探索起来有点麻烦。重要的是解决手头这个问题,所以就算方法蠢,但简单完事。以下生成结果,最有一页 pdf 可能会显示在第一页,手动编辑下 pdf 即可;或者你也可以修改代码逻辑来完善。打印ppt,一页占用A4纸比较浪费,想多页合成一个 A4大小;安装 fitz,单独安装 fitz 使用可能会报错。将 PDF 拆分为 图片来保存。

AI工程化、开源分享、文档翻译、代码笔记 1427

linux mmap系统调用

brk/mmap linux 提供了两个比较重要的系统调用brk 和mmap,用于向内核申请相应用户空间,内核会根据系统运行状态判定是否申请新的VMA来管理新申请的用户空间,brk和mmap在整个系统中都占有非常重要的地位。 brk()系统调用被gblic进行了进一步封装成malloc接口,用户层程序一般都是通过调用malloc,由glibc间接调用brk来向内核申请用户空间。brk申请的用户空间属于堆空间 mmap系统调用也可以向内核申请用户空间,不过与brk不同的师,mmap申请的空间属于mma.

weixin_42730667的博客 1279

GKI跟KMI的关系

同时,GKI内核映像是一个可裁剪的内核映像,设备开发者需要确保他们删除了不需要的内核模块和驱动程序,以最小化内核映像的大小。如果我们选择使用GKI内核,我们可以从Google提供的官方内核源码中,选择一个适合我们设备硬件配置的内核配置,并生成一个定制的内核映像。具体来说,KMI定义了一组标准的接口和规范,允许内核模块向内核添加新的功能或修改内核行为。但是需要注意的是,boot.img文件不仅仅只包含GKI所编译的内核和Ramdisk,还包含一些额外的信息,如Android的启动程序、内核命令行参数等等。

mc10141222的博客 6467

200Gb/s以上速率的通道信号完整性设计和优化经验(二)

为满足200Gb/s信号完整性需求,需综合优化PCB、连接器、封装及SERDES架构。关键措施包括:采用低粗糙度铜箔与低损耗材料降低传输线损耗(200G目标0.55–0.6dB/cm);通过背钻工艺控制残桩长度至4±2mil;缩减连接器焊盘残桩至600μm以内以消除谐振;封装层面推进跳层走线、低Dk/Df材料与可控SMT工艺;采用PAM4调制与基于ADC/DSP的混合信号架构实现高效均衡。先进CMOS工艺(如纳米片器件)支撑复杂数字处理,协同设计是突破速率瓶颈的核心。

小孟同学的博客 149

网络中的代理(proxy)和NAT

proxy和NAT

教Linux的李老师 3604

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

计算架构模式之负载均衡技巧

spanner是蚂蚁业务级别的负载均衡,有点像网关,比如按设备进行分区比较适合app。

huanfeng_AI的博客 569

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

KMI/PKI及SPK密钥管理

KMI/PKI及SPK密钥管理 密钥管理技术是信息安全的核心技术之一。在美国“信息保险技术框架”中定义了深层防御战略的两个支持构架:密钥管理构架/公钥构架(KMI/PKI)和入侵检测/响应技术。当前,密钥管理体制主要有三种:一是适用于封闭网的技术,以传统的密钥管理中心为代表的KMI机制;二是适用于开放网的PKI机制;另一种是适用于规模化专用网的SPK。一、KMI技术    KMI(密钥管理中心

gotohbu的专栏 4067

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

支付宝的架构

还真有尝试通过预先设置规则来解决这种多主库带来的一致性问题的系统,比如 CouchDB,它通过版本管理来支持多库写入,在其仲裁阶段会通过 DBA 配置的仲裁规则(也就是合并规则,比如谁的时间戳最晚谁的生效)进行自动仲裁(自动合并),从而保障最终一致性(BASE),自动规则无法合并的情况则只能依赖人工决策了。一定程度上,这种架构极大的缓解了”读可用性”问题,而这样的架构一般会做读写分离来达到更高的”读可用性”,幸运的是大部分互联网场景中读都占了 80% 以上,所以这样的架构能得到较长时间的广泛应用。

z_ssyy的博客 2万+

nginx的4层和7层代理的区别(附OSI网络模型)

nginx的4层和7层代理的区别(附OSI网络模型)

weixin_42585386的博客 4194

第七届 Service Mesh Meetup 回顾及 PPT 分享

Service Mesh Meetup 是由蚂蚁金服联合 CNCF 官方共同出品,ServiceMesher 社区主办,主题围绕服务网格、Kubernetes 及云原生,...

ServiceMesher 707

支付宝架构真牛逼

自 2008 年双 11 以来,在每年双 11 超大规模流量的冲击上,蚂蚁金服都会不断突破现有技术的极限。2010 年双 11 的支付峰值为 2 万笔/分钟,到 2017 年双 11 时这...

程序IT圈 217

四层代理和七层代理是什么

日常与大佬沟通或看文章,时不时总会遇到两个概念“四层代理负载均衡”和“七层代理负载均衡”,那么,所谓的四层代理和七层代理分别指的是什么?又在什么场景下用到呢?这篇文章就带大家聊聊这方面的知识点。

ThinPikachu的博客 990

(七)计算机网络——网络层(下)

(四)计算机网络——网络层(下)

XCL1670的博客 534

快速幂(KMI)

顾名思义,快速幂就是很快速的幂运算,与朴素的 O(N) 相比效率有了极大的提高。当要计算a的N次方(mod p)的时候,你的第一反应是开long long再循环一点一点求。这就是幂运算的 O(N) 算法,于是快速幂相关的各种题应运而生。

2301_79311276的博客 1021

网络代理详解

代理是一种通过中间服务器来帮助客户端访问目标服务器的技术。代理服务器位于客户端与服务器之间,充当两者的中介,从而实现客户端和服务器之间的隔离。用户的所有请求经过代理后,再发往目标服务器,而目标服务器的响应则返回代理,再由代理传递给用户。

yymagicer的博客 1万+

内网安全:代理技术详解

背景:拿下内网的一个主机权限并且上线到MSF/CS上,IP:192.168.x.*使用控制192.168.x.*的Meterpreter启动路由,MSF相当于进入到该网段中开启节点,支持代理来的转发流量攻击机A(外网,军火库)配置代理到MSF上CS代理建立:有手就行在192.168.x.*的会话上开启SOCKS代理在攻击机A上配置代理装置建立通讯的最大意义就是:可以实现攻击机与内网主机的通讯,有了通讯才能横向移动要根据防火墙因地制宜的选择方式。

heike_Ch的博客 869

再启程,Service Mesh 前路虽长,尤可期许

本文根据涵畅在开源中国 OSC 源创会架构专场分享整理。前言几乎所有人都在说 Service Mesh;貌似没人知道怎么落地 Service Mesh;但是大家都觉得其他人在大力做 Se...

金融级分布式架构 529
上一篇: 诗和远方:蚂蚁金服 Service Mesh 深度实践 | QCon 实录
下一篇: SOFA Weekly | 每周精选【11/04 - 11/08】
SOFAStack
博客等级 码龄7年 747粉丝 389原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值