2013-03-20 34 views
35

Tôi đang làm việc với Storm và điều này là tốt cho nhiều trường hợp sử dụng. Gần đây tôi đã có một cái nhìn tại Trident, đó là một mức độ trừu tượng cao của Storm. Nó hỗ trợ xử lý chính xác một lần và giúp xử lý trạng thái dễ dàng hơn.Storm vs. Trident: Khi không sử dụng Trident?

Nhưng bây giờ tôi tự hỏi .. Tại sao tôi không thể sử dụng Trident thay vì Storm?

Những gì tôi đọc cho đến nay:

  • Trident xử lý các thông điệp theo lô, thời gian để thông có thể là lâu hơn.
  • Trident chưa thể xử lý vòng lặp trong cấu trúc liên kết.

Có bất kỳ nhược điểm nào khác khi sử dụng Trident thay vì Storm không? Bởi vì ngay bây giờ, tôi nghĩ rằng những bất lợi tôi liệt kê ở trên là biên.

Trường hợp sử dụng nào không thể được triển khai bằng Trident?


Sau trận đấu:

Kể từ khi tôi hỏi những câu hỏi công ty tôi quyết định đi cho Trident đầu tiên. Chúng tôi sẽ chỉ sử dụng Storm thuần túy khi có vấn đề về hiệu năng. Đáng buồn thay, đây không phải là một quyết định tích cực, nó chỉ trở thành hành vi mặc định (tôi không ở đó vào thời điểm đó).

Giả định của họ là trong hầu hết trường hợp sử dụng, chúng tôi cần nhà nước hoặc chỉ một lần xử lý hoặc chúng tôi sẽ cần nó trong tương lai gần. Tôi hiểu lý do của họ vì chuyển từ Storm sang Trident hoặc quay lại không phải là một sự chuyển đổi dễ dàng, nhưng theo ý kiến ​​cá nhân của tôi, khái niệm xử lý luồng không có trạng thái không được hiểu hết và đó là lý do chính để sử dụng Trident.

+1

Tôi nghĩ rằng bạn hiểu lầm: Trident là cái gì đó chạy trên đầu trang của Storm và thay thế khái niệm cũ về cấu trúc liên kết giao dịch. Bạn có thể, tất nhiên, luôn luôn sử dụng Trident thay vì lõi Storm nếu bạn muốn. –

+0

Hi Gordon, tôi biết rằng Trident chạy trên đỉnh Storm. Bởi vì tôi tự hỏi tại sao tôi nên Storm. Có vẻ như API cấp thấp hơn của Storm chỉ cần cho một số trường hợp sử dụng phổ biến. –

+2

Như tôi đã hiểu, khi bạn có hàng triệu sự kiện, thời gian xử lý theo lô không lớn (một phần của giây tôi giả sử), nhưng tải cơ sở dữ liệu bị giảm. Tôi nghĩ rằng nó có thể thực hiện một số thời gian chờ và có sự kiện bổ sung. Và có, Trident là trừu tượng cấp cao trong cơn bão, và bạn có thể và nên sử dụng api bão cho một cái gì đó tùy chỉnh. – Alex

Trả lời

39

Để trả lời câu hỏi của bạn: khi nào bạn không nên sử dụng Trident? Bất cứ khi nào bạn có thể đủ khả năng để không.

Trident thêm độ phức tạp vào cấu trúc liên kết bão, giảm hiệu suất và tạo trạng thái. Hãy tự hỏi mình câu hỏi: bạn có cần ngữ nghĩa xử lý "chính xác một lần" của Trident hay bạn có thể sống với ngữ nghĩa xử lý "ít nhất một lần" của Storm. Đối với chính xác một lần, sử dụng Trident, nếu không thì không.

Tôi cũng muốn nêu bật thực tế là Storm đảm bảo rằng tất cả các thư sẽ được xử lý. Một số tin nhắn có thể chỉ được xử lý nhiều lần.

18

Nếu độ trễ thấp nhất có thể là mục tiêu của bạn và bạn không cần xử lý chính xác một lần, thì việc sử dụng Storm tốt hơn Trident.

4

Trident là trình trừu tượng cấp cao để thực hiện tính toán thời gian thực trên Twitter Storm, có sẵn trong Storm 0.8.x. Storm là khung xử lý luồng không trạng thái và Trident cung cấp xử lý luồng trạng thái.

+0

Xin chào, tôi đã cập nhật câu hỏi của mình để làm rõ hơn: Các trường hợp sử dụng nào không thể được triển khai bằng Trident? –

+0

Xin chào, nếu bạn không cần xử lý stateful, sau đó sử dụng Trident sẽ là một sự lãng phí tài nguyên (CPU, RAM, ...), bởi vì nó lưu trữ các trạng thái trong cơ sở dữ liệu bên ngoài trong bộ nhớ. –

+1

Nếu bạn không theo dõi trạng thái thì Trident sẽ không "biên dịch" bất kỳ chi phí phụ nào. Trong thực tế, Trident "trình biên dịch" có xu hướng tạo ra topo performant hơn tôi có thể bằng tay. Và nó bao gồm các chức năng trợ giúp thực hiện được tối ưu hóa, thực sự mà bạn không phải tự viết mã. – ChrisCantrell

1

Chris, vì hai trong số đó là công nghệ nguồn mở, trident đóng vai trò như một triển khai thực hiện một kịch bản trên đỉnh của cơn bão, tất nhiên, điều này mang lại hiệu suất cao. Nếu đinh ba không thể đáp ứng yêu cầu của bạn, bạn tạo ra thực hiện nhà nước của riêng bạn trên đầu trang của cơn bão. Trident mang lại các dự án cấp cao hơn như Trident-ML trong thời gian.

+0

Xin chào, thực sự Trident đã đáp ứng tất cả các yêu cầu của tôi, vì lý do đó tôi hỏi tại sao chúng tôi vẫn cần Storm đơn giản. –

+1

Sau đó, chúng tôi có thể trả lời cho câu hỏi của bạn như; nếu đinh ba không đáp ứng yêu cầu hiệu suất của bạn, bạn có thể thực hiện khung trạng thái hiệu quả hơn của riêng bạn trên đầu trang của cơn bão – HakkiBuyukcengiz

0

giả sử chúng tôi muốn lọc + thêm trường vào bộ tuple. nếu chúng ta sử dụng bão thường chúng ta sử dụng 2 chương trình để lọc, bổ sung trường. vì vậy một lần nữa chúng ta cần gửi tuple tới bolt mới bằng cách sử dụng nhóm toàn cầu. vì vậy ở đây nw băng thông có thể trở thành nút cổ chai.

bằng cách sử dụng đinh ba mà chúng tôi có thể sử dụng ở trên trên một máy. vì vậy không cần phải nhóm lại trong trường hợp này. trường hợp sử dụng như vậy, thêm vào "đúng một lần"/"ở phía đông một lần" có thể phân biệt những gì để sử dụng vv

Trident là loại nhóm nhóm hợp lý

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