写点什么

腾讯计费金融级技术架构演进

  • 2020-02-28
  • 本文字数:3586 字

    阅读完需:约 12 分钟

腾讯计费金融级技术架构演进

金融级技术架构的特性是什么?如何保证高一致、高性能、高可用、高可靠等特性的实现?中台、微服务应该如何考虑?TDMesh 的架构设计是怎样的?在 ArchSummit 全球架构师峰会北京上,InfoQ 记者带着这些问题对腾讯计费首席架构师陈宁国进行了采访。

腾讯计费金融级技术架构

TDMesh 腾讯计费,是孵化于支撑腾讯内部业务千亿级营收的互联网交易平台,它汇集了国内外主流支付渠道,承载腾讯公司收入大盘, 百亿级账户、百亿级日交易、覆盖 180+ 个国家(地区)、服务数万业务和上百万商户,是一个全方位的一站式计费平台。


腾讯计费部门成立至今已经 15 年,作为腾讯集团的统一计费平台,为所有业务提供渠道支付、精准营销、账户托管、安全风控、清分结算、计费分析等一揽子营收解决方案。腾讯计费的特点,可以说是金融属性和互联网海量属性相结合的产物,这个在行业都是极具特点的:腾讯计费有几百亿的账户托管,堪称世界上最大的账户平台,保有量和交易量都是世界级的(日请求近 200 亿);数据库 TDSQL,已经支撑微众银行快速的从零发展到超 1 亿客户,2019 年“双 11”,微众银行创下 5.08 亿笔的交易规模峰值,2019 年的平安夜,交易规模又再次达到 5.33 亿笔的峰值;在新兴前沿领域,构建了金融级别的区块链服务,在国密算法、同态加密、区块的流水线高并行处理、共识算法 PBFT/Raft 优化、及存储和部署的弹性扩展方面都有显著的改进。应用场景上,已有包括保险直赔、资金结算、供应链金融、智慧医疗和公益慈善等多个领域的具体落地,客户包括交通银行、龙江银行、深证通、城市商业银行资金清算中心、东华医为、爱心人寿等。


腾讯计费在技术发展过程中,面临着基础设施如数据库 / 消息队列 / 区块链,和应用层的接入管理、配置管理、逻辑管理等一系列一致性、可用性、稳定性挑战,其中如一致性,就包括对于任何的故障,包括网络异常、操作系统宕机、设备损坏等,都能确保整体业务流程或者全部成功,或者全部失败,不会有中间状态,交易前后金额一分不差。为统一解决这些问题,腾讯计费打造了一套名为 TDMesh 的金融级核心交易解决方案。

金融级解决方案 TDMesh 的特性

腾讯计费金融级的这套解决方案最早发端于 2004 年,08 年实现存储层 7*24 高可用,即保证系统能做到一周 7 天、24 小时不间断在线服务。在存储基础做好以后,12 年开始做开放平台,把计费对外服务标准化,规模化接入业务。此后的 14、15 年至今,主要面向移动端、海外和企业端服务,全面支持业务发展。


作为直接与交易打交道的部门,腾讯计费对金融级技术架构有着自己的理解与做法,陈宁国总结了金融级技术架构的四大特性:



  • 金融级高一致。腾讯计费承载游戏账户、积分权益、泛娱乐订阅及广告客户等百亿级账户类存储,交易高峰期数十万级每秒,日交易量超百亿,平均每天的版本或流程变更超百项。在巨量的交易规模下,如何确保千亿年营收的零差错,实现金融级一致性,是计费的最核心关键问题。

  • 高性能。计费流程,如游戏点券消费、按次的广告点击扣费等,访问高频且常伴有热点,加上如活动放量时流量的数十倍突发,叠加瞬间峰值超百万 tps,这需要计费具备很高的单机性能和整体余度;

  • 高可用。计费服务目前全球已部署 100+ 集群,作为一个大跨度的支付系统,必然要面对各种网络异常,不同国家支付渠道的差异,配置和数据处理的困难等问题,这些都要求计费服务具备很强的业务容灾和数据容灾能力,有充分的弹性和容错设计,不可用时间控制在全年分钟级别;

  • 高可靠。主要针对存储层,只要响应成功就代表数据一定落盘,对于如操作系统崩溃等意外宕机能确保数据不丢;同时, 对分布式任何节点的故障,引发的本机数据损坏和脑裂等问题,也都要求数据严格不错不丢。


为了支持“四高”的金融级技术要求,TDMesh 也做了针对性的架构设计与开发。

腾讯计费的技术思路与解决方案

微服务设计

为实现系统高可用,快速功能扩展,腾讯计费的策略是大系统小做,即微服务化设计。通过合理的功能拆分,及精细服务治理如服务的注册、发现、熔断、自愈、负载均衡、链路跟踪等实现功能的快速扩展和流量的高效调度,以此达成整体系统的高可伸缩。



微服务更多关注的是系统功能规划和运营问题,不同的团队可以独立地设计、开发和部署各自的服务,可以完全掌控微服务的生命周期。但是,微服务化同样带来一些需要解决的问题:


1)需解决服务依赖,如配置关联;


2)每个服务本身的类同逻辑管理,如事务;


3)每个服务所使用存储的统一,如分表模式等;


4)服务细化后对发布变更等的精细管控。

中台高可复用组件化设计

腾讯计费, 当前已是中台化设计,通过合理的功能组织,明确模块边界,内部类同逻辑的组件化抽象,及统一的服务鉴权、服务间配置、服务内事务、和服务的统一存储等规范,来实现整体服务的高可复用,提升研发效能。腾讯计费中台,由业务中台、功能中台、及基础的研发中台、核心的技术解决方案 TDMesh 组成。



计费团队承接的不仅有腾讯集团的整体业务,还有国内客户、海外业务等不同行业、不同领域乃至不同法规、文化下的高复杂性的业务场景。互联网的效率追求,在计费团队的技术体现就是将业务抽象统一到中台,以高可复用的组件化设计解决相似的那些业务问题。

TDMesh 架构设计

从技术架构层面来看,TDMesh 已经形成完善而丰富的金融级技术产品体系。



TDMesh,由上至下,覆盖从接入到存储,各个环节有四高要求的组件,加上在运营上的服务调度、监控、变更灰度和数据分析等管控模块。具体为


  • TDEA 统一的入口调度、协议管理、和服务鉴权 ;

  • TDCC 配置引擎,多环节复杂关联配置的高一致管理 ;

  • TDXA 交易引擎,应用层复杂长链路交易逻辑的高一致管理 ;

  • TDF 高性能基础服务框架 ;

  • TDMQ 高一致高性能的分布式消息队列 ;

  • TD-Hold 高一致高性能分布式缓存 ;

  • TDSQL 金融级高一致高可靠数据库 ;

  • TDLedger 去中心化的高一致记账机制,区块链;

  • 运营系统,实现服务的统一调度和弹性管理。


这些组件模块相互配合,共同构成一个高一致的金融级核心交易架构解决方案。

TDMesh 的应用优势

对于应用开发而言,APP(业务系统)只要对接 TDXA,就可以一步接入 TDMesh 的所有组件,实现从配置、接入、应用层事务、到订单存储、消息通信、对账等整个交易业务链的一整套标准化处理,来实现自身服务的高一致等四高要求。



TDMesh 已在腾讯计费深度实践应用,实现 99.99%+ 的高可用和零差错计费。对于金融行业的客户,有很好的参考和应用价值。其中如数据库 TDSQL,已为超过 500 家公有云客户,中国银行、建设银行、微众、微保等近 30 家专有云客户提供数据库服务,并国内首次在江苏张家港农商银行的核心业务系统成功应用。

TDMesh 关键组件

高一致交易引擎 TDXA

TDXA 是腾讯自研的应用层交易引擎,通过统一的应用层事务管理,确保微服务架构下的逻辑高一致。其设计目的旨在通过彻底的将业务纯逻辑和交易控制解藕,引入事务范式,来达到确保交易系统稳定、提升研发效率。架构设计如下:



TDXA 主要适用于 OLTP(联机事务处理过程,多用于一线业务操作)长事务的处理场景。计费服务基于微服务的架构,通常对于一次完整的交易流程进行多达几十次的网络调用,包括 RPC 接口、原生的 DB 接口、KV 接口等。基于高一致要求,如果由开发者自己来处理各种异常来保证高一致,代码的复杂度和不可控性显而易见。因此 TDXA 的核心使用价值,在于通过统一的组件,将一致性问题处理标准化,保证服务高一致和高质量前提下,有效减少开发者处理错误或异常的工作量,满足业务发展时交易场景多元化及交易量快速增长对计费系统高一致,高性能,高可靠的要求。


高一致分布式消息队列 TDMQ

TDMQ 分布式消息队列是云原生的架构设计,具备跨城高一致、高可靠、高并发的 MQ。已广泛应用在腾讯计费场景,支持日均 100 亿 + 的请求传递,包括支付主路径、实时对账、实时监控、大数据实时分析等方面。



TDMQ 云原生的一个典型特点是,支持存储计算分离,上层计算层由独立的 broker 组成,支持高性能的网络访问和 topic 管理,下层存储层实现日志流的高一致复制。这样就能按业务性能或容量需求分别扩展,来实现整体的成本最优。TDMQ 典型的功能特性还有如延迟消息、事务消息、消息追踪、完整的多租户支持,任意的消费者数量等,这对于高并发消费等场景友好。另外,在运营上,还支持快速的数据平滑迁移、逻辑隔离等特性,以避免多 topic 间生产消费的互相影响。

写在最后

传统金融行业对高一致、高性能、高可用、高可靠等“四高”的要求非常严格,金融系统出现的任何细微错误都可能带来巨额损失,而在全面云计算时代,对于金融级技术架构的要求只会越来越高,对成本和效率的追求也会越来越严苛,而 TDMesh 互联网 + 金融属性的基因决定了我们天生就是要不断的追求极致的性价比和易用性。如何不断适配业务发展的新场景、新特性,满足金融级业务特有的高一致、高安全等需求,用技术推动行业发展,是包括 TDMesh 在内的所有金融级技术架构需要去不断改进打磨和持续优化的地方。


2020-02-28 16:553516
用户头像
小智 让所有人认同的文字称不上表达

发布了 408 篇内容, 共 361.8 次阅读, 收获喜欢 1946 次。

关注

评论 1 条评论

发布
用户头像
腾讯继TubeMQ后的第二个MQ,TDMQ ,有什么意义吗
2020-02-28 18:55
回复
没有更多了
发现更多内容

Java一套拳法刷掉n个遍历树的问题 John 易筋 ARTS 打卡 Week 43

John(易筋)

ARTS活动

不想写代码偷懒之配置化

顿晓

大前端 配置化开发 4月日更

Kafka 零拷贝模型

花一个无所

kafka 模型 简易架构图

新基建:“区块链+物联网”,是否生活将会改变?

电微13828808271

物联网 区块链标准

人生好走的路那么多,你偏要选这条难走的走

小天同学

自我思考 个人感悟 人生修炼 4月日更

云计算防火墙对象(组)的实践

Python研究所

云计算 防火墙 对象组

Redis split-brain 脑裂

escray

redis 学习 极客时间 Redis 核心技术与实战 4月日更

Kafka又出问题了!

冰河

kafka 消息队列 消息中间件 异步编程

Golang Map 模型

花一个无所

模型 源码剖析 Go 语言 简易架构图

Golang channel 模型

花一个无所

源码分析 模型 Go 语言 简易架构图

关于Object,你所必须知道的!

Chalk

大前端 Object 4月日更

Golang interface 模型

花一个无所

源码分析 模型 Go 语言 简易架构图

Apache Oozie基本原理与工作流类型

大数据技术指南

大数据 oozie 4月日更

架构实战营 - 模块1 - 作业

Ming

软件架构

树莓派简介

IT蜗壳-Tango

IT蜗壳教学 4月日更

Tidb模型

花一个无所

架构 TiDB 简易架构图

睿象云智能告警平台cloudalert排班可以帮你做什么

睿象云

运维 告警 运维人生 智能告警 告警管理

javascript

wudaxue

JavaScript

Golang map 模型

花一个无所

源码分析 模型 Go 语言 简易架构图

Linux chmod命令

一个大红包

4月日更

升级dubbo,小心default.version

捉虫大师

Java dubbo

dubbo几个问题整理:优雅停机、线程池配置

程序员架构进阶

dubbo 28天写作 4月日更 优雅停机 线程配置

Python OpenCV 之图像乘除与像素的逻辑运算,图像处理取经之旅第 17 天

梦想橡皮擦

Python OpenCV 4月日更

手写函数

wudaxue

JavaScript vue.js

2021字节大厂面经分享:Java面试高分宝典!GitHub已标星86.7K

比伯

Java 编程 架构 面试 计算机

新版犀牛书该不该入手?

清秋

JavaScript ecmascript ES6 技术书籍 4月日更

头条二面:你们公司怎么处理MySQL的 Binlog 日志?

Java架构师迁哥

智慧公安重点人员管控系统搭建,助推公安智慧化发展

13828808769

区块链+ #区块链#

【得物技术】前端工程师要知道的Nginx知识

得物技术

nginx 负载均衡 大前端 得物技术 知识

大数据计算生态之数据存储

小舰

4月日更

时代之盾,国之重器:华为带给政务数据保护的新可能

脑极体

腾讯计费金融级技术架构演进_架构_小智_InfoQ精选文章