3 điểm bởi GN⁺ 2024-01-06 | 1 bình luận | Chia sẻ qua WhatsApp

Khởi nguồn

  • Tháng 4 năm 2023, quyết định học Rust.
  • Dựa trên kinh nghiệm về hệ thống phân tán và messaging, quyết định phát triển một nền tảng message streaming.
  • Mục tiêu là hiểu cách các hệ thống messaging vận hành bên trong và những đánh đổi mà các nhà phát triển phải thực hiện.
  • Iggy.rs ra đời, với mục tiêu trở thành nền tảng message streaming nhấn mạnh vào tốc độ và sự gọn nhẹ.

Dự án

  • Iggy ban đầu sử dụng giao thức QUIC để cung cấp chức năng trao đổi message cơ bản.
  • Thông qua quá trình tạo mẫu và cải tiến liên tục, đã triển khai máy chủ hỗ trợ ghi/đọc song song và các stream độc lập.
  • Bổ sung hỗ trợ cho giao thức TCP và HTTP, đồng thời tối ưu hóa cơ chế đồng bộ dữ liệu để cải thiện hiệu năng.
  • Benchmark cho thấy throughput cao và độ trễ thấp, từ đó dự án được chuyển thành một dự án dài hạn.

Đội ngũ

  • Iggy có một đội ngũ khoảng 10 thành viên đóng góp vào nhiều phần khác nhau.
  • Tham gia vào nhiều dự án như core server, SDK, web UI, CLI.
  • Các nhà phát triển với kinh nghiệm đa dạng, cùng chia sẻ niềm đam mê lập trình, đã tự nguyện tham gia.
  • Sự tham gia của các contributor bên ngoài từ khắp nơi trên thế giới đã củng cố thêm niềm tin vào dự án.

Tính năng

  • Máy chủ message streaming hiệu năng cao, bền vững, dựa trên log.
  • Throughput cao, độ trễ thấp, cùng mức sử dụng tài nguyên có thể dự đoán của ngôn ngữ biên dịch Rust.
  • Hỗ trợ nhiều stream, topic, partition và nhiều giao thức truyền tải khác nhau.
  • RESTful API, client SDK cho nhiều ngôn ngữ, và làm việc trực tiếp với dữ liệu nhị phân.
  • Có thể cấu hình tính năng máy chủ, lưu consumer offset trên máy chủ, và hỗ trợ nhiều cách polling message.
  • Consumer group để đảm bảo thứ tự message và mở rộng theo chiều ngang, cùng các tính năng hết hạn message và loại bỏ trùng lặp.
  • Hỗ trợ TLS cho mọi giao thức truyền tải, mã hóa dữ liệu tùy chọn và hỗ trợ message header.
  • CLI tích hợp và ứng dụng benchmark để quản lý máy chủ streaming, triển khai dưới dạng một binary duy nhất.

Lộ trình

  • Sau khi xuất hiện trên trang GitHub Trending, đã có các cuộc thảo luận với người dùng về việc bổ sung tính năng.
  • Mục tiêu là cải thiện hiệu năng và độ tin cậy thông qua clustering, I/O cấp thấp và kiến trúc mỗi lõi một luồng.
  • Thử nghiệm cơ chế đồng thuận Raft, cải thiện tác vụ I/O bằng io_uring, và có kế hoạch sử dụng runtime monoio.

Tương lai

  • Mục tiêu là trở thành một nền tảng message streaming đa dụng và thách thức các giới hạn của OS và phần cứng.
  • Dự kiến hỗ trợ nhiều ngôn ngữ lập trình, CLI và web UI như một nền tảng tích hợp dễ sử dụng.
  • Hướng tới phát triển thông qua phản hồi và ý tưởng từ cộng đồng.

GN⁺ nhận định

  • Iggy.rs là một nền tảng message streaming dựa trên Rust, hướng tới hiệu năng cao và độ trễ thấp.
  • Là một dự án mã nguồn mở, dự án đang tiếp tục phát triển nhờ sự tham gia và đóng góp tự nguyện của các nhà phát triển trên toàn thế giới.
  • Mục tiêu đầy tham vọng là vượt qua giới hạn hiệu năng của hệ thống phân tán thông qua các công nghệ đổi mới như clustering, tối ưu I/O cấp thấp và kiến trúc mỗi lõi một luồng là điều rất thú vị, và đây là một dự án rất hữu ích với những ai quan tâm đến lĩnh vực này.

1 bình luận

 
GN⁺ 2024-01-06
Ý kiến trên Hacker News
  • Điều ban đầu khiến tôi quan tâm đến lĩnh vực phần mềm không phải là tiền bạc mà là lý tưởng của những con người cùng nỗ lực hướng tới một mục tiêu chung. Chúc dự án may mắn, và hy vọng có thể hiểu rõ hơn vị trí của dự án thông qua việc so sánh với các lựa chọn thay thế.
  • Tôi thích bài đăng blog này; tác giả có vẻ là một trưởng dự án khiêm tốn, trung thực và mang tính xây dựng. Chúc dự án may mắn.
  • Có vẻ là sản phẩm cạnh tranh trực tiếp với JetStream, và việc đạt được tiến triển ấn tượng chỉ trong chưa đầy 1 năm là rất đáng chú ý.
  • Đây là bài viết khiến tôi nghĩ lại về nguồn gốc của Fluvio: một đội ngũ nhỏ có mối gắn bó lâu dài với các ứng dụng lấy dữ liệu làm trung tâm trong nhiều lĩnh vực suốt hàng chục năm đã hào hứng với data streaming sử dụng Rust và WebAssembly.
  • Chưa rõ việc so sánh với Kafka và Fluvio (một đối thủ khác của Kafka cũng được viết bằng Rust), nhưng cũng có thể nó giống một message queue như RabbitMQ.
  • Vài năm trước tôi đã từng làm thứ gì đó tương tự bằng Go cùng một người bạn.
  • Sau khi học Rust, tôi muốn thử nó, và tôi thích tính thẩm mỹ của trang web.
  • Dự án này thú vị, nhưng trước khi thử tôi cần hiểu cách chạy nhiều instance máy chủ và cách tương tác hệ thống tệp giữa các máy chủ hoạt động ra sao.
  • So với streaming của KeyDB, tôi nghĩ ưu điểm là tính bền vững dữ liệu mạnh mẽ hơn.
  • Tôi ngạc nhiên về việc chọn monoio. Nó yêu cầu dùng nightly compiler, và tôi không nghĩ đó là lựa chọn tốt cho việc bảo trì dự án.