【ArchSummit架构师峰会】探讨数据与人工智能相互驱动的关系>>> 了解详情
写点什么

工商银行 Serverless 函数计算落地实践

  • 2021-06-21
  • 本文字数:4000 字

    阅读完需:约 13 分钟

工商银行 Serverless 函数计算落地实践

本文整理自百度云智峰会上的主题演讲《工商银行 Serverless 函数计算落地实践》,工商银行软开云计算实验室的高级经理周文泽分享了工行使用百度函数计算产品的落地过程。


工行云平台从 2012 年开始建设,基于业界领先云产品和主流开源技术,结合工行特色实现了金融级的自主定制研发和加固。


  • 2012 年:基于服务器虚拟化软件,自主研发和推广第一代基础设施云

  • 2015 年:率先于同业首家基于开源 Docker 容器技术、微服务,建设应用平台云,并在生产运用

  • 2016 年:完成互联网金融高并发场景的试点并顺利支撑快捷支付“双 11”大促、鸡年贺岁币云上发行

  • 2017 年:基于 OpenStack、Ceph 等业界开源技术,建设新一代基础设施云;同时基于 Kubernetes,建设企业级应用平台云 PaaS 2.0

  • 2018 年:金融生态云 SaaS 上线,启动 Serverless1.0 自研工作

  • 2020 年:建设新一代云平台建设,包括分行云,与此同时也是启动了 Serverless2.0 相关的规划研究和建设工作。


工行云平台包含如下四个方面的技术特色:


  • 引入业界领先的云产品,结合生产运营运维需求进行客户化定制,构建新一代基础设施云

  • 通过引入开源容器技术 Docker、容器集群调度技术 Kubernetes 等,自主研发建设应用平台云

  • 基于 HAProxy、Dubbo、ElasticSearch 等建立负载均衡、微服务、全息监控、日志中心等配套云生态

  • 基于 Kubernetes Operator 机制提供有状态应用容器化部署及自动化运维能力,实现基础技术平台弹性扩缩,落地 ElasticSearch、Zookeeper 等复杂应用容器化部署场景


为什么要做 Serverless?


"不是说 Serverless 发展好就去做,而是考虑了具体业务场景",周文泽表示。


一方面工行已建立了较为完备的云计算、分布式架构体系及容器云平台,分布式服务体系建设成效也比较显著,包括积累了大量可复用的业务服务资产,同时业务量上涨较快,核心业务平均交易量超 5 亿笔每天,大量的业务往线上走,对业务改造压力非常大,大量的业务需要快速做线上化的处理,针对手机银行或者其他的 PC 端都会面临这样的情况;另一方面,商业银行竞争加剧及互联网企业的跨界渗透,要求银行信息系统必须满足快速创新需要。


在这个背景下,工行看到了 Serverless 的能力,它可以帮助快速上线服务。


Serverless 函数计算的技术优势总结下来有以下几个方面:


  • 开发:无需担心基础服务的稳定可靠,无需设计复杂的分布式架构,无需关心灰度限流日志方案的实现,只需专注业务代码开发。

  • 上线:无需像普通容器镜像一样对应用进行各种部署配置,只需发布即可运行。

  • 运维:无需关心扩缩容,无需担心底层资源问题,无需担心高故障恢复问题。


这些优势对业务开发有非常大的吸引力。

工行函数计算技术选型


如前文所述,工行于 2018 年启动了 Serverless 1.0 的设计,下图就是 1.0 的技术架构,主要是以 Knative+自研事件驱动框架并存为核心的一套技术方案,提供了以 FaaS+BaaS 模式的函数计算能力和 Serverless container 模式。



工行 Serverless 1.0 平台技术架构


Serverless 1.0 平台在工行内部进行了小规模的落地试点工作,实现了动态伸缩过程中应用实例数 0 到 N,N 到 0 的能力。但随着一些对请求响应要求较高的应用开始接入,Serverless 平台也逐渐出现一些问题,比如实例冷启动速度较慢,每次发布都需要制作新的镜像等等。



工行 Serverless 2.0 平台技术架构


2020 年,基于 Serverless 1.0 平台的不足,设计了 2.0 函数计算平台技术架构。2.0 平台在技术选型上以百度天合 Stack 的函数计算产品为核心,并与工行现有的分布式、云计算技术平台做对接,为应用提供完整的函数核心引擎、函数管理能力、开发交付能力。


具体来讲,Serverless 2.0 平台主要提供了以下三个方面的能力:


  • 函数事件触发器:捕获外部事件,形成统一的事件规范,并将事件指定给函数核心引擎进行执行。 

  • 函数核心引擎:函数控制器实现事件解析和事件转发并实现函数实例的扩缩容,同时实现与行内各系统模块对接,实现统一的资源供给、监控、报警、运维等能力。

  • 函数管理:为应用提供 API 和 WEB 服务实现函数编辑和发布,对接行内 VCDS 持续交付系统实现函数生产交付。


综合上述能力,使用百度私有化 Serverless 函数计算产品对接工行存储、日志、监控、持续集成等能力,构建了工行函数计算平台。



工行函数计算平台能力视图


上图是工行函数计算平台能力视图,基本上包含了函数计算该有的标准能力:


  • 管理平台:面向开发运维人员,提供函数管理、发布管理和日志监控功能,覆盖函数的开发测试、运维监控全链路环节。

  • 事件触发器:目前已支持 HTTP 触发器、定时触发器、Kafka 触发器,并将陆续提供对象存储触发器、数据库触发器和日志触发器。

  • Runtime 执行环境:支持 Java(1.8)、Python(3.6)、Node.js(10)三大行内主流运行时,支持自定义运行时(自定义镜像)。

  • 平台底层支撑:下沉日志、监控、报警等应用基础支撑能力,降低应用开发成本。

落地场景介绍


周文泽认为 Serverless 目前更适合作为微服务的一种补充而存在,多用于相对独立、架构简单的业务应用。


他具体介绍了三个主要场景:


一个是应用后端服务,通过在函数内组合多个 API、渲染页面、直接编写业务逻辑等方式构建后端服务,主要有 BFF 接口聚合服务、服务端渲染 SSR、静态资源服务三种主流场景,这个多用于小程序、H5 等场景;

第二是批量任务,主要是批量运行时间不一定,但是运行的时候占用大量的资源,平时空闲着,这种时候其实这种技术非常适合它,可以通过在函数内编写批量处理逻辑,再通过函数工作流实现多个批量逻辑的组合,如文本批量核对;


第三是模型发布,模型一个是用量不稳定,涉及到 AI 相关的服务,发布频率非常高,将训练好的模型通过函数计算快速发布提供服务,如 RAS 智能基金组合回测模型。


接下来对具体使用的场景实例进行了展开介绍:



首先是接口聚合的内容,以上是手机银行和 PC 银行简单的示意图,手机银行和 PC 端个人网银需求变动较多,手机端和 PC 端的背后对接了大量子应用,这些子应用边界较强,每个渠道都有各自的研发运维团队,实现需求时需要多个团队相互配合联动,导致需求响应可能不够及时。


跟团队沟通后,解决思路是部分业务场景使用 Nodejs 构建 BFF 层,基于 Midway.js 构建前后端一体化框架,业务功能使用函数计算进行开发,前端适配 H5/RN/Vue 大前端组件,后端适配原生 Node.js、Egg、Koa 等应用开发框架,以 JS 方法调用替换 HTTP 调用开发,实现业务开发前后端技术栈、研发模式统一,这样在开发的时候响应速度得到明显提高。



第二个是场景服务端渲染,本身是不错的技术,但是存在一个问题,对现有的应用来说如果做服务端渲染的改造成本非常高,要配置一系列负载均衡实现这个能力,想用但是觉得成本太高还是不用了,通过函数计算把这个服务端渲染整个包装成一个技术的服务,在上面只需要把逻辑写完之后把函数发布出去就可以渲染这个能力,不用部署额外负载均衡的能力,不用关心怎么部署、怎么高可用、怎么监控......一系列不用关心,这样服务端渲染采用的接受度非常强,这样做出来的功能比如说针对移动端、PC 端速度有明显的提高。



第三个是批量场景,最开始做 Serverless 的原因,是因为有一个应用的批量任务场景有高可用的要求,在批量文本核对任务对数据库进行分库之后,需要多个节点运行支撑,由于文本核对任务不定期执行,存在大量空闲时间段资源冗余问题。这种情况下可以通过函数计算实现文本核对资源弹性化,抽取共性的数据获取、数据加工、数据持久化和数据回传等关键文本核对步骤为函数,通过函数计算平台弹性执行;依托函数计算服务,实现定时或 kafka 消息触发的方式触文本核对任务执行;利用函数工作流机制编排执行函数任务。



第四个场景是数据库安装的场景,在 MySQL 数据库上云之前,使用部署在每台宿主机上的 agent 进行数据库脚本部。MySQL 上云后,由于数据库容器未部署 agent ,应用数据库版本安装时需申请跳板机进行中转安装,目前跳板机节点存在多应用共用、多节点共用时资源无法隔离,跳板机与数据库关系映射无序,跳板机部署完后资源闲置浪费等问题。这种情况下,使用函数计算运行 agent 直接连接节点进行 DB 更新,并利用 Kafka 触发器进行事件触发执行,同时在投产高峰期,可以同时运行更多的 agent 函数实例。



最后是模型发布场景,工行的线下投顾业务需要针对客户出具千人千面的基金组合策略,但是缺乏对基金组合历史业绩及表现的回测展示,需要有在线能力支撑准实时的回测,并需要频繁且快速地发布模型,对基金配置模型进行优化与提升,目前发布机制上不够灵活,每次新的模型一出来都要去发版是非常繁琐的事情。 研发思路将基金组合回测迁移到函数计算平台,采用线上直接发布模式,快速上线不同种类模型进行计算,快速向用户展示结果。

未来规划


最后简单分享工行对函数计算的下一步发展规划:


第一,统一 BaaS 服务接口规范,通过类似微服务构建框架 Dapr 思路,形成通用接口形式如 HTTP API、gRPC API,供函数内部进行调用,加快业务函数构建;

第二,运用云原生 Java 技术,Java 是工行最主要的开发语言,而普通的 Java 存在启动缓慢,内存占用大的问题,在 Serverless 场景下的运用会出现启动缓慢的问题,需要引入 Quarkus、Spring Native 等云原生 Java 框架;

第三,推进 Serverless CloudIDE 建设,使用更加强大的 CloudIDE 产品如 JetBrains 的 Projector,支付相对复杂的应用程序开发,同时也能最大程度保持现有开发人员使用 IDEA 的开发习惯;

第四,构建函数模板中心,函数计算整体开发较为方便,但仍可以进一步抽取通用的函数代码,形成函数模板,供开发人员进行使用,实现技术资产复用,从而更快实现业务功能开发。


通过提供以上四种产品能力,从开发、运行层面,为应用提供更友好的开发体验,更快的启动速度,从而增加业务应用的对产品的接受度。


关于百度 Serverless 函数计算产品:

官网地址:https://cloud.baidu.com/product/cfc.html

百度函数计算引擎 EasyFaaS 已开源: github.com/baidu/EasyFaaS


原文链接:

https://mp.weixin.qq.com/s/XaSIS23PWd36QJO5APK-bg

2021-06-21 17:223659

评论

发布
暂无评论
发现更多内容

Redis崩吗?来一起搞定 Redis 实践中的常见问题!

Steven

redis

快手基于 Apache Flink 的实时数仓建设实践

Apache Flink

大数据 flink 实时计算

APP频繁改版惹人烦?火山引擎VeDI来帮忙

字节跳动数据平台

数字化 企业数字化 企业号 4 月 PK 榜 APP改版

干货分享|金融机构如何通过标签画像实现精细化客户运营?

索信达控股

【福利】ChatGPT免费体验期延长,商用版正式开启预约!

WorkPlus

TiCDC 源码阅读(七) TiCDC Sorter 模块揭秘

TiDB 社区干货传送门

tiup cluster display 执行流程代码详解

TiDB 社区干货传送门

实践案例 集群管理 故障排查/诊断 安装 & 部署

一文彻底搞懂Raft算法,看这篇就够了!!!

做梦都在改BUG

TiDB损坏多副本之有损恢复处理方法

TiDB 社区干货传送门

集群管理 6.x 实践 TiKV 底层架构

四种常见服务限流算法解析

做梦都在改BUG

GitHub已开源—在国内外都被称为分布式理论+实践的巅峰之作

做梦都在改BUG

Java 数据库 分布式 系统设计 设计数据密集型应用

“信创”滚滚而来,私有化或将迎来第二春

WorkPlus

TiCDC 源码阅读(五)TiCDC 对 DDL 的处理和 Filter 解析

TiDB 社区干货传送门

瓴羊Quick BI连续入选魔力象限ABI报告,实至名归

流量猫猫头

企业数字化升级迫在眉睫,瓴羊Quick BI工具应运而生

夏日星河

详解 Flink Catalog 在 ChunJun 中的实践之路

袋鼠云数栈

flink

堡垒机主流品牌有哪些?如何选择?

行云管家

堡垒机 IT运维

Flink MongoDB CDC 在 XTransfer 的生产实践|Flink CDC 专题

Apache Flink

大数据 flink 实时计算

NFT交易平台商城系统开发技术

薇電13242772558

NFT

漫谈 ChatGPT 与问答式 BI

观远数据

数据分析 BI ChatGPT

开源即时通讯IM框架MobileIMSDK的微信小程序端开发快速入门

JackJiang

TiCDC 源码阅读(六)TiCDC Puller 模块介绍

TiDB 社区干货传送门

ByteBase是什么,他怎么和tidb结合提高工作效率的

TiDB 社区干货传送门

实践案例

知行合一!AI大模型与算法二三事

深数

深度学习 科普 数字化 NLP 大模型 LLM

堡垒机厂商都是大企业吗?你比较推荐哪家?

行云管家

网络安全 等级保护

阿里大佬倾情力荐:Java全线成长宝典,从P5到P8一应俱全

三十而立

Java java面试

文盘Rust -- 用Tokio实现简易任务池

TiDB 社区干货传送门

开发语言

瓴羊Quick BI国产数字化智能工具口碑怎么样?30天免费试用

小偏执o

Stable Diffusion:一种新型的深度学习AIGC模型

蓝海大脑GPU

5 大手段,打造单一可信源代码托管平台|极狐GitLab DevSecOps 助力 SLSA 落地之源代码篇

极狐GitLab

DevOps DevSecOps 源代码 安全审计 SLSA

精选2023年大厂高频Java面试真题集锦(含答案),面试一路开挂

程序知音

java面试 java架构 Java进阶 后端技术 Java面试八股文

工商银行 Serverless 函数计算落地实践_开源_百度云原生 Serverless 团队_InfoQ精选文章