高可用、高扩展、低延迟交易处理系统架构设计

为实现一个高TPS、高可靠性、高扩展性、低响应延迟的交易处理系统,在系统架构设计上,需要有诸多考虑。

 1. 交易处理系统的功能
 交易系统是用于连接多个不同的交易请求系统(上游系统)与交易受理系统(下游系统),在这些交易上下游系统之间传递不同格式的交易报文。同时一个交易请求可能需要发送多个不同的子交易请求到不同的交易受理系统,交易处理系统还负责子交易的拆分、交易完整性与一致性保证。
 一个典型的交易处理系统,往往需要支持多种不同的通信协议(TCP长连接、TCP短链接、CTG、CICS、MQ等),支持多种不同的报文格式(固定长度报文、IST8583、key/value、JSON、XML等)。

 2. 模块划分
 首先,我们可以将交易处理系统分为三层:上游网关、交易处理、下游网关。三层各为独立的进程,三层之间用消息队列进行数据交换。
 上、下游网关层负责与上下游系统建立通讯链接、完成报文的拆包、组包。
 对每种不同的通讯协议,有相应的通讯链接模块,负责建立通讯链接。
 对不同的报文格式,有相应的报文转换模块。为便于系统内部的统一处理,需要定义一个统一的交易数据结构,报文转换模块负责将外部报文与内部数据结构进行相互转换。
 交易处理层需实现交易拆分、路由选择、完整性与一致性保证等功能,分为交易请求处理模块与交易返回处理模块。
 从上游网关收到交易请求时,需要判断交易需拆分为哪几个子交易,第一个子交易需发给哪个下游系统,随即将此子交易发给对应的下游网关。
 从下游网关收到交易返回时,需要判断此交易是否还有下一个子交易待处理,如还有子交易,则同样需要将此子交易发给对应的下游网关。如没有更多子交易,则返回给上游网关。

 3. 高TPS与低响应延迟
 为实现高TPS与低响应延迟,必须尽量缩短交易处理耗费的时间。为此可从以下几个方面加以考虑:

  • 将常用参数载入内存

在交易处理过程中会用到很多参数,例如报文格式参数、交易拆分参数等待。这些参数基本上每笔交易都会用到,且很少会修改。因此可以将这些参数都载入本地内存,加快参数读取速度。
  另外可以考虑使用内存数据库,使得多个进程可以共享同一份内存参数,减少对内存的消耗。

  • 减少网络IO

上下游网关与交易处理这三层之间是使用消息队列进行数据交换,因此可以将这三层部署在同一个节点(即一个逻辑分区)中,使得三层之间的数据交换无需通过网络IO,减少耗时。

  • 使用暂存表缩短查询时间

在处理子交易的返回时,我们需要从数据库中找到这笔子交易的原交易信息。在一个大交易量的系统中,每日交易可能达到数千万笔甚至更多,如果要在数千万笔交易中查找原交易信息,会使数据库面临较大压力。为此可建立一个交易暂存表,这个暂存表只保留近几分钟的交易(如5分钟,一般可设为交易超时时间),这样便可极大减少查找原交易消耗的数据库资源。

 4. 高可靠性与可高扩展性
 在系统部署时,可以部署多个节点(即多个逻辑分区),每个节点均部署完整的上下游网关与交易处理进程。同时使用负载均衡器负责将交易分发到各节点。上游系统均直连负载均衡器。这样即可任意部署多个节点,任何节点损坏均不影响其他节点的交易处理,增加节点即可(在一定程度上)成比例的增加交易处理能力。从而实现了高可靠性与高扩展性。

时间: 2024-10-14 09:07:13

高可用、高扩展、低延迟交易处理系统架构设计的相关文章

高性能、高可用、高扩展ERP系统架构设计

ERP之痛 曾几何时,我混迹于电商.珠宝行业4年多,为这两个行业开发过两套大型业务系统(ERP).作为一个ERP系统,系统主要功能模块无非是订单管理.商品管理.生产采购.仓库管理.物流管理.财务管理等等.作为一个管理系统,大家的一般开发习惯就是使用.Net或Java技术,建立一个单块(单进程)架构的应用,只有一个SQLServer或MySql数据库.然后在项目文件中分一下各个模块,三层结构方式组织代码编写开发.最后测试,交付上线. 起初,因为数据量不大,系统性能还不错,各种列表查询,报表查询,E

高可用高并发的 9 种技术架构!

1.分层分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对简单并比较单一的职责,然后通过上层对下层的依赖和调度组成一个完整的系统.在网站的分层架构中,常见的为3层,即应用层.服务层.数据层.应用层具体负责业务和视图的展示:服务层为应用层提供服务支持:数据库提供数据存储访问服务,如数据库.缓存.文件.搜索引擎等.分层架构是逻辑上的,在物理部署上,三层架构可以部署在同一个物理机器上,但是随着网站业务的发展,必然需要对已经分层的模块分离部署,即三层结构分

简谈9种高性能高可用高并发的技术架构

每一个模式描述了一个在我们周围不断重复发生的问题及该问题解决方案的核心.这样,你就能一次又一次地使用该方案而不必做重复工作. 所谓网站架构模式即为了解决大型网站面临的高并发访问.海量数据.高可靠运行等一系列问题与挑战.为此,在实践中提出了许多解决方案,以实现网站高性能.高可靠性.易伸缩.可扩展.安全等各种技术架构目标. 一.分层 分层是企业应用系统中最常见的一种架构模式,将系统在横向维度上切分成几个部分,每个部分负责一部分相对简单并比较单一的职责,然后通过上层对下层的依赖和调度组成一个完整的系统

简介一:低延迟交易架构技术研究

作者:黄寅飞.叶婧.徐广斌 1 低延迟综述 近几年来,全球各大交易所纷纷对技术系统进行投资改造,其中竞争最激烈的指标就是订单处理延迟和行情发布延迟.低延迟的需求很大程度上来自于证券市场上高频交易比例的迅猛增长.在证券产品可以在多家交易所进行交易的情况下,能够更快处理订单.更快反馈行情的交易所,显然更能吸引采用高频交易策略的机构投资者. 以下对全球各大交易所技术系统的低延迟指标进行综述: NASDAQ 纳斯达克OMX集团下属NASDAQ.费城.哥本哈根.赫尔辛基.冰岛.斯德哥尔摩.里加.塔林.维尔

面向海量数据的高并发高可用分层系统架构设计

近期参与一个互联网项目,按照该项目的需求设计了分层的系统架构,主要目的是高并发高可用,能够根据用户访问量和并发情况进行伸缩. 第一个部分是由Web服务器和应用服务器构成的负载均衡区.该区域的主要目标是分散用户的访问量,平衡各服务器的压力,提高各服务器的资源利用率,因为大多数网站都是属于IO密集型,因此可以利用线程池增加并发处理能力,采用多核多内存的资源配置模式.可以采用Apache+Tomcat或Nginx+Jboss来实现,其中消息服务器通过异步处理机制可以提高系统响应速度,增加用户体验. 第

keepalived+LVS 实现双机热备、负载均衡、失效转移 高性能 高可用 高伸缩性 服务器集群

本章笔者亲自动手,使用LVS技术实现实现一个可以支持庞大访问量.高可用性.高伸缩性的服务器集群 在读本章之前,可能有不少读者尚未使用该技术,或者部分读者使用Nginx实现应用层的负载均衡.这里大家都可以阅读本章,即使部分读者使用Nginx负载均衡,但是在大流量下性能相对于工作在链路层的LVS真是不能同日而语,并且LVS不仅可以实现WEB方面的负载均衡,其他诸如数据库.FTP.Mail等都可以实现. 通常对于小型网站,很多都使用单台服务器,顶多在弄个缓存服务器.数据库服务器.但是一旦流量上来,单台

面试中的nginx高可用高并发!

本文转自:91博客:原文地址:http://www.9191boke.com/439923471.html 面试题: nginx高可用?nginx 是如何实现并发的?为什么nginx不使用多线程?nginx常见的优化手段有哪些?502错误可能原因有哪些? 面试官心理分析 主要是看应聘人员的对NGINX的基本原理是否熟悉,因为大多数运维人员多多少少都懂点NGINX,但是真正其明白原理的可能少之又少.明白其原理,才能做优化,否则只能照样搬样,出了问题也无从下手. 懂皮毛的人,一般会做个 Web Se

每秒处理10万高并发订单的乐视集团支付系统架构分享

随着乐视硬件抢购的不断升级,乐视集团支付面临的请求压力百倍乃至千倍的暴增.作为商品购买的最后一环,保证用户快速稳定的完成支付尤为重要.所以在15年11月,我们对整个支付系统进行了全面的架构升级,使之具备了每秒稳定处理10万订单的能力.为乐视生态各种形式的抢购秒杀活动提供了强有力的支撑. 一.库分表 在redis,memcached等缓存系统盛行的互联网时代,构建一个支撑每秒十万只读的系统并不复杂,无非是通过一致性哈希扩展缓存节点,水平扩展web服务器等.支付系统要处理每秒十万笔订单,需要的是每秒

PHP开发高可用高安全App后端 视频教程

1-1 App项目功能介绍1-2 项目功能需求分析1-3 数据表ER关系总图对应讲解2-1 项目环境搭建及postman等工具介绍2-2 thinkphp5.0的安装2-3 项目后台模板的搭建3-1 后台用户表的设计3-2 新增后台用户功能开发3-3 后台验证码功能开发3-4 后台登录功能开发(上)3-5 后台登录功能开发(下) 3-6 后台退出登录功能开发3-7 后台权限控制功能的实现4-1 娱乐新闻表结构设计4-2 上传图片插件准备工作介绍4-3 新闻内容添加--图片上传到本地服务4-4 高