B2C · Xtream · Reseller





Tầng lưu trữ lưu trữ
Hệ thống lưu trữ ba tầng cho hơn 500 khách hàng đồng thời.
Bộ mã hóa
Bộ đệm ghi
Cửa sổ nóng 2h (NVMe hoặc tmpfs)
→ gương (liên tục)
ổ cứng RAID 5
50 TB, lưu giữ 14 ngày
→ tìm nạp trước theo yêu cầu
Bộ đệm phát lại
Bộ đệm ấm 1 TB, hơn 500 khách hàng
Khách hàng
Các phân đoạn cũ hơn mirror_min_age_phút được SAO CHÉP sang RAID liên tục.
cấp
Mục đích
Cài đặt
Bộ đệm ghi
Nhận các phân đoạn 24/7, giữ cửa sổ nóng 2 giờ để phát lại nhanh gần đây, bảo vệ RAID khỏi IO ngẫu nhiên.
device_path (chặn thiết bị hoặc 'tmpfs'), tmpfs_size_pct (10-50% MemACó sẵn khi tmpfs), mirror_min_age_phút, evict_age_phút, tuôn ra_threshold_percent (bắt buộc kích hoạt xả)
Lưu trữ RAID HDD
Bộ nhớ dài hạn để lưu giữ đầy đủ (mặc định là 14 ngày).
duy trì_ngày, raid_device, nginx_location, min_free_percent
Bộ nhớ đệm phát lại (tùy chọn)
Bộ nhớ đệm bên đọc dành cho các tệp phổ biến cũ hơn 2 giờ (ví dụ: bản cập nhật EPG).
prefetch_hours, max_sessions, eviction_policy (session/lru/fifo)
ghi trực tiếp × 2h = write_buffer kích thước cửa sổ nóng.
Stream.dvr_file_path/2 thăm dò write_buffer → play_cache → lưu trữ theo thứ tự.
Mỗi tầng có thể sử dụng đĩa ảo tmpfs được hỗ trợ bởi RAM thay vì thiết bị khối vật lý.
Phân bổ được chỉ định dưới dạng phần trăm của MemCó sẵn (từ /proc/meminfo) - bước 10, giá trị hợp lệ 10/20/30/40/50.
Nếu mục tiêu được tính toán vượt quá 60% MemCó sẵn hiện tại, quá trình gắn kết sẽ bị từ chối và cấp vẫn ngoại tuyến (Stream.archive_path sẽ chuyển sang cấp lành mạnh tiếp theo).
tmpfs tồn tại trong RAM - mọi nội dung bộ đệm đang hoạt động đều bị MẤT khi máy chủ khởi động lại.
Sử dụng tmpfs cho write_buffer khi: (a) hộp phát triển/kiểm tra không có NVMe dự phòng nhưng bạn vẫn muốn chạy quy trình DVR đầy đủ để kiểm tra tích hợp, (b) nhà điều hành muốn xác thực hành vi sao chép + lưu trữ mà không mua trả trước NVMe, (c) thử nghiệm tạm thời trong đó có thể chấp nhận được tình trạng mất dữ liệu khi khởi động lại.
Khi cấp ghi là tmpfs, StorageTierFlush sử dụng các giá trị mặc định chặt chẽ hơn — mirror_min_age 2 phút, evict_age 15 phút (so với 5 phút / 120 phút đối với NVMe vật lý).
Các bậc được định cấu hình một lần thông qua Cấu hình > Lưu trữ > Bậc lưu trữ và được cung cấp tự động — không cần chỉnh sửa mkfs/mount/fstab thủ công trên máy chủ.
Trong lần khởi động đầu tiên (không có tầng ghi trong DB), hệ thống sẽ tự động tạo tầng ghi được hỗ trợ bởi tmpfs với phân bổ 30% MemAvailable, điểm gắn kết /mnt/nvme_write.
Stream.archive_path/1 trả về cấp 'khỏe mạnh' đầu tiên - write_buffer nếu được gắn+có thể ghi+free_pct trên mức sàn an toàn, nếu không sẽ quay trở lại kho lưu trữ (chế độ xuống cấp).
Việc thay đổi tmpfs_size_pct trong giao diện người dùng sẽ kích hoạt umount + remount với kích thước mới khi Lưu.
URL cơ sở - Trình phát OSTV
Trường gói
API gói
Chính sách mật khẩu
API đại lý
Cài đặt
Trường người dùng
Quản lý người dùng
URL cơ sở - Trình phát OSTV
Ứng dụng OSTV Player cho phép người dùng thay đổi URL cơ sở của máy chủ (địa chỉ API).
Lý do: Việc thay đổi URL cơ sở chỉ dành cho quản trị viên/người dùng root để họ có thể chuyển đổi giữa các máy chủ (ví dụ: sản xuất và thử nghiệm).
Trường người dùng
API gói
Trả về danh sách tất cả các gói đang hoạt động kèm theo giá và thời hạn thanh toán.
Danh sách người dùng quản lý (đại lý/nhà cung cấp).
Trả về số dư tín dụng cho một người dùng quản lý cụ thể.
Trường gói
API đại lý
API dành cho người bán lại/nhà cung cấp.
Chính sách mật khẩu
Cần phải có mật khẩu khi tạo thuê bao.
Tối thiểu 8 ký tự
Ít nhất 1 chữ in hoa (A-Z)
Ít nhất 1 ký tự đặc biệt (!@#$%^&* v.v.)
Áp dụng cho giao diện người dùng và API.
Cài đặt
Cấp độ tự động và an toàn
Tự động phát hiện dung lượng + hệ thống tệp: khi chọn NVMe miễn phí từ danh sách thả xuống, dung lượng (GB) được đọc từ lsblk -bn -o SIZE và FS hiện tại từ blkid (với dự phòng toàn bộ đĩa).
Cơ chế xả cấp - Gương liên tục
StorageTierFlush GenServer chạy 60 giây một lần.
Tại sao nhân bản liên tục đập "đợi 60 phút, di chuyển hàng loạt": (1) Tải RAID đồng đều — không có đợt bùng phát 5 GB ở ranh giới giờ, chỉ nhỏ giọt các phân đoạn 7 MB;
Đang thực hiện an toàn cho phân đoạn: máy nhân bản chỉ chọn các tệp cũ hơn MIRROR_MIN_AGE_MINUTES thông qua find -mmin +5.
Điều chỉnh mỗi lần triển khai (.env)
500–1000
Quy tắc định cỡ:
Lịch xem trước DVR
Tab Xem trước DVR hiển thị lịch do máy chủ hiển thị, chỉ đánh dấu những ngày mà bản ghi tồn tại trên đĩa.
Có thể nhấp vào các ngày có bản ghi (màu xanh lam) — nhấp vào sẽ điền trước dữ liệu nhập ngày giờ vào ngày đó lúc 00:00;
Được triển khai trong Stream.available_dvr_days/1 thông qua find -mindeep 4 -maxdeep 4 -type d trên mỗi giá treo cấp;
Tổng quan
API B2C (Doanh nghiệp với người tiêu dùng) cung cấp khả năng xác thực và quyền truy cập luồng cho các ứng dụng trình phát của người dùng cuối.
Xác thực người dùng và nhận auth_token cho các lệnh gọi API tiếp theo.
Phương pháp
Điểm cuối
Nội dung yêu cầu
tham số
Kiểu
Yêu cầu
Sự miêu tả
Đúng
Tên đăng nhập của người dùng
Mật khẩu người dùng
Yêu cầu mẫu
Trường phản hồi
Phản hồi thành công (200)
Mã thông báo xác thực được mã hóa cho các lệnh gọi API tiếp theo
Ngày/giờ hết hạn mã thông báo ở định dạng ISO 8601
Ví dụ về phản hồi thành công
Phản hồi lỗi (403)
Thông báo mô tả lỗi
Mã trạng thái HTTP
Phản hồi lỗi ví dụ
Truy xuất thông tin về người dùng được xác thực bằng mã thông báo xác thực.
Trường phản hồi
Tên người dùng của người dùng được xác thực
Tin nhắn máy chủ (trống nếu không có)
Trạng thái xác thực (1 = đã xác thực)
Trạng thái tài khoản: Đang hoạt động, Bị cấm, Bị vô hiệu hóa, Đang dùng thử
Ngày hết hạn tài khoản (null nếu không giới hạn)
Số lượng kết nối hiện hoạt
Ngày tạo tài khoản ở định dạng ISO 8601
Kết nối đồng thời tối đa được phép
Danh sách các định dạng luồng đầu ra được phép
Tên nhà cung cấp của chủ sở hữu/người bán lại của người dùng (null nếu không có)
URL của hình ảnh logo nhà cung cấp (null nếu không có)
URL của hình ảnh logo thu gọn của nhà cung cấp 208x208 (null nếu không có)
Thời gian máy chủ hiện tại ở định dạng ISO 8601
Yêu cầu mẫu
Truy xuất các danh mục được lọc theo loại.
Loại danh mục: trực tiếp, vod hoặc loạt phim
ID danh mục dưới dạng chuỗi
Tên hiển thị danh mục
ID danh mục chính (0 nếu là root)
Hàm băm MD5 của nội dung để vô hiệu hóa bộ đệm
Yêu cầu mẫu
Truy xuất thông tin chi tiết cho một mục VOD cụ thể, bao gồm siêu dữ liệu và liên kết luồng.
ID luồng VOD (UUID)
URL ảnh bìa
Mã định danh TMDB
URL hình ảnh phông nền
Chuỗi thể loại
Cốt truyện/mô tả
diễn viên
Giá trị xếp hạng (0-10)
Tên giám đốc
Ngày phát hành
Thời lượng tính bằng giây
Thời lượng dưới dạng chuỗi được định dạng
Mảng ID danh mục
1 nếu nội dung người lớn, 0 nếu không
ID luồng VOD
Tiêu đề VOD
Ngày thêm (ISO 8601)
URL liên kết luồng
Siêu dữ liệu codec video/âm thanh
Truy xuất thông tin loạt phim với danh sách đầy đủ các phần và tập, được nhóm theo số phần.
ID sê-ri (UUID)
Số mùa
Tên hiển thị phần
Số tập trong mùa
Ngày phát sóng của mùa
Tổng quan / mô tả phần
URL ảnh bìa phần
Bản đồ được khóa theo chuỗi số mùa.
Trường đối tượng tập
ID tập
ID tập TMDB
Số tập trong mùa
Ngày thêm (ISO 8601)
Số mùa
Đối tượng thông tin tập (cấu trúc giống như thông tin VOD)
URL liên kết luồng
Siêu dữ liệu codec video/âm thanh
Mã thông báo hết hạn tùy thuộc vào vai trò của người dùng: quản trị viên = 365 ngày, khác = 30 ngày|Tài khoản bị vô hiệu hóa không thể xác thực (trả về 403)|Mỗi lần đăng nhập thành công sẽ cập nhật dấu thời gian đăng nhập cuối cùng của người dùng|Mã thông báo được mã hóa và chứa user_id, tên người dùng, vai trò và ngày hết hạn
Phản hồi thành công (200)
Mã thông báo xác thực thu được từ điểm cuối /auth