Thêm Driver MongoDB Vào Skynet - nói dối e blog

Thêm Driver MongoDB Vào Skynet

Khoảng thời gian trước, tôi đã hoàn thành việc xây dựng thư viện driver MongoDB cho Lua. Sau khi hoàn tất những công việc nền tảng ban đầu, do bận rộn với công việc chính nên dự án tạm thời bị gác lại.

Một vài ngày gần đây, có thành viên trong nhóm thông báo rằng họ đã bắt đầu sử dụng thư viện này và phát hiện một lỗi (bug). Điều này khiến tôi vừa ngạc nhiên vừa vinh dự, nên tôi quyết định tích hợp thư viện này vào hệ sinh thái Skynet một cách nghiêm túc.

Ban đầu tôi nghĩ đây là công việc đơn giản, nhưng khi bắt tay vào mới nhận ra cần phải tách riêng phần socket trong thư viện lua-mongo ra khỏi logic xử lý giao thức MongoDB. Việc này giúp thay thế module socket gốc bằng thư viện socket của Skynet. Quá trình tách rời này tiêu tốn mất một ngày làm việc, tuy nhiên kết quả mang lại là module phân tích giao thức底层 MongoDB sẽ trở nên độc lập, có thể tái sử dụng linh hoạt.

Sau bước tách rời, việc tích hợp vào Skynet trở nên thuận lợi hơn rất nhiều. Chỉ cần thay thế module socket bằng phiên bản do Skynet cung cấp là có thể hoàn tất cơ bản phần tích hợp.

Lưu ý: Dự án của chúng tôi hiện tại vẫn chưa sử dụng MongoDB, do đó tôi mới chỉ triển khai những tính năng cơ bản nhất của driver MongoDB. Những bạn nào quan tâm có thể cùng phát triển mở rộng thêm tính năng, hoặc khi dự án của chúng tôi chính thức áp dụng MongoDB, tôi sẽ tiếp tục hoàn thiện những phần còn thiếu.

Các bạn quan tâm có thể gửi pull request trực tiếp lên repository lua-mongo, tôi sẽ chịu trách nhiệm kiểm tra và tích hợp các tính năng mới vào Skynet.

Các tính năng ưu tiên hoàn thiện trong tương lai gần:

  1. Tự động kết nối lại khi mất mạng (Auto Reconnect): Hỗ trợ khôi phục kết nối một cách mượt mà khi xảy ra gián đoạn.
  2. Cấu hình Replica Set: Cho phép kết nối với cụm MongoDB nhiều node nhằm tăng tính dự phòng và khả năng phục hồi.
  3. Write Concern: Tăng cường kiểm soát mức độ đảm bảo khi ghi dữ liệu vào MongoDB (ví dụ: xác nhận ghi thành công từ primary node, secondary node…).

Ba tính năng trên hoàn toàn có thể phát triển hoàn chỉnh ở tầng Lua mà không cần can thiệp sâu vào C core. Rất mong nhận được sự đóng góp từ cộng đồng!

0%