9

Tôi đang xây dựng một ứng dụng liên tục bổ sung vào bộ đệm trong khi nhiều độc giả sử dụng bộ đệm này một cách độc lập (write-once-read-many/WORM). Lúc đầu, tôi nghĩ đến việc sử dụng Apache Kafka, nhưng khi tôi thích một tùy chọn dịch vụ, tôi bắt đầu điều tra AWS Kinesis Streams + KCL và có vẻ như tôi có thể hoàn thành nhiệm vụ này với họ. Về cơ bản tôi cần 2 tính năng: đặt hàng (các sự kiện phải được đọc theo thứ tự của tất cả người đọc) và khả năng chọn độ lệch trong bộ đệm từ nơi người đọc bắt đầu tiêu thụ trở đi.Tương đương với luồng Kafka/AWS Kinesis trên Google Cloud Platform

Bây giờ tôi cũng đang đánh giá Google Cloud Platform. Khi tôi đọc tài liệu, có vẻ như Google Pub/Sub được đề xuất là tương đương với AWS Kinesis Stream, nhưng ở mức độ chi tiết hơn, các sản phẩm này có vẻ khác nhau rất nhiều:

  • Kinesis đảm bảo đặt hàng bên trong phân đoạn, trong khi về đặt hàng Pub/Sub là trên cơ sở tốt nhất;
  • Kinesis có tất cả bộ đệm (giới hạn tối đa 7 ngày) có sẵn cho người đọc, có thể sử dụng bù để chọn vị trí bắt đầu đọc, trong khi trên PubSub chỉ các tin nhắn sau khi đăng ký có sẵn để tham gia.

Nếu tôi hiểu đúng, PubSub không thể được coi là tương đương Kinesis. Có lẽ nếu được sử dụng cùng với Google Dataflow? Tôi phải thú nhận rằng tôi vẫn không thể thấy như thế nào.

Vì vậy, PubSub có phải là giải pháp thay thế cho Kinesis không? Nếu không, có một Sản phẩm Google Cloud nào có thể đáp ứng các yêu cầu của tôi không?

Cảm ơn!

+0

Đó cũng là những gì tôi có thể thấy. PubSub + DataFlow (xấp xỉ) không tương đương với Kinesis. Trong khi tôi đã sử dụng Kinesis rộng rãi, tôi không thấy tài liệu hoặc chức năng như vậy xung quanh pubsub và Dataflow. Chúng có thể hơi xa. – Kannaiyan

+0

Bài đăng tại https://cloud.google.com/blog/big-data/2016/09/apache-kafka-for-gcp-users-connectors-for-pubsub-dataflow-and-bigquery vừa giúp tôi một chút bối rối hơn. Nó ngụ ý (tinh tế) rằng PubSub là một thay thế cho Kafka, nhưng tôi vẫn không thấy khả năng tương tự. – Renan

+0

Với Pub/Sub, bạn cần thêm thông tin đặt hàng vào tải trọng của tin nhắn. Điều này có thể hoặc không có thể là một vấn đề với ứng dụng của bạn. – gdahlm

Trả lời

3

Một giải pháp khá phức tạp nhưng nó có thể giúp:

  • đẩy sự kiện của bạn bằng pub/sub đến một chủ đề duy nhất. Tại thời điểm này họ sẽ không có thứ tự.
  • tạo đường dẫn luồng dữ liệu đám mây đọc từ chủ đề phụ/pub. Làm cho nó ghi trực tuyến vào truy vấn lớn trên đám mây, thêm dấu thời gian vào mỗi mục nhập bảng.
  • giúp bạn đọc truy vấn trên bảng bq, đặt hàng theo dấu thời gian để có thứ tự nhất quán. Bạn có thể sử dụng ROW_NUMBER làm khoản bù trừ của mình.

Hy vọng điều đó sẽ hữu ích.

+0

Có lẽ là công việc, nhưng như bạn đã nói đó là rất nhiều công việc. Tại thời điểm này tôi muốn cài đặt Kafka trên các trường hợp tính toán. Nhưng cảm ơn bạn đã đề xuất. – Renan

+0

@Renan nếu bạn không muốn thực hiện một trong các [phương pháp được đề xuất để đặt hàng thư trong Pub/Sub] (https://cloud.google.com/pubsub/docs/subscriber#at-least-once-delivery), so với cách tiếp cận lưu trữ [Kafka trên Compute Engine] (https://pantheon.corp.google.com/launcher/details/bitnami-launchpad/kafka?project=javatester-1002&organizationId=433637338589) thực sự là lựa chọn tốt nhất của bạn.Lưu ý rằng các kỹ sư Pub/Sub đã làm việc chăm chỉ để thực hiện đặt hàng thông báo, nhưng hiện tại không có ETA cho tính năng này. – Jordan

+1

@Jordan Tôi có thể thử thực hiện một trong các phương pháp đặt hàng. Nhưng những gì tôi nhớ nhất là khả năng bắt đầu đọc bộ đệm từ một bộ đệm, được biết đến, được bù đắp (bị giới hạn bởi tính khả dụng tối đa là 7 ngày nếu tôi nhớ chính xác). Đó là sự hiểu biết của tôi rằng trong PubSub tôi chỉ có thể nhận được các tin nhắn được đăng sau khi đăng ký của tôi, tôi không thể đọc các tin nhắn trước đó. Tôi có thể cập nhật câu hỏi của mình để cung cấp nhiều thông tin cơ bản hơn nếu bạn cho rằng nó sẽ giúp xây dựng giải pháp Google Cloud 100%. Cảm ơn! – Renan

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