Aeron, hệ thống nhắn tin hiệu năng cao được phát triển bởi Real Logic và hiện được vận hành bởi Adaptive Financial Consulting, đã gây ra những cuộc thảo luận sôi nổi trong cộng đồng về những thách thức thực tế khi triển khai hệ thống nhắn tin multicast đáng tin cậy trong môi trường sản xuất. Mặc dù hệ thống hứa hẹn khả năng truyền tải tin nhắn UDP unicast, multicast và IPC hiệu quả với trọng tâm là đạt được thông lượng cao nhất và độ trễ thấp nhất, nhưng những trải nghiệm thực tế lại cho thấy những trở ngại đáng kể trong việc triển khai.
Triển khai Multicast gặp vấn đề trong thực tế
Cộng đồng đã nêu bật nhiều thách thức với độ tin cậy của multicast trên các cơ sở hạ tầng mạng khác nhau. Môi trường doanh nghiệp, hệ thống ảo hóa và nền tảng đám mây đặc biệt gặp khó khăn. Các quản trị viên mạng thường cố ý vô hiệu hóa multicast, và sự không nhất quán của phần cứng tạo ra các mẫu hành vi không thể dự đoán được.
Sau nhiều năm duy trì và sử dụng một bộ ứng dụng dựa trên multicast để giao tiếp nội bộ, tôi sẽ do dự khi sử dụng từ đáng tin cậy và multicast trong cùng một câu.
Những vấn đề này xuất phát từ việc xử lý không đáng tin cậy trên các switch, router, bộ chuyển đổi mạng và ngăn xếp TCP/IP của hệ điều hành. Các vấn đề phổ biến bao gồm multicast socket tham gia sai giao diện mạng, mất thành viên sau chu kỳ ngủ của hệ thống, và thiết bị cấp doanh nghiệp ngắt kết nối multicast một cách bất ngờ.
Các Vấn Đề Triển Khai Multicast Phổ Biến
- Socket multicast kết nối sai giao diện bộ chuyển đổi mạng
- Mất quyền thành viên multicast sau chu kỳ ngủ/ngủ đông của hệ thống
- Switch và router loại bỏ quyền thành viên multicast theo thời gian
- Hành vi không nhất quán trong môi trường ảo hóa ( VM )
- Vấn đề tương thích với hệ thống doanh nghiệp ( SUSE Linux , Windows Server )
- Xung đột tái sử dụng socket và thách thức cấu hình
- Cố ý vô hiệu hóa multicast trong mạng đám mây và doanh nghiệp
Các tuyên bố về hiệu năng bị xem xét kỹ lưỡng dưới phân tích chi tiết
Các thành viên cộng đồng đã đặt câu hỏi về các tuyên bố hiệu năng của Aeron sau khi kiểm tra dữ liệu benchmark từ các triển khai AWS và Google Cloud Platform. Phân tích cho thấy rằng mặc dù Aeron đạt được tốc độ tin nhắn ấn tượng, hiệu năng trên mỗi lõi có thể không đáp ứng kỳ vọng khi so sánh với các triển khai TCP truyền thống.
Trên các instance AWS c5.9xlarge với 36 vCPU, Aeron xử lý khoảng 3 triệu tin nhắn 288-byte mỗi giây, giảm xuống 700.000 tin nhắn mỗi giây đối với các payload lớn hơn 1.344-byte. Điều này tương đương với khoảng 200 Mbps trên mỗi lõi, mà một số người cho rằng không bằng khả năng của TCP có thể đạt 10 Gbps trên mỗi lõi riêng lẻ mà không cần tối ưu hóa mạnh mẽ.
Tuy nhiên, những người bảo vệ lưu ý rằng kiến trúc của Aeron khác biệt cơ bản so với các phương pháp truyền thống. Hệ thống sử dụng threading tối thiểu với thường chỉ một receive thread và một transmit thread, cộng với một administrative thread, thay vì xử lý song song nặng.
Điểm chuẩn hiệu suất Aeron
Nền tảng | Loại instance | Kích thước tin nhắn | Tin nhắn/Giây | Thông lượng |
---|---|---|---|---|
AWS | c5.9xlarge (36 vCPU) | 288 bytes | ~3 triệu | ~7.5 Gbps |
AWS | c5.9xlarge (36 vCPU) | 1,344 bytes | 700,000 | ~1 GB/s |
GCP | C3 (không xác định) | 288 bytes | ~4.7 triệu | ~12 Gbps |
Hiệu suất trên mỗi lõi: ~200 Mbps (ước tính dựa trên phân phối 36 lõi)
Lĩnh vực giao dịch tài chính cho thấy sự áp dụng mạnh mẽ
Bất chấp những thách thức triển khai, Aeron đã tìm thấy thành công đáng kể trong các hệ thống giao dịch tài chính nơi cơ sở hạ tầng multicast đã tồn tại để phân phối dữ liệu thị trường. Việc tích hợp hệ thống với Simple Binary Encoding ( SBE ) cung cấp hiệu năng mã hóa và giải mã tin nhắn đặc biệt, khiến nó trở nên hấp dẫn đối với các ứng dụng nhạy cảm với độ trễ.
Các mạng hỗ trợ multicast hiện có của lĩnh vực tài chính và khả năng chịu đựng độ phức tạp của cơ sở hạ tầng khiến nó trở thành môi trường lý tưởng cho việc triển khai Aeron. Các hệ thống giao dịch được hưởng lợi từ các đặc tính tail latency vượt trội mà Aeron cung cấp so với các lựa chọn thay thế dựa trên TCP.
Thiết kế kiến trúc nhấn mạnh Mechanical Sympathy
Kiến trúc hệ thống của Aeron thể hiện điểm mạnh cốt lõi của nó, triển khai cái mà các nhà phát triển gọi là mechanical sympathy - thiết kế phần mềm hoạt động hiệu quả với phần cứng cơ bản. Hệ thống sử dụng một Aeron Server tập trung xử lý giao tiếp mạng bên ngoài trong khi các client process giao tiếp thông qua các shared memory pipe hiệu năng cao.
Thiết kế này cho phép nhắn tin transport-agnostic nơi client đăng ký các kênh mà không cần phân phối mạng trực tiếp. Server quản lý định tuyến dữ liệu đến các hàng đợi shared memory của client, cho phép hiệu năng tối đa với UDP đáng tin cậy và multicast fan-out cho các luồng dữ liệu chung.
Bản thân codebase đã được công nhận như một nghiên cứu mẫu mực về chất lượng phần mềm, đặc biệt cho phát triển Java, mặc dù các chuyên gia cảnh báo rằng các kỹ thuật không theo thông lệ của nó ưu tiên hiệu năng hơn các quy ước Java thông thường.
Các Thành Phần Kiến Trúc Hệ Thống Aeron
- Media Driver: Xử lý giao tiếp mạng bên ngoài với số lượng luồng tối thiểu (1 luồng RX + 1 luồng TX + 1 luồng quản trị)
- Các Tiến Trình Client: Giao tiếp thông qua các đường ống bộ nhớ chia sẻ hiệu suất cao
- Module Archive: Ghi lại các luồng thông điệp vào bộ nhớ lâu dài để phát lại
- Module Cluster: Cung cấp các dịch vụ chịu lỗi sử dụng thuật toán đồng thuận Raft
- Hỗ Trợ Truyền Tải: Hỗ trợ gửi tin nhắn UDP unicast, UDP multicast và IPC
- Hỗ Trợ Ngôn Ngữ: Có sẵn các client cho Java, C, C++ và .NET
Kết luận
Aeron đại diện cho một phương pháp tinh vi đối với nhắn tin hiệu năng cao mang lại kết quả ấn tượng trong môi trường được kiểm soát, đặc biệt trong lĩnh vực giao dịch tài chính. Tuy nhiên, những thách thức thực tế của việc triển khai multicast và độ phức tạp của việc đạt được hiệu năng tối ưu cho thấy rằng các tổ chức nên đánh giá cẩn thận khả năng cơ sở hạ tầng và yêu cầu của họ trước khi áp dụng. Mặc dù hệ thống xuất sắc trong các trường hợp sử dụng cụ thể, lợi ích của nó đi kèm với chi phí triển khai và bảo trì đáng kể có thể không phù hợp với tất cả các ứng dụng.
Tham khảo: Aeron