2013-01-11 31 views
6

Hầu hết các api hiện đại đều được xây dựng bằng cách sử dụng json với thông báo Yêu cầu/Trả lời qua Http. Kể từ zeromq là một vận chuyển trên tcp, có thể json dựa trên api được xây dựng trên zeromq? Nếu vậy, lợi thế sẽ là gì? Việc sử dụng là i) các nhà phát triển viết ứng dụng cho khách hàng/thiết bị giao tiếp với một hoặc nhiều máy chủ web và ii) máy chủ web liên lạc với máy chủ web.api dựa trên json trên zeromq

Trả lời

13

Có, API dựa trên json có thể được xây dựng trên ZeroMQ thay vì HTTP. Nó sẽ yêu cầu ổ cắm REQ/REP. Tuy nhiên, nó không có vẻ là một lựa chọn tốt.

Ưu điểm chính của phương pháp JSON + HTTP là tính di động. JSON + HTTP được hỗ trợ ra khỏi hộp bởi hầu như bất kỳ môi trường lập trình nào, ZeroMQ không được hỗ trợ rộng rãi như vậy (không hỗ trợ trong trình duyệt JS chẳng hạn). Ngoài ra, ZeroMQ không quá khó thiết lập, vì vậy người tiêu dùng dịch vụ có thể sẽ không hài lòng với lựa chọn đó.

Mặt khác, lợi thế chính của ZeroMQ là hiệu suất: thật tuyệt nếu bạn cần đẩy nhiều megabyte (hoặc có thể là gigabyte) dữ liệu mỗi giây. Mã hóa/giải mã JSON thực sự nhanh, nhưng kích thước cũng quan trọng đối với loại tác vụ này. Bất kỳ khung tuần tự hóa nhị phân nào có vẻ là một lựa chọn tốt hơn, có rất nhiều: protobuf, tiết kiệm, BSON, kryo, avro, v.v.

Vì vậy, tôi sẽ tiếp tục sử dụng JSON + HTTP cho các API dịch vụ web: HTTP hiện đại các công cụ máy chủ cung cấp hiệu suất tuyệt vời và khả năng mở rộng. Và ZeroMQ là một lựa chọn tuyệt vời để giao tiếp trong một môi trường được kiểm soát bởi vì các tính năng đồng thời của nó và các mẫu sử dụng được xác định rõ.

+0

Vấn đề về tính di động thực sự là câu trả lời tôi đã làm sau. Sẽ gắn bó với json + http api của chúng tôi. Câu trả lời chính xác. Cám ơn rất nhiều. –

+0

@dbv Bạn được chào đón. Tôi đánh giá cao "+1" :) – Wildfire

+3

một cách tiếp cận lai hữu ích trong một số trường hợp - HTTP + JSON dưới dạng API công khai và sử dụng hệ thống nhắn tin JSON chính xác * thông qua zeromq để phân phối tác vụ cho các nút công việc của bạn. – minrk

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