【技术干货】40页PPT分享万亿级交易量下的支付平台设计(4)

简介: 【技术干货】40页PPT分享万亿级交易量下的支付平台设计(4)

image.png


苏宁金融集团年交易量已过万亿,日均资金流水几十亿,需要保证每一笔交易资金的安全;对这样业务需求极速变化的高并发金融资金系统进行重构,就犹如对发射出去的导弹进行二次加速,任何一个小失误,都可能导致上亿的资损,影响上亿的用户体验;那么在重构过程中,如何保证优雅就非常重要?首先需要确定我们的目标是什么?基于这个目标我们的困难是什么?解决方案是什么?怎么去实施?怎么去演进?怎么去验证?


image.png


基于这个愿景,就要满足两点:快和稳; 第一个是快:我们需要对业务敏捷、快速响应业务的变化;这个也是研发中心的核心使命,能对集团业务能够很好的支撑,甚至是驱动业务的发展;第2个是稳,性能要高(20万TPS、高可用),平时会考核MTTR,出现故障后多久能恢复,10秒、20秒还是一分钟?通过这个指标去牵动其它所有的工作的优化,避免指标太多,工作没有重点,不能聚焦;比如定10个指标,每个指标权重10%,看似面面俱到,其实没有重点;但是系统指标有很多,有成功率,耗时,异常率,各个硬件的使用率等等,作为负责人要找到北极星指标;我们的北极星指标就是MTTR;以及这么多系统能否实现弹性治理


image.png


基于目标,然后识别关键问题,那我们的关键问题有四类:


1、交付速度:基于标准的复用,并行、分布研发;2、高可用:需要分析故障点,建设DB单点/热点防护、自动化运维、服务自愈、应用级灾备能力3、可伸缩:从应用到IDC、服务器、网络,做到全网伸缩;4、低成本:不仅要节流,还要开源,重点是公司盈利和控制资损,通过技术对业务驱动力产生的正向价值,产品运营效果评估,这个也是对团队负责人的一个要求:要善于做技术产品化和技术品牌的运营;


image.png


高可用的重点是故障识别与应对,即对故障源的实时感知和可视化的治理。故障源来源:按照我们的服务模型分三方面:提供的服务、服务本身、依赖服务。提供的服务:故障来源在于请求,比较经常出故障的是:重复请求、并发请求、超量请求。针对每一个请求我们用不同的策略进行处理。外部服务:首先检测通信是否正常,通信正常后服务是否可用,服务可用后响应是否超时,这些都没问题后功能契约SLA是否满足,这样就形成了一个体系化的处理方法,就不会遗漏,也便于团队的知识传承(不论是代码结构设计,还是团队设计思想的统一,都是比较好的)


image.png


对外提供的服务是吞吐量、单资源存储量的上限、响应时间;内部服务:关注DB、数据库总连接数、单数据库每秒事务数、慢SQL;依赖服务:银行实时清算能力、关键服务访问量等;这个是个可伸缩的框架,接下来我们详讲一些关键系统的可伸缩设计,具体是怎么做到的,交易系统、支付引擎系统和账务核心,如何实现可伸缩的。


image.png


首先是交易系统的设计,大维度上,将B、C端拆封开,然后进行读写分离,再对写进行分库分表。这里要特别讲一下分库分表中间件有两个特别的功能:灰度支持和影子库表支持。灰度支持即用来对不同用户,对不同场景,不同功能进行灰度,影子库表主要便于生产压测使用,后面在生产压测部分会详讲;


image.png


支付引擎即支付服务的分库分表策略,按照用户维度进行拆分。这里面有个核心设计,我们设计了一个逻辑数据源,而不是物理数据源,便于迁库,减少DBA的运营成本。


相关文章
|
数据采集 Java API
Crawler4j实例爬取爱奇艺热播剧案例 前言
Crawler4j实例爬取爱奇艺热播剧案例 前言
|
监控 安全 C#
attempt to write a readonly database错误的解决(C#,SQLite)
今天打包WPF程序,安装后总是打不开,查看监控日志原来是SQLite的问题,报错如图     当向SQLite数据库中存入新纪录时总是显示attempt to write a readonly a database。
3743 0
|
存储 算法 C语言
【C语言程序设计——函数】素数判定(头歌实践教学平台习题)【合集】
本内容介绍了编写一个判断素数的子函数的任务,涵盖循环控制与跳转语句、算术运算符(%)、以及素数的概念。任务要求在主函数中输入整数并输出是否为素数的信息。相关知识包括 `for` 和 `while` 循环、`break` 和 `continue` 语句、取余运算符 `%` 的使用及素数定义、分布规律和应用场景。编程要求根据提示补充代码,测试说明提供了输入输出示例,最后给出通关代码和测试结果。 任务核心:编写判断素数的子函数并在主函数中调用,涉及循环结构和条件判断。
777 23
|
人工智能 Linux API
PromptWizard:微软开源 AI 提示词自动化优化框架,能够迭代优化提示指令和上下文示例,提升 LLMs 特定任务的表现
PromptWizard 是微软开源的 AI 提示词自动化优化框架,通过自我演变和自我适应机制,迭代优化提示指令和上下文示例,提升大型语言模型(LLMs)在特定任务中的表现。本文详细介绍了 PromptWizard 的主要功能、技术原理以及如何运行该框架。
1175 8
PromptWizard:微软开源 AI 提示词自动化优化框架,能够迭代优化提示指令和上下文示例,提升 LLMs 特定任务的表现
|
Dart Android开发 开发者
掌握跨平台移动应用开发:Flutter 的崛起
【10月更文挑战第9天】本文介绍了Flutter,一个由Google支持的开源UI工具包,专注于跨平台移动应用开发。文章详细探讨了Flutter的核心优势,如原生性能、热重载、丰富的组件及高可定制性,并提供了实施开发的步骤指南。此外,还分享了Flutter在快速原型开发、高性能应用及跨平台维护中的应用实例和实战技巧,旨在帮助开发者高效利用Flutter构建高质量移动应用。
|
存储 负载均衡 算法
从海量数据中挖出TOP100热词,这个算法太绝了!
小米,一位热爱技术的29岁程序员,今天探讨如何在海量搜索词汇中找出最热的TOP100词汇。面对包含数百亿词汇的大文件,小米介绍了一种实用的方法:通过哈希分流将大文件拆分成小文件,接着利用哈希表统计词频,并运用小根堆选出每个小文件的TOP100词汇。最后通过外排序或再次使用小根堆选出全局TOP100。此外还提出了并行处理、内存优化及数据压缩等优化手段。这一系列技巧能有效应对大数据处理挑战。
349 9
|
机器学习/深度学习 自然语言处理 API
10-22|处理脏话其他方法
10-22|处理脏话其他方法
|
安全 程序员 Shell
2022渗透测试-命令执行漏洞的详细讲解
渗透测试-命令执行漏洞的详细讲解
2022渗透测试-命令执行漏洞的详细讲解
|
调度 决策智能
基于条件风险价值CVaR的微网动态定价与调度策略(matlab代码)
基于条件风险价值CVaR的微网动态定价与调度策略(matlab代码)
|
JavaScript Java 测试技术
基于SpringBoot+Vue+uniapp的博物馆展览与服务一体化平台的详细设计和实现(源码+lw+部署文档+讲解等)
基于SpringBoot+Vue+uniapp的博物馆展览与服务一体化平台的详细设计和实现(源码+lw+部署文档+讲解等)
312 0