交易系統【三】網關

第二章本來是要講消息總線,審核說是過度宣傳,就放棄了,不糾結,先跳過。

網關和消息總線的底層技術都和網絡相關,兩者也有很重要的差別。消息總線主要用于內網,受交換機和網卡影響比較大,網絡狀況也比較穩定,網絡重傳的概率低,為了追求低延遲,軟硬件技術非常苛刻。

網關和消息總線有很大不同,它主要面向互聯網,交易所通常會要求專線接入,網絡狀況要優于互聯網,但距離的緣故,網絡延遲本身就遠高于局域網。想象下,光每納秒也只能傳播30厘米,就知道距離對延遲的影響有多大。上海城內平均延遲在10毫秒,上海到北京之間城域網,延遲也要超過30毫秒。另一方面,長距離傳輸要跳轉多個交換機,丟包率就要高于局域網。在這種場景下,網關的技術核心就不是怎么將延遲降到微秒級別,沒有意義,而是在處理好不穩定的網絡狀況后,保證業務的持續性。

因為互聯網本身固有的延遲,網關延遲要遠高于內網的消息總線,但并不意味著網關的延遲控制不重要,在技術上也很容易。網關要處理的連接數通常要遠高于消息總線,網絡吞吐量也高于消息總線幾個數量級。想象下,中國三億股民,一只股票行情數據在消息總線上只需要傳輸幾份副本,而將這個行情數據推送給客戶端,網絡傳輸的數據量得有多大。這個例子有點夸張也不準確,只為說明數量級的差距。交易所通常采用多級分發的策略,由交易所到證券席位和行情供應商,再由他們分發。

除了網絡吞吐量大外,網關還要應對流量尖峰。一旦瞬間網絡流量超過操作系統緩沖大小,超過運營商帶寬,或者經過的交換機問題,都有可能被丟棄,導致網絡重傳,一旦觸發超時機制,延遲都不會太小。

以上這些問題,是網關的共性技術問題,如何解決有不少優秀產品和技術可以借鑒。交易系統的網關在穩定性要求更加嚴格,在業務上也有特有的需求,比如交易網關,行情網關,結算網關,甚至股票和債券交易網關都可以分割開。

安全性考慮,將網關和核心網絡隔離,防止重復登錄,雙向心跳偵測網絡故障更及時。成交回報的推送除了避免網絡上丟失,業務層面也要加入重傳機制。

交易系統是時間敏感的,網關和終端之間日歷和時鐘同步也是至關重要。日歷對延遲容忍性要高點,時鐘就苛刻的多,傳統的NTP誤差在毫秒級,隨著交易頻率越來越高和交易公平性的要求,對時間精度越來越高。撮合原則除了價格優先還有時間優先,簡單的做法以到達撮合系統來標記時間優先順序,這種做法受到傳輸距離影響比較大,高頻量化系統就把服務器搬到交易所機房,減少傳輸距離,拿到時間優先權,更公平的做法是以委托單到交易所的前置機為準。有的交易所會采用GPS時鐘源,早期有報道稱,谷歌在數據中心內部采用原子鐘作為跨數據中心時鐘同步基準,不知道現在交易所有沒有應用。GPS時鐘加原子鐘,這兩種技術混用,以物理世界的真實時間,大大降低了傳輸距離導致的排序偏差,也降低了技術難度。

前置機和網關之間的斷網重連機制也是網關要考慮的重點,畢竟網絡狀況是不可預測的。前置機在斷網后有可能連接失敗,或者重連后可能連接到其他網關。交易系統如何避免重單,在前置機重連后,之前的網關數據如何處理,是業務級別策略。網關是被動接受連接,斷網重連不是技術上難題。

網關除了網絡流量控制外,還要考慮業務上的流速控制,避免某個前置機發單過多,而其他前置機處于饑餓狀態,這是技術導致業務上的不公平。

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/73378.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/73378.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/73378.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

eNSP中路由器的CON/AUX接口、GE Combo接口、Mini USB接口、USB接口、WAN側uplink接口、FE接口、GE接口介紹

路由器常見接口的詳細介紹及其應用示例: 1. CON/AUX 接口 全稱:Console/Auxiliary(控制臺/輔助接口)作用: CON(Console):通過命令行界面(CLI)直接配置路由器…

iOS底層原理系列04-并發編程

在移動應用開發中,流暢的用戶體驗至關重要,而并發編程是實現這一目標的關鍵技術。本文將深入探討iOS平臺上的并發編程和多線程架構,幫助你構建高性能、響應迅速的應用程序。 1. iOS線程調度機制 1.1 線程本質和iOS線程調度機制 線程是操作…

Vmware下的openEuler

1.下載openEuler操作系統鏡像 https://repo.openeuler.org/openEuler-20.03-LTS/ISO/ 2.在VM新建虛擬機 3.虛擬機聯網 我是出現了沒有網絡,ping不通的問題 參考:https://blog.csdn.net/FHY26828/article/details/140941234 修改文件: 在…

帶寬管理配置實驗

一、實驗拓撲 配置流程: 1、帶寬通道:整體帶寬、每個用戶帶寬、連接數、優先級信息 2、帶寬策略 3、策略通道,引用 4、配置接口出入帶寬 二、實驗需求和配置 1、基礎配置 接口配置 [dianxin]interface GigabitEthernet 0/0/0 [dianxin-G…

【STM32】從新建一個工程開始:STM32 新建工程的詳細步驟

STM32 開發通常使用 Keil MDK、STM32CubeMX、IAR 等工具來創建和管理工程。此處是 使用 Keil MDK5 STM32CubeMX 創建 STM32 工程的詳細步驟。 新建的標準庫工程文件已上傳至資源中,下載后即可直接使用。 標準庫新建 STM32 工程的基本目錄結構:STD_STM…

探索 Trossen AI:從 Aloha到智能機器人平臺的進化之路

在人工智能與機器人技術快速發展的當下,科研硬件的性能與成本成為影響行業創新的重要因素。Trossen Robotic為在機器人領域二十余年的知名企業,近日推出的 Trossen AI 系列產品,為科研機構與開發者提供了高性能、高性價比的解決方案。 Trosse…

C語言:5.20程序練習題

打印一個菱形圖案。程序分為兩部分&#xff1a;上半部分和下半部分。上半部分打印一個逐漸增大的星號圖案&#xff0c;下半部分打印一個逐漸縮小的星號圖案。 #include<stdio.h> int main() {int row 5;//定義行數int t 2;for (int i row; 0 < i; i--){for (int k…

一些docker命令

一、基礎命令 查看 Docker 版本 docker --version 或 docker version&#xff1a;顯示 Docker 客戶端和服務器的版本信息。 查看 Docker 系統信息 docker info&#xff1a;顯示 Docker 系統的詳細信息&#xff0c;包括鏡像、容器數量、存儲驅動類型等。 Docker 服務管理 s…

C語言內容

C語言是一門經典且廣泛應用的編程語言&#xff0c;具有以下基礎要點&#xff1a; 基本數據類型 包括整型&#xff08;如 int &#xff09;、字符型&#xff08; char &#xff09;、浮點型&#xff08; float 和 double &#xff09;等&#xff0c;用于定義不同類型的變量來…

Python----數據可視化(Pyecharts一:介紹安裝,全局配置,系列配置)

一、PyEcharts介紹 1.1、概況 Echarts 是一個由百度開源的數據可視化&#xff0c;憑借著良好的交互性&#xff0c;精巧的圖表設計&#xff0c;得到了眾多開發者的認可。而 Python 是一門富有表達力的語言&#xff0c;很適合用于數據處理。當數據分析遇上數據可視化時&#xff…

dockerfile 編寫入門

Dockerfile編寫指南 Dockerfile是一個文本文件&#xff0c;其中包含了一系列的指令和參數&#xff0c;用于定義如何構建Docker鏡像。一個良好編寫的Dockerfile不僅可以確保鏡像的構建過程高效、可靠&#xff0c;還可以使得鏡像更加安全和易于維護。 1. Dockerfile基本結構和語…

Git 本地常見快捷操作

Git 本地常見快捷操作 &#x1f4cc; 1. 基本操作 操作命令初始化 Git 倉庫git init查看 Git 狀態git status添加所有文件到暫存區git add .添加指定文件git add <file>提交更改git commit -m "提交信息"修改最后一次提交信息git commit --amend -m "新…

如何處理PHP中的文件上傳錯誤

如何處理PHP中的文件上傳錯誤 在Web開發中&#xff0c;文件上傳是一個常見的功能需求。然而&#xff0c;文件上傳過程中可能會遇到各種錯誤&#xff0c;如文件大小超出限制、文件類型不被允許、上傳過程中斷等。為了確保用戶能夠順利上傳文件&#xff0c;并且開發者能夠有效地…

Linux--普通文件的管理

目錄 1、創建根目錄結構中的所有的普通文件 2、列出所有賬號的賬號名 3、將/etc/passwd中內容按照冒號隔開的第三個字符從大到小排序后輸出所有內容 4、列出/etc/passwd中的第20行-25行內容 head命令 tail命令 5、切割出你的ip地址和mac地址 ip地址 MAC地址 6、切割…

【SpringMVC】常用注解:@RequestBody

1.作用 用于獲取請求實體內容&#xff0c;直接使用得到的是keyvalue&keyvalue的數據。獲取請求實體內容不適用get請求。 2.屬性 required 描述是否有請求體&#xff0c;默認值為true。當取值為true時&#xff0c;get 請求方式會報錯。如果取值為false&#xff0c;get請…

RK3588 遠程 SSH時出現WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED! 翻譯過來就是 警告&#xff1a;遠程主機標識已更改&#xff01; 此報錯是由于遠程的主機的公鑰發生了變化導致的。 ssh服務是通過公鑰和私鑰來進行連接的&#xff0c;它會把每個曾經訪問過計算機或服務器的公鑰&#xff…

Go紅隊開發—web網絡編程

文章目錄 web網絡編程Req快速請求 調試DevModeDebugLogTraceInfo瓶頸分析 控制請求與響應控制請求的字段內容控制調試打印的內容分開dump請求與響應部分請求體設置 作用范圍級別設置參數查詢URL 路徑參數表單請求設置請求頭設置 判斷響應狀態碼解析數據SetSuccessResultgjson響…

PawSQL for TDSQL:騰訊云TDSQL數據庫性能優化全攻略

TDSQL 作為騰訊云推出的分布式數據庫&#xff0c;憑借其高擴展性、高可用性和高性能等優勢&#xff0c;廣泛應用于金融、互聯網、政務等領域。隨著業務的不斷增長和數據量的爆炸式增長&#xff0c;如何優化 TDSQL 數據庫的性能&#xff0c;成為眾多企業和開發者面臨的挑戰。本文…

67.Harmonyos NEXT 圖片預覽組件之性能優化策略

溫馨提示&#xff1a;本篇博客的詳細代碼已發布到 git : https://gitcode.com/nutpi/HarmonyosNext 可以下載運行哦&#xff01; Harmonyos NEXT 圖片預覽組件之性能優化策略 文章目錄 Harmonyos NEXT 圖片預覽組件之性能優化策略效果預覽一、性能優化概述1. 性能優化的關鍵指標…

C語言中的字符串與數組的關系

在C語言中,字符串和數組之間有著緊密的關系。理解它們的區別和聯系對于編寫高效且可靠的代碼至關重要。在本篇博文中,我們將詳細分析字符串和數組在C語言中的概念、它們的關系以及如何在編程中應用它們。 一、字符串與數組的基礎知識 1.1 數組概念 在C語言中,數組是一組相…