nói dối e blog

Chia Sẻ Chuỗi Ngắn Giữa Các Máy Ảo Lua

Trong Lua, các chuỗi dưới 40 byte sẽ được nội hóa (interned) vào một bảng đặc biệt nằm trong cấu trúc global state. Điều này có nghĩa là các chuỗi ngắn giống nhau trong cùng một máy ảo Lua sẽ chỉ tồn tại duy nhất một bản sao.

Trong hệ thống Skynet, việc sử dụng hàng trăm máy ảo Lua là điều phổ biến. Các máy ảo này thường tải cùng một bộ mã nguồn Lua, dẫn đến việc tạo ra nhiều bản sao của các đối tượng Proto không cần thiết. Trước đây, mình đã tiến hành cải tiến máy ảo Lua để chia sẻ Proto giữa các máy ảo, điều này giúp tăng tốc độ khởi tạo máy ảo và giảm đáng kể việc sử dụng bộ nhớ.

Hy Vọng Lua Có Thể Thêm Một Tính Năng Mới Là Userdata Slice

Một ý tưởng mới đang được đề xuất cho ngôn ngữ Lua: hỗ trợ slice userdata

Là một ngôn ngữ nhúng mạnh mẽ, Lua có khả năng kết nối trơn tru với hệ thống chủ (host system) thông qua cơ chế userdata, cho phép Lua quản lý các đối tượng C/C++ một cách hiệu quả. Dù cơ chế này đã rất linh hoạt với các tính năng như metatable và uservalue, nhưng vẫn tồn tại một số hạn chế cần được cải thiện để đơn giản hóa các thao tác phức tạp.

Loại Bỏ Giới Hạn Độ Dài Tin Nhắn Trong Giao Tiếp Cluster RPC Của Skynet

Trong một bài viết trước, tôi đã phân tích vì sao giao thức gói tin của Skynet chỉ sử dụng 2 byte để biểu diễn độ dài gói tin - đó là bởi vì những tin nhắn có kích thước lớn nên được xử lý ở tầng ứng dụng phía trên. Tuy nhiên, thực tế hiện nay cho thấy chúng ta cần nhìn nhận tin nhắn dài như một vấn đề riêng biệt, không thể trộn lẫn với xử lý tin nhắn thông thường (thường ngắn hơn) và không nên “che giấu” sự khác biệt này ở tầng thấp.

Một Lỗi Rò Rỉ Bộ Nhớ Khó Nhằn

Câu chuyện bắt đầu từ một vấn đề được phản ánh trên diễn đàn Skynet, đồng thời trong hai ngày qua, dự án đang phát triển cũng gặp hiện tượng nghi ngờ rò rỉ bộ nhớ. Hai sự kiện trùng hợp này khiến tôi quyết định đào sâu điều tra.

Thực tế, việc dò tìm rò rỉ bộ nhớ trong Skynet dễ hơn nhiều so với các dự án thông thường. Nhờ kiến trúc mô-đun phân tán đặc trưng của Skynet, mỗi dịch vụ (service) đều có không gian cấp phát bộ nhớ độc lập, phạm vi chức năng tập trung và vòng đời ngắn hơn cả tiến trình chính. Khi phát hiện vùng nhớ đã cấp phát nhưng không được giải phóng, chúng ta có thể tập trung kiểm tra các mô-đun C - vốn rất ít trong Skynet, giúp thu hẹp phạm vi tìm kiếm đáng kể.

Trò Chơi Mới Của Chúng Tôi "Heartbeat Manor" Đã Được Phát Hành

Chào mừng bạn đến với tựa game mới nhất của chúng tôi - “Trang Trại Tình Yêu”!

Dự án “Trang Trại Tình Yêu” đã trải qua hơn một năm rưỡi phát triển công phu. Kỳ thực vào cùng thời điểm năm ngoái, chúng tôi đã bắt đầu giai đoạn thử nghiệm nội bộ. Quá trình phát triển liên tục được điều chỉnh, cải tiến không biết bao nhiêu lần.

Điều đặc biệt là dù dự án kéo dài vượt xa dự kiến ban đầu nhưng vẫn không bị công ty hủy bỏ. Bí quyết nằm ở tình yêu mãnh liệt của đội ngũ phát triển dành cho tựa game này. Tất cả các thành viên, kể cả các lập trình viên, đều dành hàng giờ liền trải nghiệm và say mê với chính đứa con tinh thần của mình. Bạn thử nghĩ mà xem, sau hơn một năm mài giũa mà vẫn giữ được ngọn lửa đam mê, đó không phải là tình yêu chân chính thì còn là gì nữa? Chính vì vậy dù chi phí phát triển vượt ngân sách, ban lãnh đạo công ty vẫn quyết định ủng hộ đến cùng.

Giải Pháp Tunnel VPN Đa Đường (N:m)

Hai ngày trước, sau khi thành công trong việc thiết lập kết nối đa đường MPTCP để truy cập GitHub mượt mà, tôi bắt đầu suy nghĩ về cách tích hợp giải pháp này vào hệ thống một cách liền mạch. Nếu không sử dụng VPN, việc điều hướng lưu lượng qua các tunnel sẽ gặp nhiều hạn chế. Mặc dù có thể thay đổi bản ghi DNS nội bộ để định tuyến các tên miền GitHub, nhưng cách này không mang lại trải nghiệm tối ưu.

0%