2012-03-16 19 views
47

Mục tiêu chính của Thrift là cho phép giao tiếp hiệu quả và đáng tin cậy trên các ngôn ngữ lập trình. nhưng tôi nghĩ HTTP-RPC cũng có thể làm điều đó, nhà phát triển web hầu như mọi người đều biết cách làm việc trên http và dễ thực hiện HTTP-RPC (json) hơn Thrift,Tại sao tiết kiệm, Tại sao không phải HTTP RPC (JSON + gzip)

Có thể Thrift-RPC nhanh hơn cho tôi biết sự khác biệt trong perfermance giữa chúng?

Trả lời

88

Một vài lý do khác hơn là tốc độ:

  1. Thrift tạo ra các client và server mã hoàn toàn, bao gồm cả các cấu trúc dữ liệu bạn đang đi qua, do đó bạn không phải đối phó với bất cứ điều gì khác hơn là viết các xử lý và gọi khách hàng. và mọi thứ, bao gồm các tham số và trả về được tự động xác nhận và phân tích cú pháp. vì vậy bạn đang nhận được kiểm tra sanity trên dữ liệu của bạn miễn phí.

  2. Thrift là nhỏ gọn hơn HTTP, và có thể dễ dàng được mở rộng để hỗ trợ những thứ như mã hóa, nén, không chặn IO vv

  3. Thrift có thể được thiết lập để sử dụng HTTP và JSON khá dễ dàng nếu bạn muốn nó (nói rằng nếu khách hàng của bạn ở đâu đó trên internet và cần phải vượt tường lửa)

  4. Tiết kiệm hỗ trợ kết nối liên tục và tránh giao tiếp TCP và HTTP liên tục mà HTTP phát sinh.

Cá nhân, tôi sử dụng tiết kiệm cho LAN nội bộ RPC và HTTP khi tôi cần kết nối từ bên ngoài.

Tôi hy vọng tất cả điều này có ý nghĩa với bạn. Bạn có thể đọc một bài thuyết trình tôi đưa về thực hành tiết kiệm ở đây:

http://www.slideshare.net/dvirsky/introduction-to-thrift

Nó có liên kết đến một vài lựa chọn thay thế khác để tiết kiệm.

+0

Câu trả lời tuyệt vời về Dvir! Tôi cũng rất thích nếu tiết kiệm và thích nó trong nhiều trường hợp. Khó khăn lớn nhất là cài đặt trình biên dịch Thrift, nhưng sau khi hoàn tất và kết hợp với plugin maven thích hợp, bạn đã sẵn sàng. Mã máy chủ/khách hàng nhỏ gọn cần thiết là cực kỳ gợi cảm! –

+0

@JacoVanNiekerk cảm ơn, tôi đã biên soạn tiết kiệm rất nhiều lần có vẻ tầm thường với tôi :). Bất lợi lớn nhất trong quan điểm của tôi là các máy chủ python không chơi độc đáo với tiết kiệm, với các giới hạn GIL (Trên thực tế một trong các máy chủ python trong tiết kiệm là một conrtibution tôi đã thực hiện, cố gắng giải quyết vấn đề này). nhưng đối với C++ hoặc Java thì nó rất tuyệt. –

+1

Hầu hết các ứng dụng khách HTTP cũng hỗ trợ giữ liên lạc :) – Xorlev

5

Đây là nguồn lực tốt về so sánh hiệu suất của serializers khác nhau: https://github.com/eishay/jvm-serializers/wiki/

Phát biểu đặc biệt của Thrift vs JSON: hiệu suất tiết kiệm được so sánh với các thư viện JSON tốt nhất (jackson, protostuff), và kích thước serialized là thấp hơn một chút.

IMO, lợi thế tiết kiệm mạnh nhất là các thao tác RPC tương thích thuận tiện và xử lý thuận tiện dữ liệu nhị phân.

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