金融分布式系统基础平台AMI

admin 2025-09-07 阅读:3 评论:0
1. AMI概述 AMI(Archforce Message Interconnection)是面向金融领域提供低延迟、高吞吐、高可靠、高可用、松耦合、可扩展全栈解决方案的分布式系统基础平台。作为商业产品,AMI有标准的研发、测试、产品管...

1. AMI概述

AMI(Archforce Message Interconnection)是面向金融领域提供低延迟、高吞吐、高可靠、高可用、松耦合、可扩展全栈解决方案的分布式系统基础平台。作为商业产品,AMI有标准的研发、测试、产品管理、培训、支持体系。证券行业多家大型券商已经基于AMI在算法、交易、行情、资管等领域构建了自己的分布式应用系统。

AMI平台为分布式服务提供基于主题语义、支持可靠组播、无需中间节点的高性能数据传输能力。同时,AMI提供了一套与业务无关的高可用解决方案,只要基于AMI构建分布式应用并遵从确定性原则,分布式应用即可获得高可用能力。另外,AMI提供了对于业务开发友好的API和开发框架,使得基于AMI开发分布式系统的架构更清晰、设计更容易、开发快捷。

在逻辑关系上可将AMI看作一条消息总线,不的业务消息在总线上传输并按照主题进行路由,不同的分布式应通过标准的API接入总线进行消息收发,并可以在总线上动态插拔。基于AMI平台构建的不同业务功能的分布式应用,只需将这些分布式应用挂接到同一AMI总线上,即可构建出一套高性能、高可用、可扩展的分布式业务系统或业务平台。

AMI的结构由动态库(SDK)和分布式服务(Daemon)组成。动态库与应用逻辑运行在同一进程空间,应用程序调用AMI提供的API来使用AMI的功能(譬如消息传输)。分布式服务则负责AMI的配置管理、运行监控、脑裂仲裁、分析跟踪、数据桥接、数据采集、运维管理等功能。

2. 高性能数据传输

AMI为部署于其上的分布式应用提供基于主题语义的高性能可靠消息传输。

2.1 发布/订阅模式

挂接在AMI上的应用组件,可通过配置静态或动态创建的形式创建发布或接收的主题。应用组件作为消息总线的使用者,在发送消息时,无需了解消息的接收者是谁,也无需了解消息传输的具体路径,只需指定消息的发送主题。同样,接收消息时也不必了解消息的源头和路径,只需订阅主题即可。

AMI支持可靠组播,一次发送可送达相同主题的多个订阅者。

AMI的主题支持静态负载分区功能和动态负载均衡功能,以实现负载分割,方便应用系统进行水平扩展。订阅者可指定订阅某个主题的某个/某些分区,发送者可指定每个消息的目的分区,也可以以默认规则将消息均衡发送到多个分区。

2.2 可靠传输

AMI在UDP组播或单播技术基础之上实现可靠传输,可保证在主题上的消息在传输过程中不丢、不重、不乱(即接收顺序与发送顺序一致)。

AMI使用接收端ACK/NAK机制对发送端进行反馈,可设置不同的反馈策略,可设置应答者数量(或动态维护应答者数量),可配置关键应答者(保证送达),从而实现对消息反馈机制和传输可靠性等级的灵活配置。

AMI支持两个级别的消息重传:基于内存缓存,及基于持久化历史消息数据。基于内存缓存可实现高效重传,基于持久化历史消息数据的重传则可保证极端情况下消息一定送达。

在拥塞控制方面,AMI支持基于配置信息的静态(基于丢包的动态)流量控制,以及基于反馈机制的动态发送窗口控制。

通过对消息的分片/组装、打包/解包技术,AMI可以兼顾不同大小消息的高性能传输,支持的任意大小的消息发送。

2.3 数据交互模式

AMI默认以事件驱动的模式向应用递交消息,收到消息时通过回调应用提供的消息处理方法,将消息递交给应用。这种模式可支持高吞吐、低时延数据传输。

对于性能不敏感的分布式服务,AMI也支持使用RPC模式的数据交互。

2.4 高性能支撑技术

AMI采用了以下的高性能支撑技术,以实现消息传输的高吞吐和低时延:

·异步多线程网络框架

AMI在发送端和接收端都采用了多线程模型,多线程并发处理消息的打包、发送、接收、解包、同步、缓存、查找、重传等环节。

·智能打包算法

为数据中心和组播技术量身定制的打包和拥塞控制策略。

·高效的内存管理

设计高效的内存数据结构,提高内存对象分配速度和使用效率。

·无锁技术

通过各种无锁技术,降低并发冲突,提高处理性能。

·消息持久化

现本地持久化,在几乎不增加时延的前提下最大程度地保证数据可用。

·针对体系架构优化的数据结构和算法

针对CPU、操作系统、编译器等特性针对性地做出程序优化。

·内核旁路(Kernel Bypass)

使用用户态协议栈或者硬件加速协议栈,降低消息发送及接收时延。

3. 高可用解决方案

AMI支持状态机复制和主从复制两种高可用架构。在状态机复制架构下,AMI可提供与业务无关的整体高可用解决方案。该方案容错能力强(高达99.9999%),部署及管理方便,同步高效,节省网络带宽,支持秒级自动切换。

3.1 应对场景

AMI的容错机制可应对以下故障场景:

·单实例故障

·多实例故障

·整个集群故障

·局部网络故障

·数据中心间网络中断

·数据中心灾难

3.2 消息持久化

AMI可对主题上的输入和输出消息做持久化,持久化的消息可用于消息重传、故障恢复、故障隔离、数据稽核等功能。持久化功能保证应用异常时依然可以将消息安全、完整的落地到存储。持久化功能可按输入、输出、主题进行灵活开关配置,并支持通过API从多个维度对历史消息进行查询和读取。持久化引入的延迟开销极小,不会对系统整体延迟产生明显影响。

3.3 故障切换

基于AMI的高可用应用集群依赖连接状态及心跳超时等机制进行检测故障。对于单点故障及随机多点故障,AMI可实现故障自动切换,无需人工干预,切换速度快(RTO在秒级),无数据丢失(RPO=0)。

应用组件集群可灵活配置实例数量,且可以跨同城的多个数据中心部署。集群的容错能力可灵活配置,通过配置集群中的副本数量和工作模式可实现在超低时延和超高容错能力之间的权衡。

3.4 消息堆积

AMI基于消息持久化功能可实现在消费发送端和消息接收端的消息堆积能力。当某个分布式应用(分布式应用集群)发生故障,或处理消息缓慢时,可使得其上游应用不受影响,其上游应用可以继续向AMI上推送消息,当故障应用恢复后可以从AMI上获取到这些缓存的消息并继续处理。这使得当消息传输的旁路分支上的接收者发生故障或处理能力不足时,不会影响主路径上的接收者,以保证系统的可用性和高性能。

消息堆积能力可分别发生在发送端和接收端两侧。当接收端发生故障时,发送端发出的消息将在本地存储上排队缓存,待接收端恢复后可重新推送。当接收端处理消息缓慢时,接收端接收到的消息将在本地存储上排队缓存,接收端应用可按照自己的节奏异步消费消息。

3.5 故障恢复

故障恢复是指发生故障的单个副本或整个高可用集群发生故障后,可以重新恢复。改功能用于恢复分布式应用的业务运行(整个集群故障后恢复),或恢复分布式集群的高可用能力(单副本故障后恢复)。故障恢复分为两种情况:重新加入和集群恢复。

集群内的部分实例发生故障,但集群内仍有活动实例时,可对故障实例进行重新加入。重新加入的实例通过消息重演和状态同步等机制加入集群,最终以备实例的角色运行。

集群整体发生故障时,可选择最后发生故障的实例进行集群恢复。该实例恢复后成为主实例,其它故障实例可通过重新加入功能恢复为备实例。

4. 几种接口形式

针对不同的开发和接入需求,AMI提供了多种开发接口及开发框架。

4.1 API与连接器

对于linux操作系统,AMI提供c++/c/java/python/go语言的API。

对于Windows/AIX操作系统,AMI提供连接器(代理)接入。连接器提供TCP协议接口和API接口,其中API接口支持 c++/python(Windows) 语言。

最终使用不同编程语言开发,在不同的操作系统上运行的应用程序可以挂接在同一条总线上,实现互联互通。

4.2 应用框架

AMI提供用于通用应用开发的编程框架AAF,支持命令行解析、信号处理、日志处理、数据加载、配置解析、守护进程、单例进程、通用初始化和销毁流程、指标监控等功能。

此外,AMI还提供对业务实现开发支持更完善的通用技术框架ABF,ABF支持接口定义和序列化、支持对象的传输、提供模块化插件化的业务开发体验、支持模块间的时序管理和依赖管理、支持业务数据流编排、提供了高性能对象池、线程模型、事件管理、垃圾回收、异常消息过滤和保护等功能。通过Web终端可以对框架和模块的属性进行配置,Web终端提供了应用模块结构的可视化展示。

5. 运维管理

AMI提供了可视化的配置管理功能、灵活的监控能力、丰富的支撑工具,从各方面提升系统的易用性和友好性。

5.1 集中管理

AMI使用集中化的配置管理服务器,用于系统的配置管理、指标监控、集群仲裁等功能。AMI提供系统配置管理界面。配置管理服务器亦可配置为高可用集群以容忍多点故障。

5.2 运维监控

AMI会记录详细的运行日志和事件,基于内嵌的Http框架和Web Socket框架,可实现灵活、实时的监控指标和事件上报功能。配置管理服务器集成了指标仪表盘功能,可对分布式系统中个节点的指标和事件进行查看和监控。

AMI提供了用于性能分析和消息轨迹跟踪的标准框架。通过应用程序注解(Check Point)的方式,可采集各分布式应用的业务处理时间和事件,并对采集到的数据按照用户指定的规则实时计算性能指标,并以折线图等可视化的形式展示给终端用户。此外,该框架还可以实时识别异常的消息传输轨迹和业务阻塞等情况,并进行告警。

5.3 支撑工具

AMI将提供数据查询、数据稽核、问题分析、异常处理等系列支撑工具,可协助基于AMI的业务系统的开发、运维。

5.4运维管理

面向中小规模的分布式系统,AMI提供了一套精简的运维管理系统。通过配置分布式应用的部署位置,启停恢复方式,流水线关系等信息,可实现分布式系统的日常运维和应用状态监控。以上功能都提供可视化页面。

特性及指标汇总

图-1 AMI的综合能力雷达象限

表-1 AMI的一级功能清单

表-2  AMI性能数据(使用硬件加速)

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权,未经许可,不得转载。

分享:

扫一扫在手机阅读、分享本文

热门文章
  • BIAS指标解析:如何利用乖离率预测股价反转

    BIAS指标解析:如何利用乖离率预测股价反转
    乖离率(BIAS)是技术分析中一个重要的指标,用于衡量股价与其移动平均线之间的偏离程度。通过计算股价与均线的差值占均线的百分比,投资者可以判断当前股价是否处于超买或超卖状态。BIAS的计算公式为: BIAS = (当前股价 – 移动平均线) / 移动平均线 × 100% 当BIAS值大于10%时,通常认为股价处于超买状态,市场可能面临回调风险;而当BIAS值小于-10%时,则认为股价处于超卖状态,市场可能迎来反弹机会。 乖离率的基本原理 乖离率的核心思想是股价会围...
  • MACD指标解析:如何通过DIFF和DEA线捕捉市场趋势

    MACD指标解析:如何通过DIFF和DEA线捕捉市场趋势
    MACD(平滑异同移动平均线)是技术分析中常用的趋势跟踪指标,由DIFF线、DEA线和柱状线组成。它通过计算两条指数移动平均线(EMA)的差值,帮助投资者识别市场趋势的强弱和转折点。本文将深入解析MACD的构成、计算方法及其在捕捉趋势转折与背离信号中的应用。 MACD的构成与计算方法 MACD由三个主要部分组成:DIFF线、DEA线和柱状线。DIFF线是短期EMA(通常为12日)与长期EMA(通常为26日)的差值,反映了短期和长期趋势的差异。DEA线则是DIFF线的9...
  • CCI指标揭秘:如何利用CCI>100和CCI<-100捕捉买卖信号

    CCI指标揭秘:如何利用CCI>100和CCI<-100捕捉买卖信号
    顺势指标(Commodity Channel Index,简称CCI)是一种广泛应用于股票、期货和外汇市场的技术分析工具。它由唐纳德·兰伯特(Donald Lambert)于1980年提出,主要用于衡量价格相对于其统计平均值的偏离程度。CCI的核心思想是通过计算当前价格与历史平均价格的差异,来判断市场是否处于超买或超卖状态。 CCI的计算公式较为复杂,但其核心逻辑是通过比较当前价格与一定周期内的平均价格,来衡量价格的波动性。具体来说,CCI的计算公式为:CCI = (当...
  • 能量潮(OBV)揭秘:如何通过成交量预测股价趋势

    能量潮(OBV)揭秘:如何通过成交量预测股价趋势
    能量潮(On-Balance Volume,简称OBV)是一种技术分析工具,由乔·格兰维尔(Joe Granville)在1963年提出。OBV通过累计成交量的变化来预测股票价格趋势,是一种非常有效的量价分析工具。OBV的核心思想是成交量是价格变动的先行指标,成交量的变化可以预示价格的未来走势。 OBV的计算方法相对简单。当某一天的收盘价高于前一天的收盘价时,当天的成交量被加到前一天的OBV值上;当某一天的收盘价低于前一天的收盘价时,当天的成交量从前一天的OBV值中减去...
  • 2025全球先锋赛循环赛第一日赛程预告:19点HLE对战TES

    2025全球先锋赛循环赛第一日赛程预告:19点HLE对战TES
      2025全球先锋赛循环赛第一日赛程预告(BO3):   16:00 KC对战TL   约19:00 HLE对战TES   解说:王多多、鼓鼓、Wayward   主持:泱泱...