Một Đường Hầm Phù Hợp Cho Nền Tảng Mở Của Tencent - nói dối e blog

Một Đường Hầm Phù Hợp Cho Nền Tảng Mở Của Tencent

Trong quá trình hợp tác phát triển game cùng Tencent, đối tác phải tuân thủ quy định “chạy máy chủ trên nền tảng Tencent Cloud”. Đây là điều kiện bắt buộc do vị thế thống trị của Tencent trong hệ sinh thái. Việc tự vận hành server riêng hay sử dụng dịch vụ đám mây từ nhà cung cấp khác đều bị cấm nghiêm ngặt. Đối với nền tảng Tencent Open, trải nghiệm của người dùng sẽ tự hiểu được chất lượng thực tế như thế nào - cái tên “mở” này cũng tương tự như việc thêm chữ “nhân dân” vào tên gọi nước ta vậy :)

Nếu nhìn nhận quy định “phải dùng Tencent Cloud” như một loại “thuế企鹅” (thuế ngầm), mọi chuyện sẽ trở nên dễ hiểu hơn. Nhà phát triển sẽ phải chi thêm chi phí cho phần cứng không tối ưu, tốn thời gian viết code thích ứng, chấp nhận các lỗi phát sinh khó hiểu. Đây là thực tế tất yếu khi làm việc với tập đoàn lớn, nơi mỗi phòng ban đều cần hoàn thành KPI và thể hiện vai trò của mình.

Tuy nhiên, khi hiệu năng server không đáp ứng yêu cầu hoặc bạn không chịu nổi các hạn chế từ nền tảng đám mây, vẫn còn một lối đi ngầm: tự vận hành server riêng và thiết lập chương trình tunnel kết nối. Với thiết kế đặc thù của Tencent Open Platform, các công cụ tunnel thông thường khó có thể hoạt động hiệu quả. Gần đây, một bạn tên Xiao Jing đang học ngôn ngữ Go đã phát triển một giải pháp tunnel hoàn toàn mới. Các bạn quan tâm có thể tự tải về sử dụng.

Giải pháp này hoạt động như sau:

  • Trên nền tảng mở, bạn chạy chương trình “gate” để lắng nghe cổng kết nối (port) nhất định, cho phép người dùng truy cập dịch vụ qua cổng này.
  • Do nền tảng hạn chế kết nối ra ngoài, gate cần mở thêm một port thứ hai để server bên ngoài có thể kết nối vào.
  • Trên server của bạn (có thể là máy tự quản lý, máy tại nhà hoặc văn phòng), bạn khởi chạy “node” để kết nối với gate trên nền tảng mở. Sau khi thiết lập kết nối, node sẽ chuyển đổi mọi yêu cầu từ gate thành yêu cầu cục bộ, cho phép server xử lý trực tiếp.

Đặc biệt, do thiết kế phức tạp của TGW (Tencent Gateway), mỗi kết nối TCP từ ngoài vào đều bị thêm vào một phần header kỳ lạ. Tuy nhiên, dịch vụ gotunnel sẽ tự động loại bỏ phần header này một cách thông minh.

Dù việc sử dụng tunnel khiến dữ liệu phải qua nhiều lớp chuyển tiếp, làm giảm hiệu suất khi test ping/traceroute, nhưng tổng băng thông dài hạn vẫn giữ nguyên. Giải pháp này chỉ đóng vai trò chuyển tiếp gói tin mà không ảnh hưởng đến hiệu năng xử lý của server.

Ưu điểm vượt trội của phương án này:

  1. Tiết kiệm chi phí vận hành game trên Tencent Cloud (dùng phần cứng rẻ hơn, giảm chi phí bảo trì)
  2. Không cần chỉnh sửa code để phù hợp với nền tảng mở
  3. Vẫn đáp ứng KPI của các phòng ban Tencent
  4. Cải thiện trải nghiệm game cho người dùng cuối

Đây thực sự là một tình huống “ba bên cùng có lợi” (win-win-win) trong bối cảnh vận hành game tại thị trường Trung Quốc.

0%