Hệ thống cấu hình
Trên trang này
Trang này giải thích cách cấu hình trở thành một máy chủ Nalix đang chạy. Nội dung bao gồm trình tự khởi tạo khi khởi động, xác thực tùy chọn, đăng ký service và mối quan hệ giữa cấu hình, dispatch và transport.
Đường dẫn mã nguồn
src/Nalix.Environment/Configuration/ConfigurationManager.cssrc/Nalix.Hosting/Bootstrap.cssrc/Nalix.Hosting/NetworkApplicationBuilder.cs
Tóm tắt nhanh
Quá trình khởi động Nalix tuân theo một trình tự xác định nghiêm ngặt để đảm bảo hạ tầng dùng chung đã sẵn sàng trước khi lưu lượng bắt đầu chạy.
Khởi tạo nhận biết môi trường
Cấu hình Nalix xoay quanh ConfigurationManager và file INI đang hoạt động nằm dưới Directories.ConfigurationDirectory. Đường dẫn file chính xác có thể thay đổi bằng SetConfigFilePath(...), và cài đặt hiện tại giới hạn đường dẫn này nằm trong thư mục cấu hình.
flowchart LR
A["Configuration Files"] --> B["ConfigurationManager"]
B --> C["Options Objects"]
C --> D["Validation Gate"]
D --> E["InstanceManager"]
E --> F["Dispatch Channel"]
F --> G["Protocol & Layer"]
G --> H["Network Listeners"]Các trụ cột cấu hình
ConfigurationManager
ConfigurationManager là điểm truy cập trung tâm cho các giá trị cấu hình và việc gắn kết tùy chọn. Nó xử lý việc tải từ các nguồn, gắn kết vào các lớp có kiểu mạnh và lưu cache các instance đã phân giải.
Lớp tùy chọn
Nalix dùng các kiểu tùy chọn nhỏ, chuyên biệt thay vì một đối tượng “Settings” nguyên khối. Cách này giữ các mối quan tâm lúc chạy (như timing wheel so với giới hạn socket) tách biệt nhau.
| Tùy chọn | Mục đích |
|---|---|
NetworkSocketOptions | Kích thước buffer, cổng và thuộc tính IP |
DispatchOptions | Giới hạn hàng đợi theo từng kết nối, chính sách bỏ gói và thời gian chờ khi bị chặn |
ConnectionQuotaOptions | Giới hạn số kết nối đồng thời và tốc độ theo từng IP |
ConnectionGuardOptions | Trần kết nối toàn cục, ngưỡng lỗi, tốc độ gói tin và cấm tăng dần |
TimingWheelOptions | Lập lịch timeout O(1) cho các kết nối nhàn rỗi |
Registry lúc chạy
InstanceManager (DI)
InstanceManager là registry lúc chạy cho các service dùng chung. Nó không phải dependency injection phức tạp; nó là một service locator nhanh, an toàn đa luồng, được thiết kế cho các hot path mạng.
- Logger: Đầu ra chẩn đoán tập trung.
- Packet Registry: “Danh mục” ánh xạ opcode sang kiểu.
- Helper tùy chỉnh: Cầu nối cơ sở dữ liệu dùng chung hoặc trình quản lý trạng thái game.
Tầng vận chuyển (Transport Shell)
Sau khi cấu hình và các service dùng chung đã sẵn sàng, các tầng dispatch và transport mới được khởi tạo.
- Dispatch: Nơi ứng dụng “trở nên thực sự”. Nó giữ middleware và handler.
- Listener: Lớp vỏ nhị phân. Nó sở hữu việc chấp nhận socket, các worker nhận và
FramePipeline(AEAD). - Protocol: Cầu nối nhận các thông điệp “sạch” từ listener và định tuyến chúng vào dispatch.
Mẫu khởi động an toàn
Với đa số đội ngũ, cách nối này là mặc định an toàn nhất:
- Bind và Validate các tùy chọn.
- Đăng ký Logger và Packet Registry.
- Xây dựng Dispatch (Middleware + Handler).
- Xây dựng Protocol và Listener.
- Activate Dispatch, sau đó khởi động Listener.