2012-08-26 17 views
17

Tôi có một ứng dụng trong quá trình sản xuất phải xử lý vài gigabyte tin nhắn mỗi ngày. Tôi thích kiến ​​trúc và hiệu suất của Kafka rất nhiều; nó hoàn toàn phù hợp với nhu cầu của tôi.Kafka đã sẵn sàng để sử dụng sản xuất chưa?

Tôi muốn thay thế lớp nhắn tin của mình bằng Kafka tại một số thời điểm. Phiên bản 0.7.1 có đủ tốt để sử dụng trong sản xuất về tính ổn định và nhất quán trong hoạt động không?

Trả lời

13

Nó chắc chắn đang được sử dụng tại một số công ty Big Data, bao gồm LinkedIn, nơi nó được tạo ra (và sau đó mở nguồn), và Tumblr. Chỉ cần Tumblr tự xử lý nhiều gigabyte tin nhắn mỗi ngày. Tôi chắc rằng LinkedIn cũng đang ở trên đó. Bạn có thể thấy một danh sách các công ty được biết đến hiện nay sử dụng nó ở đây:

https://cwiki.apache.org/confluence/display/KAFKA/Powered+By

Ngoài ra, hãy chắc chắn để đăng ký vào danh sách gửi thư của họ, có rất nhiều người tích cực cố gắng nó ra và sử dụng nó trong môi trường sản xuất.

Tôi chắc chắn rằng nó có thể xử lý bất kỳ khối lượng nào bạn có thể ném vào đó.

2

Tôi đã sử dụng kafka khá lâu. Sử dụng các trình khách Java và python nguyên gốc sẽ được ưu tiên.

Tôi đã phải đấu tranh rất nhiều khi tìm thấy một khách hàng node.js thích hợp. nghĩa đen đã viết lại toàn bộ mã của tôi nhiều lần bằng cách sử dụng các máy khách khác nhau vì chúng có rất nhiều lỗi. Cuối cùng được giải quyết với franz-kafka cho node.js.

Ngoài việc duy trì bù đắp của người tiêu dùng là một chút khó khăn. Nó thiếu một số tính năng tốt như trao đổi tồn tại trong AMQP dựa trên Apache Qpid hoặc RabbitMQ

Vì nó được phân phối, hỗ trợ thư ngoại tuyến và hiệu suất thực sự ấn tượng. Tôi cũng thích nó :)

10

Có một tính năng quan trọng mà tôi nghĩ Kafka bị thiếu trước khi nó sẵn sàng để sản xuất.

"thông điệp Flushing vào đĩa nếu nhà sản xuất không thể đạt được bất kỳ nhà môi giới Kafka" Vấn đề này đã được nộp một thời gian dài trước đây: https://issues.apache.org/jira/browse/KAFKA-156

tính năng này sẽ làm cho hoàn chỉnh Kafka kiện pipline thậm chí mạnh mẽ hơn đối với một số trường hợp sử dụng khi nhà sản xuất luôn phải có khả năng gửi sự kiện. Ví dụ: khi bạn theo dõi số lần truy cập trang hoặc số lần nhấp chuột vào nút và bạn không muốn bỏ lỡ bất kỳ sự kiện nào, ngay cả khi tất cả nhà môi giới Kafka đều không thể truy cập được.

+2

1 để chỉ ra vé này – sandris

+1

FYI: Hình như tính năng này vừa được cố định trong Kafka: https://issues.apache.org/jira/browse/KAFKA-789 – Dave

+1

Nope, tôi nghĩ rằng 789 có đã bị đóng vì đây là bản sao của https://issues.apache.org/jira/browse/KAFKA-156. – sandris

3

Tôi phải đồng ý với Dave, Kafka là một công cụ tốt nhưng thiếu một số tính năng cơ bản mà một số có thể được thực hiện bằng tay nhưng sau đó bạn cần phải suy nghĩ những gì Kafka cung cấp. một số điều còn thiếu là:

  • (Theo Dave nói) Flushing thông điệp vào đĩa khi nhà sản xuất không gửi chúng
  • Người tiêu dùng khả năng theo dõi thông điệp đã được xử lý (không chỉ tiêu thụ) và đó không phải là trong trường hợp khởi động lại.
  • Giám sát - cách nhận trạng thái hiện tại của các thực thể trong hệ thống như kích thước hiện tại của hàng đợi trong nhà sản xuất hoặc tốc độ ghi \ đọc tại nhà môi giới (có thể thực hiện nhưng không phải là một phần của công cụ) .