Giới thiệu về thế giới Sequencer

Dec 07 2022
Xin chào các chuyên gia công nghệ. Tên tôi là Aiden và tôi đã dành 4 năm qua làm việc với tư cách là nhà tuyển dụng Java trong thị trường Văn phòng Tiền sảnh, chủ yếu bao gồm Hồng Kông và Sydney.

Xin chào các chuyên gia công nghệ. Tên tôi là Aiden và tôi đã dành 4 năm qua làm việc với tư cách là nhà tuyển dụng Java trong thị trường Văn phòng Tiền sảnh, chủ yếu bao gồm Hồng Kông và Sydney. Trong những năm này, tôi đã tìm thấy niềm đam mê đối với một thị trường trong Java, đó là Java có độ trễ thấp và cụ thể hơn là kiến ​​trúc trình tự sắp xếp.

Từ những năm còn trẻ, tôi đã là nhà vô địch cự ly 100 mét của Warwickshire, nơi tôi luôn thích tốc độ cao, vì vậy khi tôi bắt đầu tìm hiểu về cách thức hoạt động của các hệ thống giao dịch, độ trễ thấp là một điều - thật trớ trêu hoặc có thể là một cách tự nhiên - đã thu hút sự chú ý của tôi.

Thông qua kết nối mạng với các kỹ sư và trưởng bộ phận giao dịch, tôi đã phát triển kiến ​​thức này với độ trễ thấp và cụ thể hơn là cách trình sắp xếp thứ tự hoạt động. Điều này đã cho phép tôi kết nối với các nhà phát triển Java nhanh nhất trên thế giới và tham gia với các ngân hàng Đầu tư.

Tôi đã thấy các công ty đang triển khai trình sắp xếp thứ tự nhận được ít hơn 10 micro giây trên công cụ của họ với hơn 2 triệu giao dịch mỗi giây.

Blog này sẽ đi sâu vào lý do tại sao chúng ta nên sử dụng Java thay vì C++ để có độ trễ thấp, trình tự sắp xếp ra đời như thế nào và ai là người chủ chốt trong việc phát triển trình sắp xếp theo trình tự. Tất nhiên, nó không thể kết thúc với quan điểm cá nhân của tôi về điều đó và thông tin tôi thu thập được trong những năm làm việc của mình.

Blog này lý tưởng dành cho các chuyên gia CNTT và giám đốc điều hành đang làm việc trên các hệ thống giao dịch thông lượng cao và những người đam mê đang bắt đầu hoặc muốn triển khai điều này vào hệ thống giao dịch của họ.

Hãy bắt đầu!

Bước đầu tiên trước khi nói đến trình sắp xếp thứ tự là rõ ràng: tại sao bạn lại sử dụng Java cho độ trễ thấp?

Đây thường là vấn đề đau đầu đầu tiên đối với bất kỳ kiến ​​trúc sư hoặc trưởng bộ phận giao dịch nào. Khi lần đầu tiên quyết định nên sử dụng ngôn ngữ và khuôn khổ nào, hầu hết các kiến ​​trúc sư sẽ cần xem xét một số điều trong khi xem xét hiệu suất. Trong số đó, đó sẽ là độ trễ (thời gian tiếp thị trên một giao dịch), thông lượng (số lượng đơn đặt hàng mà hệ thống có thể xử lý) mà không phải hy sinh cái này hay cái khác và nhân lực để xây dựng nó. Sự lựa chọn rõ ràng đối với nhiều người - khi xem xét độ trễ và thông lượng - sẽ là viết mã bằng C++, vì mã gần với phần cứng hơn và do đó hiệu năng tốt hơn so với Java.

Java thường chạy trên phần cứng bằng cách sử dụng Máy ảo Java (JVM), điều này thường có thể gây ra nhiều vấn đề về bộ nhớ, dẫn đến hiệu suất bị chậm lại.

Để chống lại điều này, bậc thầy về Java Martin Thompson, kỹ sư đã chế tạo LMAX Disruptor, đã tin tưởng vào Jackie Steward (người lái xe đua), người đã đặt ra thuật ngữ “ Sự đồng cảm cơ học” .

Bạn không cần phải là một kỹ sư để trở thành một tay đua, nhưng bạn phải có sự đồng cảm với máy móc ”.

Đây là lúc một kỹ sư cần áp dụng sự hiểu biết về phần cứng để tạo ra phần mềm. Bằng cách hiểu cơ chế của máy, một kỹ sư có thể đạt được hiệu suất tốt nhất của hệ thống.

Bằng cách viết mã Java với cấu trúc dữ liệu, kỹ thuật bộ nhớ, quyết định Mạng và thiết kế kiến ​​trúc phù hợp, các nhóm có thể tiến gần hoặc bằng mức hiệu suất của C++. Việc chọn Giao thức gói dữ liệu người dùng (UDP) và Đa tuyến cho phép trình sắp xếp thứ tự phát dữ liệu tới nhiều người nhận theo cách hiệu quả nhất có thể. Sau đó, điều này cho phép mạng tăng tốc độ trễ trên hệ thống đơn luồng, làm cho kiến ​​trúc trở nên gọn gàng và cho phép tất cả các nút trên hệ thống nhận chính xác cùng một nhóm thông báo.

Một lý do khác khiến Java được sử dụng phổ biến hơn trong các ngân hàng là do có nhiều nhân lực hơn và do đó, nhóm sẽ dễ dàng thuê kỹ sư hơn.

C ++ vẫn là một phần rất chuyên biệt của thị trường và điều này thường khiến bất kỳ nhà quản lý tuyển dụng nào phải đau đầu trong việc tìm kiếm nhân tài phù hợp, giữ chân họ và thậm chí không trả quá cao để có được họ.

Vì hầu hết các ngân hàng đều sử dụng Java nên việc tuyển dụng bằng ngôn ngữ này hoàn toàn có ý nghĩa khi xem xét tất cả các yếu tố cần thiết để xây dựng một nền tảng giao dịch có độ trễ thấp thành công.

Cách lý tưởng nhất là viết mã bằng Java và dạy các nhà phát triển có sự đồng cảm cơ học và học các kỹ thuật đã đề cập trước đó sẽ cho phép đạt được hiệu suất tối ưu khi xây dựng hệ thống.

Điều này khiến tôi muốn viết về thiết kế kiến ​​trúc được sử dụng cho hệ thống giao dịch điện tử đầu tiên từng được xây dựng mà không cần đầu vào của con người và một kiến ​​trúc mà tôi đam mê: kiến ​​trúc Island ECN Sequencer.

Sequencer là một bus nhắn tin phần mềm trung gian đa tuyến UDP theo luồng đơn về cơ bản truyền đa hướng tất cả các tin nhắn thành một chuỗi số. Kiến trúc hoàn toàn mang tính quyết định, nghĩa là mọi nút đều nhìn thấy tất cả các thông báo theo cùng một thứ tự và tất cả các sự kiện có thể được phát lại trên một luồng duy nhất tạo ra cùng một trạng thái thông qua các máy trạng thái hữu hạn. Nó được coi là một thiết kế đơn giản nhưng ngày nay vẫn là kiến ​​trúc nhanh nhất mà các công ty hướng tới ngay cả khi nó đã hơn 20 năm tuổi.

Phần tiếp theo sẽ đi sâu vào chi tiết về nguồn gốc của nó và cách trình sắp xếp thứ tự đã đi từ Phố Broad đến khắp nơi trên thế giới với các sàn giao dịch tiền điện tử, ngân hàng đầu tư, nhà tạo lập thị trường hàng đầu (lớn nhất, nhanh nhất và có lợi nhất) và bên mua các công ty cho toàn bộ hệ thống toàn cầu của họ.

(Brian Nigito tại Phố Jane)

Ảnh hưởng của Levine's Sequencer & Island ECN

Hãy quay trở lại đầu những năm 90 ở Phố Wall, nơi cựu sinh viên bỏ học đại học Josh Levine làm việc tại Datek Securities (Bây giờ được gọi là TD Ameritrade).

Các nhà giao dịch của Datek trở nên thành công và nổi tiếng nhờ thực tiễn của họ - do Levine tạo ra - bỏ qua các nhà tạo lập thị trường, những người vẫn cập nhật báo giá của họ bằng tay tại NASDAQ. Tất nhiên, điều này mang lại lợi ích cho Datek và các nhà giao dịch của nó, cho đến khi NASDAQ phát hiện ra và phạt công ty.

Patterson trong Darkpools đề cập:

“Các nhà tạo lập thị trường của Nasdaq, làn sóng quy định mới và những trở ngại mà NASD liên tục đưa ra, là nguyên nhân thường xuyên khiến Datek lo lắng và phẫn nộ. Các nhà tạo lập thị trường thường xuyên phớt lờ các lệnh SelectNet của Datek, rút ​​lui khỏi các báo giá đã đăng của họ, thường dẫn đến việc bỏ lỡ các cơ hội hoặc tệ hơn là thua lỗ đáng kể khi các nhà giao dịch, đang cố gắng thoát khỏi các vị thế trong một thị trường biến động nhanh, đã bị bỏ mặc trong gió.”

Levine đã nhìn thấy một cơ hội và quyết định chính thức thành lập cửa hàng của riêng mình vào năm 1996, Island ECN. Island đã được đăng ký trên tầng 6 của 50 Phố Broad (New York) và đây là nơi khung trình tự chính thức bắt đầu.

Giờ đây, về cơ bản, Levine có thể bỏ qua các nhà tạo lập thị trường NASDAQ bằng cách xây dựng xe buýt nhắn tin trình tự khớp với tất cả các lệnh mua và bán, sau đó thực hiện giao dịch mà không cần bất kỳ đầu vào nào của con người. Levine đã xây dựng công cụ trên FoxPro và chạy trên DOHS (Bạn có thể tìm thấy mã FoxPro của anh ấy tại đây. ).

Bằng cách xây dựng một hệ thống có thể làm được điều này, Levine đã trở thành nhân vật quan trọng nhất của thị trường hiện đại.

Là một người không muốn nổi tiếng và cố gắng giữ kín bản thân trước sự chú ý, Levine tự nhốt mình trong văn phòng và dành thời gian của mình để tạo ra một hệ thống nhanh, đơn giản và có thể mở rộng. Về cơ bản, thứ gì đó có thể xử lý bất cứ thứ gì mà bất cứ ai ném vào nó. Vào cuối những năm 1990, Island ECN đã chiếm 10% tổng số cổ phiếu được giao dịch trên NASDAQ và họ đã thực hiện 257.140 giao dịch hàng ngày (So với 28.446 vào năm 1997). Đây là một vấn đề lớn đối với NASDAQ khi họ nhận thấy khối lượng giao dịch khổng lồ từ đối thủ cạnh tranh mới này, những người đang báo cáo lại các giao dịch cho NASDAQ. Tuy nhiên, điều này đã gây ra sự cạn kiệt thanh khoản của NASDAQ vì họ không được hưởng lợi từ các giao dịch này.

Trong những năm này, Island đã xây dựng một đội ngũ kỹ sư tuyệt vời xung quanh Levine, bao gồm William Stirling, Mike Blum , Jonathan Ross và được cho là kỹ sư quan trọng nhất là Brian Nigito . (Giao dịch EX). Levine coi anh ấy như người bảo trợ của mình và sẽ nói rằng Nigito là một lập trình viên giỏi hơn anh ấy.

Vào đầu những năm 2000, Island không thể đáp ứng kịp nhu cầu, dẫn đến việc Instinet mua lại Island vào năm 2002 với giá 508 triệu USD . Điều này dẫn đến việc Levine rời đi vì anh ấy không muốn gia nhập một công ty đối thủ mà anh ấy luôn coi thường.

Cuối cùng, vào năm 2003, nhóm của Island đã tách ra và Nigito rời đi để lãnh đạo nhóm 36 người tại Instinet (Inet) - hợp tác chặt chẽ với Constantine Sokoloff, Nigito đã tái cấu trúc Công cụ FoxPro của Levine thành Java . Vào thời điểm đó, Jonathan Ross là CTO của INET và điều quan trọng cần nhắc đến là anh ấy là người chủ chốt trong việc thúc đẩy trình sắp xếp thứ tự tại NASDAQ và CHI-X cùng với Nigito. Cho đến ngày nay, INET ECN của Nasdaq vẫn sử dụng kiến ​​trúc trình tự xử lý hàng tỷ tin nhắn mỗi ngày.

Mặt khác, Stirling và Blum đã rời đi và gia nhập UBS, năm 2004 ngân hàng này đã trở thành Ngân hàng Đầu tư đầu tiên thực hiện kiến ​​trúc Đảo.

Họ đã xây dựng nền tảng toàn cầu của UBS cho các hệ thống Chứng khoán ở Stanford, nhân tiện, hệ thống này vẫn được sử dụng cho đến ngày nay (và đó là một phần của công nghệ độ trễ thấp cốt lõi của họ).

Sau một vài năm, vào năm 2009, cả hai đều rời đi để phát triển kiến ​​trúc trình tự nối tiếp ở nơi khác và lần lượt trở thành CTO của Teza và Getco (KCG), tại đây Blum đã tái hợp với đồng nghiệp cũ ở Island của mình là Nigito.

Ảnh hưởng của Blums không dừng lại ở đó, khi vào năm 2017, anh ấy trở thành đối tác của Goldman Sachs, nơi anh ấy tái hợp với người đồng nghiệp Islander Steve Lui để lãnh đạo dự án trình tự sắp xếp Atlas trong nhóm Giao dịch điện tử. Goldman đã đầu tư hàng triệu đô la Mỹ để cải thiện hoạt động kinh doanh chứng khoán và Blum đã đề cập Một mục tiêu là cải thiện hiệu suất của công ty đối với các lệnh giao dịch kéo dài từ micro giây (một phần triệu giây) đến khoảng 30 giây, các lệnh có thời gian tồn tại ngắn hơn mà ngân hàng có thể đã phải vật lộn với trong quá khứ . Trong một số trường hợp, các giao dịch mất hàng trăm mili giây sẽ diễn ra nhanh hơn 100 micro giây”.

Với việc Goldman Sachs trở thành Ngân hàng đầu tư thứ 2 triển khai kiến ​​trúc của Island trên toàn cầu, các công ty tiền điện tử và các ngân hàng đầu tư khác hiện đã bắt đầu làm theo, đặc biệt là ở APAC. Với khu vực tiền điện tử hiện nay và có một số lượng lớn các nhà phát triển, tôi đã thấy một lượng lớn những người không phải dân đảo đang phát triển điều này khiến tôi nghĩ rằng kiến ​​trúc này - vốn đã quá cũ - sẽ tiếp tục lan rộng và được học hỏi trong suốt những năm tới. .

Sequencer vẫn không đi đến

Tuy nhiên, xe buýt nhắn tin trình tự vẫn còn thích hợp trong thế giới fintech vì nhiều nền tảng giao dịch không sử dụng nó. Lý do chính là rất khó để hoàn thành kiến ​​trúc đúng cách vì bạn cần một nhóm các chuyên gia trình tự để xây dựng nó. Những thứ này rất khó tìm và có nghĩa là bạn đang tham gia vào một thị trường ngách, điều này sẽ tốn kém và mất nhiều thời gian nếu được xây dựng trong nhà. Phải mất một thời gian dài để hoàn thiện một hệ thống phức tạp như vậy, với đầy đủ các bộ phận chuyển động và hộp góc.

Thứ hai, nhiều nhà quản lý muốn giải quyết thông lượng hơn là độ trễ và cảm thấy rằng một hệ thống giao dịch đa luồng sẽ phù hợp hơn để xử lý các sản phẩm có mức độ tiếp xúc cao hơn và do đó sẽ không muốn đi theo lộ trình trình tự chuỗi đơn luồng. Công cụ phá vỡ LMAX của Thompson là một lựa chọn phổ biến cho các hệ thống giao dịch đa luồng, nhưng điều này có thể mang lại những cạm bẫy đa luồng rất phổ biến đối với các nhà phát triển và loại bỏ tính quyết định. Cách tiếp cận đơn luồng cung cấp mã mạnh mẽ hơn và không có lỗi.

Hơn nữa, thậm chí để thực hiện khoản đầu tư này có nghĩa là phải bắt đầu lại từ đầu, điều mà một ngân hàng sẽ miễn cưỡng thực hiện vì nó sẽ tiêu tốn của họ hàng triệu USD. Đối với một công ty chiếm phần lớn thị phần, bạn có thể tưởng tượng tại sao họ lại miễn cưỡng thay đổi nó. Nếu nó không bị hỏng tại sao phải sửa nó?

Để giảm nhẹ rủi ro đối với các khoản đầu tư theo thời gian đưa ra thị trường, rất nhiều ngân hàng và công ty tiền điện tử đang sử dụng các nhà cung cấp có độ trễ thấp được cấp phép để có thể vận hành mạng và động cơ của họ trong vòng vài tháng. Có những cái cũ ngân hàng đang dùng như: Tibco, Solace tuy tốc độ chậm nhưng được ngân hàng ưa chuộng. Đây là các bus nhắn tin chung và không phải là mạng UDP phát đa hướng đáng tin cậy.

Tương lai

Để kết luận, rõ ràng là sự phát triển của trình sắp xếp theo trình tự trong thế giới giao dịch đã phụ thuộc vào những người ECN của Island và đã chứng kiến ​​một vài đợt tăng trưởng hơn nữa trong 20 năm qua. Nhìn vào thị trường ngày nay, với sự gia tăng của tiền điện tử và ngày càng có nhiều ngân hàng triển khai trình sắp xếp thứ tự kể từ GS, tôi tin rằng nó sẽ tăng gấp đôi trong những năm tới.

Levine đã tạo ra thứ gì đó thật đơn giản và nhanh chóng và chỉ đến bây giờ các công ty thương mại mới bắt đầu đồng hành cùng nó. Nếu bạn thấy khoản đầu tư đã mang lại hiệu quả như thế nào cho những công ty này có thể xử lý hàng triệu đơn đặt hàng mỗi giây trong sub micro java thì bạn cũng sẽ đầu tư vào việc thuê một nhóm lớn hơn các lập trình viên Java đang hoạt động, các công ty có thể có nhân lực để có được bắt đầu có mặt trên thị trường.

Hơn nữa, có một số nhà cung cấp Sequencer mà tôi có thể giới thiệu cho bạn và điều này sau đó sẽ giúp bạn thiết lập và vận hành trong vòng 6 tháng và do đó không cần phải thuê những người cốt lõi cho nó. Hơn nữa, hoạt động đầu tư của các ngân hàng diễn ra theo chu kỳ nhưng nếu bạn hiện đang đứng đầu và quyết định không đầu tư, bạn sẽ chỉ bị tụt hậu so với đối thủ. Tiềm năng là vô tận từ trình sắp xếp thứ tự của Levine, Nó bắt đầu ở số 60 Phố Broad và tôi tin rằng trình sắp xếp thứ tự đó có thể tiến xa hơn là giao dịch và một ngày nào đó chúng ta sẽ thấy nó trong không gian.