精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

為什么我們選擇Java開發高頻交易系統?

新聞 前端
過去 14 年,我們一直用 Java 開發外匯算法交易系統,并使用了很棒但價格實惠的硬件。這一切是怎樣實現的?

 過去 14 年,我們一直用 Java 開發外匯算法交易系統,并使用了很棒但價格實惠的硬件。這一切是怎樣實現的?

[[352413]]

在高頻交易領域,自動化應用程序每天需要處理數億個市場交易信號,并在全球各交易所之間發送成千上萬的訂單。

為了保持競爭力,響應時間必須始終保持在微秒級,特別是在發生類似“黑天鵝”事件的異常高峰期。

在一個典型的架構中,金融市場的交易信號被轉換成內部的市場數據格式 (使用各種協議,如 TCP/IP、UDP 組播和多種格式,如二進制、SBE、JSON、FIX 等)。

這些規范化的消息被發送到算法服務器、統計引擎、用戶界面、日志服務器和各種類型的數據庫 (內存數據庫、物理數據庫、分布式數據庫)。

這條路徑上的任何一個延遲都有可能帶來嚴重后果(比如基于舊價格做出戰略決策或訂單到達交易市場的時間太遲),并為此付出慘重代價。

為了加快至關重要的幾微秒,大多數券商投入了昂貴的硬件:服務器組配備了超頻液冷的 CPU(在 2020 年,你可以買到單臺配備了 56 核 5.6 GHz CPU 和 1 TB 內存的服務器)、靠近交易所的數據中心、納秒級高端網絡交換機、海底專線 (Hibernian Express 是一家主要的供應商),甚至是微波網絡。

我們經常看到高度定制的可以繞過操作系統的 Linux 內核,數據可以直接從網卡“跳轉”到應用程序、IPC(進程間通信),甚至是 FPGA(可編程單用途芯片)。

在編程語言方面,C++ 似乎是服務器端應用程序的天然競爭者:它速度快,與機器碼非常接近,而且一旦針對目標平臺進行編譯,就可以提供恒定的處理時間。

但是,我們做了一個不一樣的選擇。

在過去的 14 年里,我們一直在用 Java 開發外匯算法交易系統,并使用了很棒但價格實惠的硬件。

由于團隊規模小,資源有限,技術能力強的開發人員難找,所以使用 Java 意味著我們可以快速地改進軟件功能,因為 Java 生態系統比 C 語言生態系統的發布速度更快。上午討論功能改進,下午就可以實現、測試并發布到生產環境。

與那些需要幾周甚至幾個月才能發布更新的大公司相比,這是一個關鍵的優勢。在高頻交易領域,一個漏洞可以在幾秒鐘內抹掉一整年的利潤,所以我們不打算在質量上做任何妥協。我們搭建了一個嚴格的敏捷開發環境,包括 Jenkins、Maven、單元測試、夜晚構建和 Jira,使用了很多開源庫和項目。

使用 Java,開發人員可以專注于直觀的面向對象業務邏輯,而不是浪費時間去調試一些晦澀的內存核心轉儲或管理 C++ 指針。而且,由于 Java 強大的內存管理能力,即使是初級程序員也可以在第一天加入項目時為系統帶來價值,而且風險很小。

有了良好的設計模式和干凈的編碼習慣,Java 的速度可與 C++ 相媲美。

例如,Java 會優化和編譯在應用程序運行期間觀察到的最佳路徑,但 C++ 會預先編譯所有東西,因此即使未被使用的方法也會成為可執行二進制文件的一部分。

但是,Java 有一個問題,它讓 Java 成為一門強大且令人喜愛的編程語言,但也成了 Java 的缺點之一 (至少對于微秒級應用程序來說)——Java 虛擬機 (JVM):

  • Java 在運行過程中編譯代碼 (JIT),這意味著當它第一次運行某些代碼時,會有編譯延遲。
  • Java 管理內存的方式是在“堆”空間中分配內存塊。每隔一段時間,它就會清理空間,移除舊對象,為新對象騰出空間。主要的問題是,為了進行準確的計數,應用程序線程需要暫時“凍結”。這個過程稱為垃圾回收 (GC)。

GC 是低延遲應用程序開發人員可能會放棄 Java 的主要原因。

市場上有一些可用的 Java 虛擬機。

最常見的是 Oracle Hotspot JVM,它在 Java 社區中被廣泛使用,主要是一些歷史原因。

對于非常苛刻的應用程序,有一個很棒的替代方案,也就是 Azul Systems 的 Zing。

Zing 是標準 Oracle Hotspot JVM 的一個強大的替代品。Zing 解決了 GC 停頓和 JIT 編譯問題。

接下來,讓我們來研究一下 Java 的一些固有問題和可能的解決方案。

1. 了解 Java 的 JIT 編譯器

像 C++ 這樣的編程語言被稱為編譯型語言,因為發布的代碼完全是二進制的,可以直接在 CPU 上執行。

PHP 或 Perl 被稱為解釋型語言,因為解釋器 (安裝在目標機器上) 會在運行時編譯每一行代碼。

Java 介于兩者之間,它將代碼編譯成 Java 字節碼,并在必要時再將其編譯成二進制的。

Java 不在啟動時編譯代碼的原因與后續的性能優化有關。通過觀察應用程序運行并分析實時方法調用和類初始化情況,Java 對經常被調用的代碼部分進行編譯。它甚至可能會根據經驗做出一些假設 (某些代碼永遠不會被調用,或者某個對象始終是一個字符串)。

編譯過的代碼執行速度非常快,但有三個缺點:

  • 一個方法需要被調用一定次數才能達到編譯閾值,然后才能被編譯和優化 (這個閾值是可配置的,通常在 10000 次左右)。在此之前,未優化的代碼不會“全速”運行。在更快的編譯和高質量的編譯之間存在折衷 (如果假設是錯誤的,就會發生編譯成本)。
  • 當 Java 應用程序重新啟動時,我們又回到了起點,必須等待再次達到閾值。
  • 有些應用程序有一些不常被調用但很關鍵的方法,這些方法只會被調用幾次,但在被調用時需要非常快。

Zing 通過讓它的 JVM“保存”已編譯的方法和類的狀態(也就是所謂的 profile)來解決這些問題。這個獨特的功能叫做 ReadyNow,也就是說 Java 應用程序可以始終以最佳速度運行,即使是在重啟之后。

當你使用已有的 profile 重新啟動應用程序,Azul JVM 會立即收回以前的決策并直接編譯重要的方法,以解決 Java 的預熱問題。

此外,你也可以在開發環境中構建一個 profile 來模擬生產行為。優化后的 profile 能部署到生產環境中,并知道所有關鍵路徑都已經過編譯和優化。

下圖顯示了交易應用程序 (在模擬環境中) 的最大延遲。

Hotspot JVM 的延時峰值是顯而易見的,而 Zing 的延時保持得相當穩定。

百分比分布表明,在 1% 的時間內,Hotspot JVM 發生的延遲是 Zing JVM 的 16 倍。

2. 解決垃圾回收停頓問題

第二個問題是在垃圾回收期間,整個應用程序可能會停頓幾毫秒到幾秒鐘 (延遲會隨著代碼復雜性和堆大小的增加而增加),更糟糕的是,你無法控制這種情況何時發生。

雖然對很多 Java 應用程序來說,暫停應用程序幾毫秒甚至幾秒是可以接受的,但對于低延遲應用程序來說,這是一場災難,無論是在汽車、航空航天、醫療還是金融領域。

GC 影響對于 Java 開發人員來說是一個很大話題,Full GC 通常也叫作“停止世界的停頓(stop-the-world)”,因為它會凍結整個應用程序。

多年來,有很多 GC 算法都試圖降低吞吐量 (有多少 CPU 時間用于應用程序邏輯執行而不是垃圾回收) 和 GC 停頓 (我可以暫停應用程序多長時間)。

從 Java 9 發布以來,G1 一直是默認的垃圾回收器,其主要思想是根據用戶提供的時間目標對 GC 停頓進行劃分。它通常提供較短的停頓時間,但以降低吞吐量為代價。此外,停頓時間隨著堆的大小而增加。

Java 提供了大量的設置參數,從堆大小到回收算法以及分配給 GC 的線程數。因此,Java 應用程序通常會配置大量的參數:

很多開發人員通過各種技術來避免 GC。最主要的是,如果我們少創建一些對象,那么后續要清除的對象就越少。

一種古老的 (仍然在使用) 技術是使用對象池。例如,數據庫連接池可以保存 10 個已經打開的數據庫連接,以便在需要時使用。

多線程通常需要鎖,這會導致同步延遲和停頓 (特別是當它們共享資源時)。一種流行的方式是使用環形緩沖隊列系統,多個線程可以在一個無鎖的環境中(請參考 disruptor)進行讀寫操作。

https://lmax-exchange.github.io/disruptor/

一些專家甚至處于無奈而選擇完全覆蓋 Java 的內存管理機制,由自己來管理內存分配,這雖然解決了問題,但也帶來了更多的復雜性和風險。

因此,我們需要考慮使用其他 JVM,于是我們決定嘗試 Azul Zing JVM。

很快,我們就能夠在幾乎無停頓的情況下實現很高的吞吐量。

這是因為 Zing 使用了一個叫作 C4(Continuously Concurrent Compacting Collector,連續并發壓縮回收器) 的垃圾回收器,它可以進行無停頓的垃圾回收,而不管 Java 堆有多大 (可以達到 8TB)。

這是通過在應用程序運行時并發映射和壓縮內存來實現的。

此外,它不需要修改代碼,而且延遲和速度方面的改進都是開箱即用的,不需要進行繁雜的配置。

Java 程序員可以享受到兩方面的好處:Java 的簡單性 (不需要擔心創建太多的新對象) 和 Zing 的底層性能,允許系統中出現高度可預測的延遲。

GCeasy 提供了通用 GC 日志分析器,我們可以在真實的自動交易應用程序 (在模擬環境中) 中快速地對 JVM 進行比較。

https://gceasy.io/

在我們的應用程序中,使用 Zing 的 GC 大約比使用標準 Oracle Hotspot JVM 的 GC 快 180 倍。

更令人印象深刻的是,GC 停頓通常對應于實際的應用程序停頓時間,而 Zing 的 GC 通常是并行發生的,實際的停頓很少,甚至沒有停頓。

總之,在享受 Java 的簡單和特性的同時,仍然有可能實現高性能和低延遲。C++ 一般用于開發特定的底層組件,如驅動程序、數據庫、編譯器和操作系統,但大多數現實生活中的應用程序可以使用 Java 開發,甚至是要求很高的應用程序。

這就是為什么 Java 是排名第一的編程語言(根據 Oracle 的說法),并擁有數百萬開發者,在全世界有超過 510 億個 Java 虛擬機。

 

 

責任編輯:張燕妮 來源: 架構頭條
相關推薦

2024-12-06 11:58:16

2020-06-10 09:06:48

MongoDB架構高可用

2025-03-12 01:00:00

2016-09-27 21:25:08

Go語言Ken Thompso

2025-04-02 00:00:03

2010-03-10 10:05:26

Java

2020-02-05 17:43:14

數據庫PostgreSQL Oracle

2020-06-19 09:38:14

交易量MySQL架構

2018-09-28 10:06:21

移動開發App

2012-11-14 20:55:07

容錯服務器選型CIO

2021-04-13 15:51:46

服務治理流量

2016-12-27 15:13:12

系統

2020-06-12 12:49:52

數據

2025-09-26 02:55:00

Redis系統緩存架構

2017-02-20 20:04:05

系統超輕量日志實現

2020-06-22 07:18:21

Java語言開發

2010-10-28 09:15:40

Linux交易系統

2023-12-27 08:30:46

Java語言ArkTS

2020-06-19 14:55:11

Kubernetes容器技術

2012-11-30 13:06:34

網絡部署負載均衡應用交付
點贊
收藏

51CTO技術棧公眾號

亚洲天堂色网站| 国产亚洲视频系列| 欧美国产日韩一区二区| www.超碰97| 国产精品天堂蜜av在线播放| 亚洲精品久久7777| 免费精品视频一区二区三区| 国产又黄又粗又硬| 99在线观看免费视频精品观看| 国产亚洲精品va在线观看| 欧美污在线观看| 性欧美18~19sex高清播放| 国产精品麻豆网站| 国产视频不卡| 一级特黄aaa大片在线观看| 亚洲婷婷在线| 深夜福利一区二区| 在线天堂www在线国语对白| 97成人超碰| 精品久久久视频| 黑人巨大国产9丨视频| 你懂的免费在线观看| 韩国女主播成人在线观看| 欧美又大又硬又粗bbbbb| 伊人久久久久久久久久久久久久| 爽爽窝窝午夜精品一区二区| 日韩视频一区二区三区在线播放| 性欧美极品xxxx欧美一区二区| 国产丝袜在线播放| 亚洲人一二三区| 五月天婷亚洲天综合网鲁鲁鲁| 蜜臀久久久久久999| 国产麻豆一精品一av一免费| 国产精品福利无圣光在线一区| 日韩 欧美 综合| 欧美黄色aaaa| 精品激情国产视频| 超薄肉色丝袜一二三| 欧美三级午夜理伦三级在线观看| 日韩一区二区免费在线观看| 老司机久久精品| 欧美日韩在线精品一区二区三区激情综合| 亚洲成人免费在线观看| 少妇一晚三次一区二区三区| 超碰在线免费公开| 1000精品久久久久久久久| 日韩尤物视频| 国产精品秘入口| www国产亚洲精品久久麻豆| 国产精品国产精品| 不卡的日韩av| 国产一区二区视频在线播放| 国产精品网站大全| 欧美一级黄视频| 免费成人av在线播放| 国产精品91久久| 免费在线不卡av| 首页国产欧美久久| 国产精品激情自拍| 免费一级a毛片| 日韩精品亚洲专区| 国产精品成人一区二区| 激情网站在线观看| 免费av成人在线| 国产精品最新在线观看| 在线免费看av片| 狠狠狠色丁香婷婷综合激情| 91久久久一线二线三线品牌| 亚洲精选一区二区三区| 成人免费va视频| 激情一区二区三区| 黄色小视频在线观看| 中文字幕 久热精品 视频在线 | 欧美天堂在线视频| 成人黄色小视频在线观看| 精品伦精品一区二区三区视频| 青青草观看免费视频在线| 国产午夜精品福利| 熟妇熟女乱妇乱女网站| 青草影视电视剧免费播放在线观看| 一区二区视频在线看| 国产曰肥老太婆无遮挡| 厕沟全景美女厕沟精品| 欧美三级在线看| 国产探花一区二区三区| 国产精品白丝av嫩草影院| 亚洲免费av网址| 欧美自拍偷拍网| 欧美天堂亚洲电影院在线观看| 午夜美女久久久久爽久久| 丁香社区五月天| 国产麻豆午夜三级精品| 久久99欧美| 一区二区三区视频网站| 亚洲一二三区视频在线观看| 91看片就是不一样| 秋霞影院一区| 亚洲男人天堂视频| 青青草国产在线观看| 免费亚洲视频| 亚洲一区久久久| 视频二区在线| 亚洲男人的天堂在线观看| 无码人妻精品一区二区三区在线 | 在线看国产一区| 免费高清视频在线观看| 九一亚洲精品| 欧美日韩ab片| 中文字幕av影视| 成人黄色小视频在线观看| 一区二区三区精品国产| 美女网站在线看| 91麻豆精品国产91久久久 | 日韩一区二区三区不卡| 中文字幕精品三区| 香港三级韩国三级日本三级| 亚洲tv在线| 亚洲美女av电影| 亚洲一区 视频| 国产一区二区三区在线观看免费| 欧美在线视频二区| 鲁鲁在线中文| 精品日韩成人av| 在线观看亚洲网站| 日韩激情在线观看| 久久精品人人做人人爽电影| 手机av在线播放| 欧美日韩夫妻久久| 国精产品一区二区三区| 国产精品日本| 精品毛片久久久久久| 欧美1—12sexvideos| 欧美一级黄色片| 日本一二三区在线观看| 日韩中文字幕1| 鲁丝一区二区三区免费| 91在线三级| 精品久久人人做人人爽| 欧美日韩在线视频免费| 极品美女销魂一区二区三区| 亚洲 国产 日韩 综合一区| 最新日韩三级| 国产午夜精品一区二区三区| 国产伦精品一区二区三区视频网站| 成人精品一区二区三区四区| 人妻无码一区二区三区四区| 秋霞影院一区| 久久久久久午夜| 日本免费一区视频| 欧美视频国产精品| 欧美图片第一页| 美女精品在线| 五月天亚洲综合| 视频91a欧美| 久久九九有精品国产23| 国产剧情久久久| 一区二区高清免费观看影视大全| 日本55丰满熟妇厨房伦| 综合视频在线| 国产在线观看一区| 在线免费三级电影网站| 亚洲免费精彩视频| 中文字幕在线观看欧美| 中文字幕日本不卡| 亚欧美一区二区三区| 国产真实久久| 久99久在线| 成人免费毛片嘿嘿连载视频…| 中文字幕久精品免费视频| 91成品人影院| 亚洲观看高清完整版在线观看| 久久人妻一区二区| 日韩精品欧美成人高清一区二区| 亚洲国产一区二区精品视频| www.久久爱.com| 欧美黑人性猛交| 深夜福利在线视频| 色综合亚洲欧洲| 登山的目的在线| 成人综合在线观看| 免费裸体美女网站| 99久久综合| 国产三区二区一区久久| 黄色精品视频| 欧美极度另类性三渗透| 韩日视频在线| 日韩欧美美女一区二区三区| 女人十八岁毛片| 国产精品国产三级国产普通话99| 中文在线字幕观看| 丝袜美腿高跟呻吟高潮一区| 二级片在线观看| 久久香蕉精品香蕉| 国产欧美一区二区| 51漫画成人app入口| 一本一本久久a久久精品综合小说| 国产人妖一区二区| 色呦呦国产精品| 国产精品99久久久久久成人| 97久久人人超碰| 在线观看免费视频污| 国产精品美女久久久| 2021狠狠干| 激情五月色综合国产精品| 99精品在线直播| 韩日一区二区| 性色av一区二区咪爱| 乱人伦中文视频在线| 亚洲精品mp4| av在线资源观看| 欧美在线观看一区| 国产 欧美 日韩 在线| 亚洲私人影院在线观看| a天堂中文字幕| 99视频在线观看一区三区| 欧美性受xxxx黒人xyx性爽| 日韩电影在线免费| 日本中文字幕网址| 欧美福利专区| 中文字幕人成一区| 成人3d精品动漫精品一二三| 久久精品国产精品国产精品污 | 日本精品影院| 97久久精品午夜一区二区| 成人国产在线| 国产福利视频一区二区| 免费成人在线电影| 久久久在线视频| 伊人222成人综合网| 久久久精品亚洲| 三区四区在线视频| 国产一区二区三区在线视频 | 国产精品第四页| 波多野结衣一二三四区| 久久久久国产精品免费免费搜索| 加勒比精品视频| 成人av电影在线播放| 日本精品一二三区| 国产成人精品免费在线| 无码人妻少妇色欲av一区二区| 久久丁香综合五月国产三级网站| 免费黄色一级网站| 日韩 欧美一区二区三区| 少妇性l交大片| 久久久青草婷婷精品综合日韩| 国产成人精品视频免费看| 国产精品嫩草99av在线| 亚洲乱码中文字幕久久孕妇黑人| 亚洲制服av| 国产精品第12页| 奇米影视一区二区三区| 天天干天天操天天玩| 紧缚奴在线一区二区三区| 亚洲久久中文字幕| 激情综合色播五月| 岛国大片在线免费观看| 成人污污视频在线观看| 久久久久久久久免费看无码 | 国产高潮流白浆| 亚洲精品老司机| 尤物视频在线观看国产| 一本久道久久综合中文字幕 | 蜜臀a∨国产成人精品| 日本人69视频| 国产99久久久国产精品潘金网站| 韩国av中国字幕| 99精品欧美一区二区蜜桃免费| 亚洲蜜桃精久久久久久久久久久久| 久久亚洲二区三区| 欧美黄色一级生活片| 中文字幕一区二区三区四区| 日韩女优一区二区| 精品久久久视频| 在线免费观看一区二区| 欧美成人性战久久| 秋霞av在线| 精品国产欧美一区二区三区成人| 欧美卡一卡二| 国产va免费精品高清在线| 国产精品久久久久久久久久久久久久久 | 青青a在线精品免费观看| 91精品国产66| 99一区二区三区| 你懂的视频欧美| 免费国产成人看片在线| 日韩一级免费| 日本美女视频一区| av网站免费线看精品| 又色又爽的视频| 亚洲大片在线观看| 国产裸体美女永久免费无遮挡| 日韩欧美国产一区二区在线播放 | www国产精品com| av小说在线播放| 国产欧美精品一区二区三区介绍| 国产成人一二片| 在线国产精品网| 男女精品网站| 人妻精品久久久久中文字幕69| 久久午夜电影网| 青青草成人免费| 欧美日韩一级片在线观看| 少妇无码一区二区三区| 久久久999精品视频| 成人欧美大片| 波多野结衣久草一区| 青青草97国产精品麻豆| 国产一级爱c视频| 国产一区二区在线看| 国产三级短视频| 精品国产精品自拍| 成 人片 黄 色 大 片| 中文字幕av一区| 亚洲天堂av在线| 国产精品美女久久久久av福利| 欧美h版在线| 蜜臀视频一区二区三区| av电影一区二区| 国产精品111| 欧美成人性福生活免费看| 女女色综合影院| 国产精品人人做人人爽| 天天做夜夜做人人爱精品| 男人天堂av片| 国产美女精品人人做人人爽 | 香蕉视频官网在线观看日本一区二区| 北条麻妃在线观看| www.亚洲免费av| 伊人国产在线观看| 欧美岛国在线观看| av在线下载| 92国产精品视频| 香蕉视频国产精品 | av在线一区二区| 免费日韩在线视频| 日韩欧美在线1卡| 97超碰在线公开在线看免费| 成人精品在线观看| 99热在线成人| 中文字幕第17页| 国产精品久久久久久久久免费樱桃| 中文字幕永久在线| 国产一区二区三区直播精品电影| 美女100%一区| 欧美在线一二三区| 免费观看在线色综合| 亚洲一级黄色录像| 欧美日韩激情一区| 日本精品一区二区三区在线播放| 国产精品自产拍在线观看| 久久精品99久久无色码中文字幕| 制服丝袜综合网| 亚洲色图欧美激情| 99在线小视频| 欧美极品少妇xxxxⅹ喷水 | 亚洲一卡二卡三卡四卡无卡网站在线看| 久久亚洲欧美| 日本午夜精品视频| 欧美一区二区性放荡片| 手机在线免费观看av| 国产免费一区二区三区| 香蕉精品999视频一区二区| 国产传媒国产传媒| 7777精品伊人久久久大香线蕉超级流畅| 免费黄色电影在线观看| av一区二区三区在线观看| 精品福利电影| 亚洲一区视频在线播放| 在线播放国产精品二区一二区四区| 伊人222成人综合网| 久久久久综合一区二区三区| 三级欧美在线一区| 99热在线观看精品| 亚洲福利视频在线| 日韩欧美一区二区三区在线观看 | 国产婷婷色综合av蜜臀av| 久久91导航| 黄黄视频在线观看| 久久综合九色综合97婷婷| 国产精品久久久久久久9999| 久久久久久久久艹| 337p日本欧洲亚洲大胆色噜噜| 岛国在线视频网站| 日本在线播放不卡| 国精产品一区一区三区mba桃花| 欧美日韩一区在线播放 | 久久精品国产成人| 网站一区二区| 麻豆av免费在线| 亚洲你懂的在线视频| 免费黄网站在线观看| 91久久久亚洲精品| 一区二区三区四区五区精品视频 | 日本在线观看免费| 国产精品视频免费一区| 日本不卡一二三区黄网| 久久久久久久久久久网| 尤物yw午夜国产精品视频| 在线精品国产亚洲| 91小视频网站|