网商银行金融级云原生分布式架构实践

2020 年 11 月 23 日

网商银行金融级云原生分布式架构实践

网商银行从诞生之日起就是一家将核心系统架构在云上的银行,经过多年建设,逐步完成了两地三中心架构到异地多活云单元架构的升级。中国人民银行出台的《金融科技(Fin-Tech)发展规划(2019-2021年)》提出合理布局云计算,统筹规划云计算在金融领域的应用,随着云计算技术不断发展,云原生技术日趋成熟,云基础设施的重大变化带来研发场景、软件生产模式的一系列变革,网商银行密切关注业内发展趋势,目前正在构建金融级云原生分布式架构,为业务发展提供安全、稳定、高效和敏捷的基础设施能力,迎接云原生时代的到来。


网商银行技术架构演进


网商银行经历了三次大的技术架构变迁。从建站开始,网商银行就是架构在云计算基础设施之上,使用云平台架构支撑业务开展,交付模式上使用基于经典虚拟机的发布包模式。


随着业务量增长,两地三中心的架构已经无法满足业务发展需求,需要升级扩展性更好的架构,另外银行金融业务的属性需要在容灾能力上有更高的要求,因此网商银行从传统的云架构升级到了异地多活云单元架构。


云原生技术持续发展,为我们带来了安全可信、节约成本和敏捷开发的能力,随着业务的发展,对于运维效率、扩展性、可迁移性、精细化管控的更高要求驱使着基础设施往云原生的架构体系演进,网商银行拥抱新兴技术架构,正在逐步演进到云原生架构。

金融级云原生分布式架构为业务带来的价值


当前云原生社区持续火热,云原生计算基金会(CNCF)在 2018 年为云原生进行了重新定位:云原生技术有利于各组织在公有云、私有云和混合云等新型动态环境中,构建和运行可弹性扩展的应用。云原生的代表技术包括容器、服务网格、微服务、不可变基础设施和声明式 API,这些技术能够构建容错性好、易于管理和便于观察的松耦合系统。结合可靠的自动化手段,云原生技术使工程师能够轻松地对系统作出频繁和可预测的重大变更。


随着云原生技术的不断迭代演进,云原生产品能力也在不断成熟和完善,云原生架构逐渐成为多家互联网机构及金融行业机构架构选型方向。容器编排 Kubernetes 技术承载了云原生时代统一资源调度的目标,通过统一资源调度,可以有效提升资源利用率,极大节省资源成本,通过在弹性资源交付、集群规模化服务以及技术风险与自动化运维上持续建设能力,让 Kubernetes 逐渐成为下一代云操作系统基础设施。服务网格技术是云原生架构核心,与 SOA 体系相比,服务网格将 RPC、消息、DB 访问等基础底层能力下沉,与业务系统部署解耦,给业务系统带来透明的通信基础设施,减轻业务负担,加速基础设施演进速度。


基于云原生的混合云弹性架构为业务低成本快速扩缩容提供了可行性方案,跨云弹性资源统一管控实现了资源灵活调度,根据业务量进行弹性云的资源动态使用,进一步降低了资源成本。

网商银行云原生架构升级的挑战与目标


1.云原生架构升级挑战。首先是基础设施的大面积更新换代,从底层的资源调度到上层的 PaaS、中间件都要做云原生架构的适配改造,以满足应用层云原生接入要求;其次是架构升级平滑演进的问题,在平台产品层面需要做到已有单元化架构和新的云原生架构的兼容,保障架构的平滑过渡,在研发模式层面,需要从传统的代码包交付模式过渡到容器镜像为载体的云原生交付模式,整个过程要尽可能少的改变用户操作习惯。再次是架构升级带来的运维体系及安全生产的挑战,新的云原生产品的引入需要建设配套的基础运维能力,SaaS 层应用运维模式的变化也给运维人员带来了新的挑战,另外新架构的引入带来了高可用、稳定性及变更管控等安全生产的挑战,需要不断建设配套的技术风险能力。


2.云原生架构升级目标。首先完成云原生基础设施产品的落地,并完成已有单元化架构平滑升级到云原生架构,为架构持续演进提供底层能力支撑。其次通过使用云原生新技术带来研发效能、资源效能、安全加固和运维能力提升,基础设施能力下沉后具备独立演进能力,降低应用开发投入成本,服务网格技术可实现业务低成本安全加固,降低业务风险,统一资源调度和混合云弹性架构支撑资源弹性伸缩,提高资源利用率降低资源成本投入,建设新的运维体系支撑云原生运维模式,实现可持续交付;再次网商银行探索云原生架构升级路径,沉淀一整套从经典架构迁移至先进架构的方法实践和产品,为行业提供技术实践参考。

网商银行云原生架构的探索与实践


1.混合云弹性架构。在云计算逐渐普及的情况下,无论是互联网公司还是传统 IT 企业都倾向于不被一朵云绑定,混合云架构已经成为一个大的 IT 系统演进趋势。网商银行基于统一的容器服务(兼容 Kubernetes)进行应用的部署,可以解耦应用跟 IAAS 云底座的锁定关系,实现一个镜像多朵云部署。此外,网商银行在云单元架构的基础上通过业务链路动态识别技术,打造了按业务链路级别进行多云之间的流量弹入弹出能力,可以便捷高效地在多朵云之间进行流量调度,解决互联网时代面向突发流量及促销类活动的弹性扩缩容成本和效率问题。


2.不可变基础设施。传统的可变基础设施是基于物理机或虚拟服务器进行应用的部署,在不同环境之间可以通过动态配置下发或者实时访问外部服务更新应用的机器状态,整个基础设施一直处于一个变化的过程中,对于一些需要回滚的运维场景会比较复杂。网商银行采用镜像化部署模式,将应用依赖的基础设施(含配置)打包成不可变的镜像,可以做个多环境统一镜像,极大地降低了应用多环境的部署成本,同时对自动轮转替换、自动回滚等运维动作更友好,提升了基础设施运维的自动化水平。


3.服务网格。服务网格是网商银行下一代云原生架构中非常重要的一个基础设施,它把原来通过 SDK 集成的一些网络通信的能力下沉到 Sidecar 中,包括基本的 RPC、消息、DB 访问能力,以及在此基础上的服务发现、熔断、限流、流量管控、数据库分库分表的能力,以此给业务系统带来较为透明的通信基础设施,将基础设施的迭代演进跟业务系统解耦,让业务研发专注于业务逻辑,减轻业务系统的负担,提升业务系统及基础设施的迭代效率,实现专业的团队做专业的事情。另外 Sidecar 的引入也给业务系统的多语言发展提供了更大的可能性,通过服务网格技术可解决多语言、多技术栈之间的互连互通问题,有利于构建一个松耦合银行系统架构。


4.安全可信。网商银行在云原生架构探索实践过程中特别注重架构的安全能力,不断建设云原生基础上的安全可信架构。作为一家面向互联网的数字化银行,网商银行需要一套兼顾高效率与高安全性的 IT 系统架构,基于服务网格网商银行实现了核心应用服务的安全访问控制,整体上形成了核心系统的纵深防御能力覆盖,在保证业务研发效率的同时可以大幅度提升安全性。


5.离在线混部。随着集群规模化的提升,在线业务集群和离线集群资源池逐步变大,由于存在业务低峰期,在线和离线使用独立的资源池会遇到资源利用率的问题,一个比较明显的现象就是集群的资源分配率很高但是实际利用率偏低。为了解决资源利用率问题,网商银行在云原生架构建设过程中进行在线和离线集群混合部署,统一资源调度,以资源隔离和动态调整为基础,将不同属性类型的在线服务和离线计算类服务精确进行组合,利用高效调度算法和智能化的容量计算模型等技术手段完成资源的合理利用,提升资源错峰高效利用水平,降低 IT 成本。


总结及未来展望


云原生技术带来了更高层次的基础设施抽象,让研发的关注点从基础设施进一步分离,聚焦上层业务逻辑实现。网商银行通过探索和实践云原生架构升级,逐步落地了云原生相关的技术,为网商未来业务发展提供了先进的技术支撑,为架构持续演进打下了基础。面向互联网的数字银行 IT 系统设计越趋复杂,在业务需求快速变化的情况下,微服务的数量也呈指数级增长,传统的运维模式支撑如此大规模的分布式服务运维变得艰难,云原生架构简化了业务系统基础设施,更利于构建自动化的运维体系,降低人的介入难度。


此外,随着银行业务的复杂化,金融核心组件的抽象是一个大趋势,中台化架构已经逐渐成为新一代软件系统集成模式的重要方向。在强调业务核心组件复用能力的同时,如何保证业务系统迭代的效率是需要面临的问题。在云原生的基础上,一些新的技术为研发效能提升提供了新的思路,比如 Serverless 等,云原生架构的落地,为银行基础架构在容量管理、运维管控等能力向自动化、智能化拓展打开了更广阔的发展空间。

2020 年 11 月 23 日 10:341144

评论 3 条评论

发布
用户头像
没啥干货
2020 年 12 月 12 日 23:30
回复
用户头像
没啥干货
2020 年 11 月 24 日 09:05
回复
用户头像
没啥干货呢
2020 年 11 月 23 日 13:06
回复
没有更多评论了
发现更多内容

大型互联网应用面对的挑战及应对方案和手段

张荣召

系统架构:系统技术挑战与方案

张荣召

区块链行业发展的“忧与愁”

CECBC区块链专委会

区块链 互联网

WEEK4 一个典型的大型互联网应用系统使用了哪些技术方案和手段,主要解决什么问题?请列举描述

陈勇

第四周-系统架构

Galaxy数据平台

训练营第四周作业 2

仲夏

极客大学架构师训练营

理解分布式一致性:Paxos协议之Basic Paxos

程序那些事

raft PAXOS raft协议 paxos协议 Basic paxos

DDIA读书笔记(1)可靠性,可扩展性,可维护性

莫黎

读书笔记

“链”接技术与应用:区块链的新命题,大命题

CECBC区块链专委会

区块链 数字货币

架构师训练营第四周 -- 学习总结

张荣召

架构师训练营 1 期 -- 第四周总结

曾彪彪

极客大学架构师训练营

Paxos 的变种(一):Multi-Paxos 是如何劝退大家去选择 Raft 的

多颗糖

分布式 架构师 分布式架构 分布式一致性

B站真题:如何判断括号是否有效?

王磊

Java 数据结构 算法

架构模式

张荣召

架构师训练营-week04-作业1

lucian

极客大学架构师训练营

架构师作业 - 第四周 - 一个典型的大型互联网应用系统使用了哪些技术方案和手段

袭望

深入理解JVM垃圾回收算法 - 复制算法

NORTH

深入理解JVM GC复制算法 Cheney

week04作业

追风

架构师一期

LeetCode题解:22. 括号生成,递归生成同时过滤,JavaScript,详细注释

Lee Chen

LeetCode 前端进阶训练营

WEEK4 学习总结

陈勇

极客大学架构师训练营

区块链助力政府建设高效政务能力

CECBC区块链专委会

区块链 政务

极客时间架构师培训 1 期 - 第 4 周作业

Kaven

架构师训练营第 1 期 - 第四周作业提交

Todd-Lee

极客大学架构师训练营

训练营第四周作业 1

仲夏

极客大学架构师训练营

互联网架构演化

张荣召

week04总结

追风

架构师一期

架构师训练营第 1 期 - 第四周总结

Todd-Lee

极客大学架构师训练营

理解分布式一致性:Raft协议

程序那些事

分布式 raft 分布式一致性 raft协议

为什么说 Python 内置函数并不是万能的?

Python猫

Python

维基百科技术架构

张荣召

会用Docker的人都别装了,这多简单呐

MySQL从删库到跑路

MySQL Docker Linux yum redhat

网商银行金融级云原生分布式架构实践-InfoQ