Relay cung cấp runtime tự chủ, hướng sự kiện cho các hàm và dịch vụ
Người dùng GitHub sergiors đã phát hành Relay, một runtime mã nguồn mở quản lý các hàm serverless, lịch biểu cron và các dịch vụ chạy liên tục trên hạ tầng do bạn kiểm soát.
Bài được dịch tự động từ bản gốc tiếng Anh.
Vào ngày 7 tháng 10 năm 2026, người dùng GitHub sergiors đã giới thiệu Relay, một dự án mã nguồn mở mới được thiết kế để chạy các ứng dụng hướng sự kiện trên hạ tầng tự quản lý. Runtime này cho phép các nhà phát triển triển khai các hàm theo phong cách serverless, các tác vụ theo lịch trình và các dịch vụ chạy dài hạn trong một mô hình khai báo duy nhất, loại bỏ nhu cầu sử dụng các nền tảng đám mây độc quyền.
Điều gì đã xảy ra
Relay hoạt động như một môi trường thực thi thống nhất xử lý ba loại khối lượng công việc riêng biệt: các hàm tạm thời được kích hoạt bởi các sự kiện bên ngoài, các hàm được kích hoạt bởi lịch trình dựa trên thời gian và các dịch vụ bền vững chạy liên tục. Hệ thống được xây dựng xoay quanh khái niệm "app" (ứng dụng), đóng vai trò là đơn vị duy nhất cho mã nguồn, cấu hình và triển khai. Trong app này, các nhà phát triển có thể kết hợp các hàm tồn tại ngắn với các quy trình chạy dài hạn như API hoặc worker, tất cả đều chia sẻ cùng một mạng lưới, bí mật và điều khiển tài nguyên.
Runtime phụ thuộc nhiều vào Redis Streams để quản lý việc truyền tin nhắn và trạng thái. Khi một sự kiện bên ngoài xảy ra, nó đi vào một Redis Stream nơi Relay phân loại nó dựa trên các mẫu khai báo để tìm handler phù hợp. Các tác vụ theo lịch trình tuân theo con đường tương tự nhưng bỏ qua việc khớp mẫu, giải quyết trực tiếp đến các handler đã được cấu hình của chúng. Cả hai loại thực thi hàm đều hưởng lợi từ cơ sở hạ tầng chung cho việc thử lại, hàng đợi dead-letter và theo dõi trạng thái gọi. Tuy nhiên, các dịch vụ bền vững hoạt động bên ngoài pipeline sự kiện này, chạy dưới dạng các container được đối chiếu liên tục, chia sẻ cấu hình của app nhưng duy trì vòng đời riêng.
Chi tiết chính
- Mô hình triển khai thống nhất: Các hàm, lịch trình và dịch vụ bền vững được khai báo cùng nhau trong một cấu hình app, đơn giản hóa việc quản lý và đảm bảo truy cập nhất quán vào các bí mật và biến môi trường.
- Xương sống Redis Stream: Các sự kiện bên ngoài và lần xuất hiện theo lịch trình được xuất bản tới Redis Streams, cho phép giao hàng ít nhất một lần, outbox bền vững cho việc thử lại và khử trùng lặp toàn cụm cho các tác vụ theo lịch trình.
- Runtimes được quản lý: Nền tảng hỗ trợ Python 3.14 và Node 24 (bao gồm TypeScript), sử dụng các container ấm để giảm thời gian khởi động lạnh trong khi áp đặt các giới hạn đồng thời có biên độ.
- Lịch trình chính xác: Các job cron hỗ trợ định thời chính xác đến phút với múi giờ IANA, danh tính lần xuất hiện xác định và cơ chế bắt kịp khi khởi động để xử lý các lần thực thi bị bỏ lỡ trong thời gian ngừng hoạt động.
- Cách ly tài nguyên: Mỗi container có thể có các giới hạn cụ thể về bộ nhớ, CPU và PID, đảm bảo rằng các khối lượng công việc nặng không làm cạn kiệt tài nguyên của các dịch vụ khác trong cùng một host.
- Bộ quan sát: Hỗ trợ tích hợp cho số liệu Prometheus, nhật ký có cấu trúc và tracing OpenTelemetry cung cấp khả năng hiển thị vào hiệu suất hàm và sức khỏe hệ thống mà không cần các agent bên ngoài.
Bối cảnh
Để hiểu Relay, cần phân biệt giữa các hàm serverless và các dịch vụ truyền thống. Các hàm serverless là "stateless" (không trạng thái) và "ephemeral" (tạm thời), nghĩa là chúng khởi động, thực hiện một nhiệm vụ cụ thể để đáp ứng một trigger, sau đó tắt. Mô hình này hiệu quả cho các khối lượng công việc rời rạc nhưng thường đòi hỏi sự điều phối phức tạp khi kết hợp với các quy trình chạy dài hạn như máy chủ web hoặc worker nền. Theo truyền thống, các nhóm sẽ sử dụng các công cụ riêng biệt cho những nhu cầu này: một nhà cung cấp đám mây cho các hàm, một daemon cron cho các lịch trình và Docker hoặc Kubernetes cho các dịch vụ.
Relay cố gắng thu hẹp khoảng cách này bằng cách cung cấp một quy trình runtime duy nhất quản lý cả ba loại khối lượng công việc. Nó sử dụng Redis Streams như một hệ thần kinh trung ương cho việc phân phối sự kiện. Redis Streams là một cấu trúc dữ liệu cho phép xử lý tin nhắn đáng tin cậy, nhóm tiêu thụ và lưu giữ lịch sử, khiến chúng trở nên lý tưởng để xây dựng các kiến trúc hướng sự kiện mạnh mẽ. Bằng cách xử lý nội bộ sự phức tạp của định tuyến tin nhắn, logic thử lại và quản lý vòng đời container, Relay nhằm mục đích cung cấp trải nghiệm nhà phát triển của một nền tảng đám mây được quản lý trong khi vẫn hoàn toàn có thể tự chủ.
Tại sao điều này quan trọng
Đối với các nhóm tự chủ phần mềm của họ, việc quản lý hạ tầng cho các kiến trúc hướng sự kiện thường là một gánh nặng vận hành đáng kể. Các nhà cung cấp đám mây cung cấp các giải pháp tiện lợi cho các hàm serverless và hàng đợi được quản lý, nhưng những giải pháp này đi kèm với khóa vendor, chi phí không thể đoán trước và lo ngại về cư trú dữ liệu. Relay cung cấp một cách để nhân rộng chức năng này on-premises hoặc trong các đám mây riêng, mang lại cho các tổ chức quyền kiểm soát đầy đủ đối với dữ liệu và môi trường thực thi của họ. Điều này đặc biệt có giá trị đối với các công ty có yêu cầu tuân thủ nghiêm ngặt hoặc những công ty đang tìm cách tối ưu hóa chi phí bằng cách sử dụng hiệu quả hơn phần cứng hiện có.
Hơn nữa, việc thống nhất các hàm và dịch vụ giảm thiểu sự phân mảnh kiến trúc. Thay vì duy trì các pipeline CI/CD, ngăn xếp giám sát và kho cấu hình riêng biệt cho các loại khối lượng công việc khác nhau, các nhóm có thể quản lý mọi thứ thông qua một giao diện khai báo duy nhất. Sự đơn giản hóa này có thể dẫn đến các chu kỳ phát triển nhanh hơn và dễ dàng khắc phục sự cố hơn, vì ranh giới giữa các trigger sự kiện, tác vụ theo lịch trình và API bền vững bị xóa nhòa trong một mô hình vận hành nhất quán. Khả năng chạy cả các quy trình tồn tại ngắn và chạy dài hạn với các điều khiển tài nguyên chung cũng cải thiện mức sử dụng phần cứng, ngăn ngừa lãng phí liên quan đến việc cấp quá mức các môi trường riêng biệt.
Bạn có thể làm gì
- Đánh giá hỗn hợp khối lượng công việc hiện tại: Xác định xem nhóm của bạn có đang cân nhắc nhiều công cụ cho các job cron, webhook và worker nền hay không, và xem xét liệu một runtime thống nhất có thể đơn giản hóa stack của bạn hay không.
- Kiểm tra runtime cục bộ: Nhân bản repository Relay và sử dụng lệnh
relay startđể chạy quy trình ở tiền cảnh, được giám sát bởi Docker hoặc systemd, để đánh dấu chân tài nguyên của nó. - Xem xét các phụ thuộc Redis: Đảm bảo hạ tầng của bạn có thể hỗ trợ việc sử dụng Redis Stream bắt buộc, bao gồm tính bền vững và phân bổ bộ nhớ cho việc xử lý sự kiện thông lượng cao.
- Ánh xạ các job cron hiện có: Kiểm toán các tác vụ theo lịch trình hiện tại của bạn để xem liệu chúng có hưởng lợi từ danh tính lần xuất hiện xác định và các tính năng bắt kịp khi khởi động của Relay hay không.
- Kiểm tra tương thích ngôn ngữ: Xác minh rằng các hàm hiện có của bạn tương thích với các runtime được hỗ trợ, cụ thể là Python 3.14 hoặc Node 24, trước khi lên kế hoạch di chuyển.
- Cấu hình khả năng quan sát sớm: Thiết lập các collector Prometheus và OpenTelemetry để nắm bắt số liệu và trace ngay từ đầu, tận dụng instrumentation tích hợp sẵn của Relay để có khả năng hiển thị tức thì.



