nói dối e blog

Thiết Kế Hệ Thống Hạt Nhân

Thiết kế hệ thống hạt trong engine

Vài ngày nay tôi đang tái cấu trúc hệ thống hạt trong engine. Trước đây tôi đã làm một phiên bản prototype bằng Lua, giờ đây sẽ triển khai lại bằng C/C++. Hiện tại vẫn đang sử dụng hệ thống hạt dựa trên CPU, sau này nếu cần sẽ phát triển thêm phiên bản dựa trên GPU.

Năm ngoái tôi đã từng viết một bài blog về chủ đề hệ thống hạt. Ý tưởng cơ bản vẫn giữ nguyên, nhưng lần này tôi tập trung vào thiết kế chi tiết cấu trúc dữ liệu với một số điểm mới thú vị đáng để chia sẻ.

Skynet 1.4.0 - Bước Tiến Mới Trong Hành Trình Phát Triển

Một năm nữa lại trôi qua, Skynet vẫn duy trì nhịp độ phát triển ổn định với tốc độ ra mắt một phiên bản mỗi năm. Dự kiến phiên bản Skynet 1.4.0 sẽ chính thức đóng băng trong thời gian tới, mang theo nhiều cải tiến đột phá và tính năng mới đầy hứa hẹn.

Nâng cấp Lua lên phiên bản 5.4.2 - Bước chuyển mình mạnh mẽ

Điểm nhấn quan trọng nhất của phiên bản lần này là việc nâng cấp Lua lên phiên bản 5.4.2 (dù phiên bản chính thức chưa được phát hành nhưng mã nguồn trên GitHub đã cập nhật đến phiên bản này). Việc áp dụng phiên bản Lua mới này sẽ mang lại lợi ích to lớn cho các dự án sử dụng Skynet, đặc biệt là nhờ vào công nghệ trình thu gom rác thế hệ mới (Generational GC). Đối với các hệ thống sử dụng mô hình “agent service” với số lượng lớn, cải tiến này sẽ giúp giảm đáng kể đỉnh tiêu thụ bộ nhớ (do GC hoạt động hiệu quả và kịp thời hơn).

Tổng Kết Về Vấn Đề Máy Chủ Cache

Tuần này, dịch vụ máy chủ cache của chúng ta đã đối mặt với hàng loạt thách thức nghiêm trọng. Tổng tài nguyên đã vượt quá 30GB, với hàng chục người dùng sử dụng đồng thời. Mỗi ngày đều phải thực hiện công việc chuyển đổi phiên bản (dẫn đến việc tải lên/tải xuống lại toàn bộ 30GB dữ liệu). Trong quá trình vận hành, tôi đã liên tục vá víu chương trình máy chủ cache và cuối cùng đã duy trì được hoạt động ổn định.

Cải Tiến Từ Phiên Bản Cache Server Của Skynet

Cache server do chúng tôi tự phát triển đã vận hành ổn định trong thời gian dài. Lần sự cố gần nhất xảy ra vào tháng 2 khi làm việc từ xa. Trong tháng này, một sự cố tương tự lại tái diễn - vẫn là hiện tượng sụp đổ do tràn bộ nhớ (OOM). Ban đầu tôi rất bối rối vì tưởng rằng đã xử lý xong tất cả các trường hợp cực đoan. Về lý thuyết, đây là hệ thống trọng I/O nhẹ bộ nhớ, không nên xuất hiện vấn đề OOM.

Thêm Chức Năng Xử Lý Đa Yêu Cầu Song Song Cho Skynet

Khi thiết kế skynet, chúng tôi đã chủ động từ chối sử dụng mô hình callback để triển khai cơ chế yêu cầu-phản hồi. Theo quan điểm của tôi, việc sử dụng callback sẽ khiến luồng xử lý phản hồi bị tách rời khỏi luồng yêu cầu gốc, điều này gây khó khăn cho việc xây dựng các logic nghiệp vụ phức tạp. Đặc biệt là việc xử lý ngoại lệ trở nên kém hiệu quả.

Kỹ Thuật Phần Mềm Dựa Trên Bằng Chứng

Kỹ nghệ phần mềm dựa trên bằng chứng

Trong kho tàng tri thức của tôi, cuốn “The New C Standard” luôn giữ một vị trí đặc biệt. Chính tác phẩm này đã mở ra cơ duyên để tôi quen biết với học giả Derek M Jones - một nhà nghiên cứu có tư duy đột phá. Vào năm 2018, trong một lá thư điện tử, ông đã chia sẻ với tôi về dự án viết sách mới đang trong quá trình thực hiện - một tác phẩm mang tính cách mạng trong lĩnh vực kỹ nghệ phần mềm.

0%