2010-07-02 27 views
13

Bộ công nghệ này dành cho dự án trò chơi trực tuyến nhiều người dùng .. Yêu cầu dự án: 1. Có thể xử lý người dùng 2k-5k tại bất kỳ thời điểm nào. 2. thư viện khách hàng dành cho iphone và android (bản địa, không có javascript). 3. thư viện khách hàng cho Microsoft Windows (quan trọng nhất), cũng cho mac os x và linux. 4. Tài liệu tốt dành riêng cho phát triển mod 5. Dự án không phải là nguồn mở. Vì vậy, chỉ có thể sử dụng thư viện với giấy phép phù hợp.amqp hoặc xmpp cho trò chơi trực tuyến thời gian thực

Tôi cũng có thể lập trình bằng ngôn ngữ erlang và java, ngôn ngữ lập trình không phải là vấn đề.

Tôi đã xem xét các công nghệ máy chủ sau như Openfire, Tigase, ejabberd và RabbitMQ. Tất cả đều tốt cho dự án của tôi nhưng tôi muốn biết thêm về những gì bộ nhu cầu của tôi, AMQP hoặc XMPP.

Ưu đãi AMQP đặc biệt cho các trò chơi trực tuyến thời gian thực. Là nó tốt hơn tùy chọn sau đó xmpp?

Trả lời

13

Người dân Linden Labs (Second Life) làm một so sánh kỹ lưỡng của rất nhiều hệ thống thư tín mà bạn nên đọc:

http://wiki.secondlife.com/wiki/Message_Queue_Evaluation_Notes

Đối với những gì là giá trị, tôi đang sử dụng zeromq trong một dự án và nó thực sự thú vị bởi vì, tùy thuộc vào trường hợp sử dụng, bạn không cần một nút môi giới.

+0

Nó chứa phân tích chi tiết về AMQP, nhưng hầu như không có gì liên quan đến XMPP. – Robin

7

Sự khác biệt chính giữa XMPP và AMQP là nội dung nhị phân. AMQP xử lý dữ liệu nhị phân tốt và XMPP dường như được thiết kế cho XML. Cá nhân cho các trò chơi trực tuyến, tôi sử dụng Bộ đệm giao thức của Google để định dạng và phân tích thư, và với dấu chân nhị phân rất nhỏ, tôi muốn sử dụng AMQP để phân phối các thư đó.

Nhưng hãy xem xét máy chủ AMQP nào bạn muốn sử dụng. Tôi đã bị cắn bằng cách sử dụng RabbitMQ cho máy chủ AMQP của tôi trong quá khứ. RabbitMQ không có bất kỳ cơ sở kiểm soát dòng chảy nào cả. Vì vậy, nếu khách hàng của bạn đang gửi tin nhắn nhanh hơn so với máy chủ của bạn có thể tiêu thụ chúng, bộ đệm trên máy chủ có thể lấp đầy và thổi máy chủ lên. Các phiên bản mới hơn của RabbitMQ thực hiện kiểm soát luồng theo cách cực kỳ thô lỗ: chúng ngăn chặn tất cả người tiêu dùng trong hệ thống cho đến khi bộ nhớ bị xóa.

Tôi chưa bao giờ thử dùng zeromq; có lẽ nó sẽ tốt hơn cho những điều tôi đã sử dụng RabbitMQ cho ...

5

5K người dùng không cho tôi biết nhiều về hành vi của họ, nhưng nếu tất cả họ gửi một yêu cầu trong cùng một cửa sổ 10 giây thì hãy nói rằng bạn đang tìm kiếm trong 500-1000 yêu cầu mỗi giây.

Tôi đã hoạt động/MQ chạy trên đùi tương đối thấp của tôi dễ dàng xử lý 300 yêu cầu mỗi giây và vì vậy tôi vui lòng giới thiệu nó tại đây. Bạn cũng có thể thiết lập các nhóm môi giới và đạt được khả năng mở rộng theo chiều ngang. Bạn có thể sử dụng giao thức http (STOMP) hoặc giao thức nhị phân nguyên gốc của nó. Rất nhiều thư viện API của khách hàng cũng cho C/C++, Java, JavaScript và các thư viện khác. Có một số số AMQP support ban đầu.

Bạn không đề cập đến bất kỳ yêu cầu kiên trì nào, nhưng một lần nữa tôi đã nghĩ rằng hầu hết các RDBMS sẽ đủ. Điều đó nói rằng, một số cơ sở dữ liệu kiểu tài liệu có định hướng và bảng lớn trông thú vị từ phối cảnh tỷ lệ ngang.

Tôi cũng đã tìm thấy Apache Camel rất giỏi và tôi khuyên bạn nên sử dụng nó. Camel được sử dụng để triển khai lớp logic của bạn.

'hy vọng điều này sẽ hữu ích.

Các vấn đề liên quan