大厂的Serverless架构实践案例

JavaEdge

共 5653字,需浏览 12分钟

 ·

2024-04-10 22:35


点击下方“ JavaEdge ”,选择“ 设为星标

第一时间关注技术干货! 关注我,紧跟本系列专栏文章,咱们下篇再续!

作者简介:魔都技术专家兼架构,多家大厂后端一线研发经验,各大技术社区头部专家博主,编程严选网创始人。具有丰富的引领团队经验,深厚业务架构和解决方案的积累。

负责:中央/分销预订系统性能优化;活动&优惠券等营销中台建设;交易平台及数据中台等架构和开发设计。




金融业银行将业界主流 Serverless 技术栈与行内“云计算 + 分布式”体系融合,建设具备极致弹性伸缩能力的全托管 Serverless 平台,并在 AI 模型、批量任务、接口聚合等多个场景落地,有效提升云上资源利用率和业务迭代效率。

1 Serverless发展

虚拟机技术、容器技术后的下一代云计算形态,云计算未来发展方向。云计算历经从物理机到虚拟机,从 IaaS、PaaS 到 Serverless,每个阶段的跃迁都是一个去服务器的过程,同时带来了技术架构和应用架构的不断演进。在 Serverless 阶段,应用被拆分成多个独立功能点,每个功能点对应一个函数,每个函数实现各自的业务逻辑。同时 Serverless 将后端能力封装成服务,并以接口的形式提供给上层业务调用,确保用户最大程度聚焦业务逻辑开发,而无需关注高可用、服务器运维等其他要素,极大提升了业务的上线速度。

Serverless 发展历程:

fc72e1686785b308936e9609efa0360c.webp

Serverless 经过这些年快速发展,在技术架构、平台能力、平台特性、应用场景和业界产品等方面也逐渐趋向成熟。

1.1 技术架构

Serverless 依托底层 IaaS、PaaS 平台,以事件驱动为核心,通过 HTTP、定时、消息等事件触发的方式,调度执行上层业务逻辑。

1.2 平台能力

Serverless 为开发、测试、发布、交付、灰度等应用生产环节提供了完备的支撑,实现了完整的 DevOps 能力,并通过完善的日志、监控体系,提升了运维工作的效率。

1.3 平台特性

Serverless 的弹性扩缩容能力,满足了后端服务急速扩缩容需求,解决了业务流量波谷时期带来的资源浪费问题。同时,Serverless 函数计算具备的函数编排能力,满足了多媒体计算领域在对音视频进行采样、降噪、平衡音量、转码等处理时的计算编排要求。

1.4 应用场景

Serverless可应用后端业务处理、文件转换、音视频处理、AI 模型训练和运行等场景,且通过按需使用,降低业务上云成本,同步提升研发效能。如AI计算是CPU密集型且有明显波峰波谷的业务,同时AI开发过程要对参数频繁调整并验证调整结果,Serverless弹性伸缩和快速发布能力可很好应对此类具有峰谷特性的业务,同时满足模型快速上线的需求。互联网企业也通过 Serverless 的弹性伸缩能力,在音视频处理和后端服务上大幅降低了计算资源成本,同时得益于 Serverless 便捷的研发部署流程和强大的运维管理支撑,研发效能实现大幅提升。

1.5 业界产品

亚马逊、阿里都提供完善 Serverless 平台服务,公有云 Serverless 产品有 AWS Lambda、Azure Functions、函数计算(阿里云)等。金融行业考虑到安全性和多样金融业务需求,一般使用私有化 Serverless 方案,搭建适用于银行业务特性的 Serverless 平台。

2 金融业Serverless体系技术支撑

Serverless 1.0技术架构上,以“开源框架 + 自研事件驱动框架”为核心,提供了函数模式和 Serverless容器模式:

b1e8d4da843385e52c1ebac81ad998ad.webp

1.0实现了动态伸缩过程中应用实例数0到N,在量化交易业务模型回测场景中,为了对历史市场数据、指标数据、交易明细等数据进行查询分析,通过将基金组合效果统计模型的逻辑封装成函数,运行在 Serverless 平台,提升了分析模型的开发人效和计算资源利用率。

随着对业务响应要求高的应用接入,1.0平台逐渐出现问题,如每次发布都要制作新镜像、运维流程繁琐等,对生态闭环程度、平台易用性提更高要求。

3  Serverless 2.0 平台

增强与存储、日志、监控等周边生态融合,进一步强化“函数即服务”。2.0技术选型以PaaS平台为基础,并与公司的云计算、分布式体系融合,为应用提供完整的函数核心引擎、函数管理、开发交付等能力。

基于平台使用场景和技术选型,2.0函数计算平台在架构上分为:

  • 函数计算管理平台:主要向开发、运维提供完备管理能力,包括函数管理、服务管理、事件管理、工作流管理、发布管理和日志监控等功能,覆盖函数的开发测试、运维监控全流程
  • 函数计算系统服务:主要提供函数开发运行所需的各底层支撑能力,包括事件触发器、Runtime执行环境、平台底层支撑
    • 事件触发器支持 HTTP、定时任务、Kafka、对象存储等事件源
    • 执行环境支持Java、Python、Nodejs运行时,也支持自定义运行时配置,以覆盖更多应用场景
    • 平台底层支撑,提供函数执行、监控运维、资源管控、稳定性保障等能力,有效降低接入应用的运维成本

Serverless2.0平台架构:

718557c79d903cef061d10ee208fa38f.webp

4 Serverless应用实践及成效

Serverless平台目前已将应用场景总结为分布式批量、小程序应用、AI 模型、音视频处理、流式消息处理等,并在黄金账户、智能外呼、资产估值、持续交付系统等落地。借助平台提供运维能力,应用极大降低运维量,从而进一步提升公司云原生基础设施对上层业务的支撑水平。

4.1 分布式批量场景

传统分布式批量架构中,批量作业整体调度能力由批量控制器、分布式协调中心(zookeeper/kafka)、批量作业执行器构成。批量控制器用于作业的调度和触发,作业触发消息通过分布式协调中心进行发布,批量执行器在监听到作业触发消息后,启动批量作业并同步更新批量作业状态(如图 4 所示)。传统分布式批量架构由于批量作业执行器需实时监听分布式协调中心中的作业触发消息,因此非批量作业执行期间,批量作业执行器也需处于运行状态,资源利用率低。

传统分布式批量作业架构

a362739c1d9defe87d1f9b910bccf658.webp

为提升批量作业执行器的资源利用率,围绕高可用、灵活性、兼容性,基于原有分布式批量平台,增加 Serverless 批量任务管理能力,将分布式批量框架的调度能力和 Serverless 平台快速弹性伸缩能力结合,通过整合批量框架和 Serverless 平台技术优势,提升批量作业资源利用率和调度灵活性。

  1. 批量作业高可用:分布式协调中心和 Serverless 批量任务管理模块均采用多实例,当主节点故障,从节点可在第一时间接替主节点任务,防止单点故障引起系统不可用。作业运行期间,函数计算平台也能根据函数运行的返回消息快速捕获异常作业,然后报告给 Serverless 批量任务管理模块,通知批量控制器重试该作业
  2. 批量作业灵活性:基于 Serverless 平台弹性伸缩能力和事件驱动特性,高并发下,可动态创建和销毁函数容器,实现资源灵活分配,进而提升分布式批量作业调度的灵活性
  3. 批量作业开发兼容性保障:引入 Serverless 批量任务管理模块,将分布式批量框架和函数计算平台解耦,实现平台兼容。同时,通过升级分布式批量开发框架 SDK 方式,保证基于传统分布式批量架构开发的存量应用可以平滑过渡到基于 Serverless 函数计算的批量架构,确保了 Serverless 平台和分布式批量框架的兼容性

目前批量作业函数化已在贵金属积存金业务、小程序开放平台、资产管理估值核算、分布式事务等应用落地试点,峰值资源占用可减少50%,总体资源利用率提升90%以上,达到较好试点效果。未来预计生产超过 90% 分布式批量场景可适用该方案,将大幅提升银行分布式批量场景的资源利用率。

4.2 持续交付流水线

持续交付系统在安装上云数据库时,一般选择在代理服务器上运行数据库安装程序,但代理服务器存在多应用、多节点共用时资源无法隔离、与数据库关系映射无序等问题。代理服务器只在应用投产时运行,其余时间服务器资源处闲置浪费状态。

通过 Serverless 平台的弹性扩缩容特性可做到按需加载,实现只在执行数据库安装程序时动态拉起对应的函数计算实例,任务运行结束后即可销毁的能力,从而避免了空耗计算资源的情况。同时 Serverless 平台支持自动弹性扩容,可为任务执行提供足够的计算资源,以应对投产时间窗口内大量的数据库安装部署任务。使用方只需利用函数计算事件触发机制,通过请求参数实现各数据库安装函数实例只作用于目标数据库,无需维护相关映射关系。

运维方面,基于 Serverless 平台持续交付作业无需进行日志和可用性监控配置,可方便使用 Serverless 平台提供的定时、kafka 等事件源触发机制进行作业调度,大幅提升运行效率。

4.3 智能外呼

智能xx应用服务提供智能外呼、智能呼入、智能质检等多维度的智能交户能力。

外呼场景,系统需预处理收到的外发信息文件:文件解析、数据校验、任务拆分、特殊场景处理等,并将处理后数据进行标准化存储,等待后续外呼处理。

为满足外呼需求,外呼数据预处理功能部署在同一容器,需 7*24h 在线,但每日实际运行时间只有数小时,甚至只有几十min,存在大量服务器资源浪费。

对此,函数计算平台开发部署,应用只需编写外呼数据预处理功能,由 Serverless 平台承接预处理功能的发布、触发运行、监控告警等,空闲期不再占用服务器资源。

相比原开发运维方式,函数计算开发功能人力投入整体合计节约 25%,生产环境服务实际占用的资源节约90%。

4.4 文本核对

对账中心在对文本数据核对时,底层数据库分库后需多个节点支撑,由于文本的核对任务无需长期执行,因此导致了大量空闲时间段的资源冗余问题。

对账中心通过抽取文本核对过程中共性的数据获取、数据加工、数据持久化和数据回传等关键步骤为函数,利用函数工作流机制对函数进行编排。核对任务通过工作流进行编排,由函数平台触发,其运行所需的容器资源管理和运维监控保障均通过函数计算平台实现,达到系统高性能、高扩展和资源高利用率,也降低运维复杂度。

Serverless 平台提供的灰度发布、日志管理和监控能力,也丰富对账中心运维能力。

对账中心基于 Serverless 的文本核对系统架构:

e317d002b7a9b9ed81a0b03977082e44.webp

4.5 金融业

线上业务处高速发展期,又面临服务器资源和研发效能压力,针对创新类业务还面临着较高的试错成本。银行业引入 Serverless 需重点关注:

① 深入研究业务特性,全面评估应用收益

分析应用负载,对具有负载峰谷现象的应用或变更频繁、需快速试错的业务,进行函数化改造的可行性分析,适当规划函数服务粒度,并重点关注服务改造成本、投产风险和预期收益。

② 加强运维能力建设,着力保障研发体验

完善 Serverless 平台稳定性,通过与开源或现有的日志、监控、告警组件结合,融入现有运维生态体系,构建完善的研发体系,辅助开发人员高效完成函数的开发和测试,并结合完善 DevOps 能力,提供 Serverless 项目一体化研发、发布流程。

③ 充分利用平台优势,逐步丰富落地场景

建议金融同业充分利用 Serverless 特性,结合应用的负载规律、业务的响应效率、运维的人力成本等多方面因素,充分挖掘潜在场景,使用 Serverless 实现降本增效。

5 总结

当前已建功能完备企业级 Serverless 平台,未来也将持续打磨 Serverless 产品核心能力,适配业务特性Serverless平台,不断丰富落地场景,扩大函数计算的使用范围,将Serverless技术大规模运用到公司各业务中,为同业架构转型提供最佳实践和典范。

写在最后

编程严选网(www.javaedge.cn),程序员的终身学习网站已上线!

点击阅读原文,即可访问网站!

欢迎长按图片加好友,我会第一时间和你分享软件行业趋势面试资源学习途径等等。

添加好友备注【技术群交流】拉你进群,更多教程资源应有尽有

关注公众号后,在后台私信:

  • 回复 架构师 ,获取架构师学习资源教程
  • 回复【面试 ,获取最新最全的互联网大厂面试资料
  • 回复【 ,获取各种样式精美、内容丰富的简历模板
  • 回复 路线图 ,获取直升Java P7技术管理的全网最全学习路线图
  • 回复 大数据 ,获取Java转型大数据研发的全网最全思维导图
  • 微信【ssshflz】私信  【副业】 进副业交流群
  • 点击 阅读原文 ,即可访问程序员一站式学习网站
    
                                                            

最近在准备面试,为大家准备一份2024最新最全Java学习路线一条龙

浏览 13
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报
评论
图片
表情
推荐
点赞
评论
收藏
分享

手机扫一扫分享

分享
举报