Thông tin chung

Câu hỏi: Amazon Kinesis Data Streams là gì?

Amazon Kinesis Data Streams cho phép bạn xây dựng ứng dụng tùy chỉnh để xử lý hoặc phân tích luồng dữ liệu nhằm đáp ứng các nhu cầu chuyên dụng. Bạn có thể liên tục thêm nhiều loại dữ liệu khác nhau chẳng hạn như luồng nhấp chuột, nhật ký ứng dụng và mạng xã hội vào luồng dữ liệu Amazon Kinesis từ hàng trăm nghìn nguồn. Trong vài giây, dữ liệu sẽ sẵn sàng để các ứng dụng Amazon Kinesis của bạn đọc và xử lý từ luồng.

Câu hỏi: Amazon Kinesis Data Streams thay tôi quản lý những gì?

Amazon Kinesis Data Streams quản lý cơ sở hạ tầng, lưu trữ, kết nối mạng và cấu hình cần thiết để truyền phát dữ liệu ở cấp độ thông lượng dữ liệu của bạn. Bạn không cần phải lo lắng về việc cung cấp, triển khai, bảo trì liên tục phần cứng, phần mềm hay các dịch vụ khác cho luồng dữ liệu. Ngoài ra, Amazon Kinesis Data Streams còn sao chép dữ liệu đồng bộ trên ba vùng sẵn sàng, nhờ đó mang đến độ sẵn sàng và độ bền dữ liệu cao.

Câu hỏi: Amazon Kinesis Data Streams giúp tôi làm những gì?

Amazon Kinesis Data Streams hữu ích cho việc di chuyển nhanh dữ liệu từ nguồn tạo dữ liệu rồi xử lý dữ liệu liên tục, cũng như để chuyển đổi dữ liệu trước khi phát tới kho dữ liệu, chạy các số liệu và phân tích trong thời gian thực hoặc rút ra các luồng dữ liệu phức tạp hơn để xử lý thêm. Sau đây là các trường hợp điển hình để sử dụng Amazon Kinesis Data Streams:

  • Thu thập nguồn cấp dữ liệu và nhật ký nhanh hơn: Thay vì phải chờ đợi để đủ lô dữ liệu, bạn có thể để các nguồn tạo dữ liệu đẩy dữ liệu tới luồng dữ liệu Amazon Kinesis ngay khi dữ liệu được tạo ra, nhờ đó tránh mất dữ liệu khi xảy ra lỗi tại nguồn tạo dữ liệu. Ví dụ: nhật ký hệ thống và ứng dụng có thể liên tục được thêm vào luồng dữ liệu và sẵn sàng để xử lý trong vòng vài giây.
  • Số liệu và báo cáo trong thời gian thực: Bạn có thể trích xuất số liệu và tạo báo cáo từ luồng dữ liệu Amazon Kinesis trong thời gian thực. Ví dụ: ứng dụng Amazon Kinesis có thể xử lý số liệu và báo cáo tới hệ thống cũng như nhật ký ứng dụng khi dữ liệu đang truyền phát vào, thay vì phải đợi nhận các lô dữ liệu.
  • Phân tích dữ liệu trong thời gian thực: Với Amazon Kinesis Data Streams, bạn có thể chạy phân tích dữ liệu truyền phát trong thời gian thực. Ví dụ: bạn có thể thêm các luồng nhấp chuột vào luồng dữ liệu Amazon Kinesis và để ứng dụng Amazon Kinesis chạy phân tích trong thời gian thực, cho phép bạn thu được thông tin chuyên sâu về dữ liệu theo quy mô chỉ trong vài phút thay vì hàng giờ hoặc hàng ngày.
  • Xử lý luồng phức tạp: Bạn có thể tạo Đồ thị có hướng phi chu trình (DAG) của các ứng dụng và luồng dữ liệu Amazon Kinesis. Trong trường hợp này, một hoặc nhiều ứng dụng Amazon Kinesis có thể thêm dữ liệu vào luồng dữ liệu Amazon Kinesis khác để xử lý thêm, từ đó cho phép xử lý luồng theo các giai đoạn liên tục.

Câu hỏi: Làm thế nào để sử dụng Amazon Kinesis Data Streams?

Sau khi đăng ký Amazon Web Services, bạn có thể bắt đầu sử dụng Amazon Kinesis Data Streams bằng cách:

Câu hỏi: Amazon Kinesis Data Streams có những giới hạn gì?

Thông lượng của luồng dữ liệu Amazon Kinesis được thiết kế để mở rộng quy mô không giới hạn thông qua việc tăng số lượng phân đoạn trong một luồng dữ liệu. Tuy nhiên, khi sử dụng Amazon Kinesis Data Streams, bạn cần nhớ một số giới hạn nhất định:

  • Theo mặc định, bạn có thể truy cập các Bản ghi của luồng trong tối đa 24 giờ tính từ thời điểm bản ghi được thêm vào luồng. Bạn có thể nâng giới hạn này lên đến 7 ngày bằng cách bật tính năng lưu giữ dữ liệu kéo dài.
  • Kích thước tối đa của blob dữ liệu (dữ liệu thực trước khi mã hóa Base64) trong một bản ghi là 1 megabyte (MB).
  • Mỗi phân đoạn có thể hỗ trợ lên đến 1000 bản ghi PUT trên giây.

Để biết thêm thông tin về các giới hạn cấp độ API khác, tham khảo Các giới hạn đối với Amazon Kinesis Data Streams

Câu hỏi: Amazon Kinesis Data Streams khác biệt như thế nào so với Amazon SQS?

Amazon Kinesis Data Streams cho phép xử lý truyền phát dữ liệu lớn trong thời gian thực. Dịch vụ này cung cấp tính năng sắp xếp thứ tự bản ghi cũng như khả năng đọc và/hoặc phát lại các bản ghi theo cùng thứ tự tới nhiều ứng dụng Amazon Kinesis. Amazon Kinesis Client Library (KCL) sẽ phân phối tất cả các bản ghi dành cho một khóa phân vùng cụ thể tới cùng một trình xử lý bản ghi, qua đó giúp bạn dễ dàng hơn trong việc xây dựng các ứng dụng đọc từ cùng một luồng dữ liệu Amazon Kinesis (ví dụ: để thực hiện việc đếm, tập hợp và lọc).

Amazon Simple Queue Service (Amazon SQS) cung cấp hàng đợi lưu trữ đáng tin cậy và có quy mô linh hoạt để lưu trữ tin nhắn khi chúng di chuyển giữa các máy tính. Amazon SQS cho phép bạn dễ dàng di chuyển dữ liệu giữa các thành phần ứng dụng phân tán và giúp bạn xây dựng ứng dụng trong đó các tin nhắn được xử lý độc lập (với ngữ nghĩa ack/fail ở cấp độ tin nhắn), chẳng hạn như các quy trình công việc tự động.

Câu hỏi: Tôi nên sử dụng Amazon Kinesis Data Streams khi nào và nên sử dụng Amazon SQS khi nào?

Bạn nên sử dụng Amazon Kinesis Data Streams trong những trường hợp có yêu cầu tương tự như sau:

  • Định tuyến các bản ghi liên quan tới cùng một trình xử lý bản ghi (như trong truyền phát MapReduce). Ví dụ: việc kiểm đếm và tổng hợp sẽ đơn giản hơn khi định tuyến tất cả các bản ghi cho cùng một khóa nhất định đến cùng một trình xử lý bản ghi.
  • Sắp xếp thứ tự bản ghi. Ví dụ: bạn muốn truyền dữ liệu nhật ký từ máy chủ lưu trữ ứng dụng đến máy chủ xử lý/lưu trữ mà vẫn giữ nguyên thứ tự của các báo cáo nhật ký.
  • Khả năng cho phép nhiều ứng dụng tiêu thụ đồng thời cùng một luồng. Ví dụ: bạn có một ứng dụng cập nhật bảng thông tin trong thời gian thực và một ứng dụng khác lưu trữ dữ liệu vào Amazon Redshift. Bạn muốn cả hai ứng dụng tiêu thụ dữ liệu từ cùng một luồng đồng thời và độc lập.
  • Khả năng tiêu thụ các bản ghi theo cùng thứ tự trong vài giờ sau đó. Ví dụ: bạn có một ứng dụng thanh toán và một ứng dụng kiểm toán chạy sau ứng dụng thanh toán vài giờ. Vì Amazon Kinesis Data Streams lưu trữ dữ liệu trong thời gian lên đến 7 ngày nên bạn có thể chạy ứng dụng kiểm toán sau ứng dụng thanh toán lên đến 7 ngày.

Bạn nên sử dụng Amazon SQS trong những trường hợp có yêu cầu tương tự như sau:

  • Ngữ nghĩa gửi tin nhắn (chẳng hạn như ack/fail ở cấp độ tin nhắn) và hết thời gian chờ có khả năng xem được. Ví dụ: bạn có hàng đợi các mục công việc và muốn theo dõi quá trình hoàn tất thành công của từng mục một cách độc lập. Amazon SQS theo dõi ack/fail, vì thế ứng dụng không phải duy trì điểm kiểm tra/con trỏ cố định. Amazon SQS sẽ xóa các thông điệp đã được xác nhận và phân phối lại các thông điệp bị lỗi sau khi hết thời gian chờ có khả năng xem được đã cấu hình.
  • Độ trễ tin nhắn riêng. Ví dụ: bạn có hàng đợi tác vụ và cần lập lịch các tác vụ có độ trễ riêng. Với Amazon SQS, bạn có thể cấu hình từng tin nhắn có độ trễ lên đến 15 phút.
  • Tăng linh hoạt khả năng chạy đồng thời/thông lượng ở thời gian đọc. Ví dụ: bạn có một hàng đợi công việc và muốn thêm nhiều trình đọc đến khi hết tồn đọng. Với Amazon Kinesis Data Streams, bạn có thể mở rộng quy mô tới đủ số lượng phân đoạn (tuy nhiên, hãy lưu ý rằng bạn sẽ cần cung cấp đủ số phân đoạn từ trước).
  • Tận dụng khả năng của Amazon SQS để thay đổi quy mô một cách minh bạch. Ví dụ: bạn lưu bộ đệm các yêu cầu và các thay đổi về tải do các đợt tăng đột biến tải không thường xuyên hoặc sự tăng trưởng tự nhiên trong hoạt động kinh doanh. Vì mỗi yêu cầu đã lưu bộ đệm có thể được xử lý độc lập nên Amazon SQS có thể thay đổi quy mô một cách minh bạch để xử lý tải mà không cần cung cấp hướng dẫn từ bạn.

Khái niệm chính

Câu hỏi: Phân đoạn là gì?

Phân đoạn là đơn vị thông lượng cơ sở của một luồng dữ liệu Amazon Kinesis. Một phân đoạn cung cấp công suất đầu vào dữ liệu 1MB/giây và đầu ra dữ liệu 2MB/giây. Mỗi phân đoạn có thể hỗ trợ lên đến 1000 bản ghi PUT trên giây. Bạn sẽ chỉ định số lượng phân đoạn cần thiết khi tạo luồng dữ liệu. Ví dụ: bạn có thể tạo luồng dữ liệu có hai phân đoạn. Luồng dữ liệu này có thông lượng đầu vào dữ liệu 2MB/giây và đầu ra dữ liệu 4MB/giây và cho phép lên đến 2000 bản ghi PUT trên giây. Bạn có thể theo dõi số liệu ở cấp độ phân đoạn trong Amazon Kinesis Data Streams cũng như thêm hoặc loại bỏ phân đoạn khỏi luồng dữ liệu một cách linh hoạt khi thông lượng dữ liệu thay đổi bằng cách chia lại phân đoạn luồng dữ liệu.

Câu hỏi: Bản ghi là gì?

Bản ghi là đơn vị dữ liệu được lưu trữ trong luồng dữ liệu Amazon Kinesis. Bản ghi bao gồm số trình tự, khóa phân vùng và blob dữ liệu. Blob dữ liệu là dữ liệu cần quan tâm mà nguồn tạo dữ liệu thêm vào luồng dữ liệu. Kích thước tối đa của blob dữ liệu (dữ liệu thực trước khi mã hóa Base64) là 1 megabyte (MB).

Câu hỏi: Khóa phân vùng là gì?

Khóa phân vùng dùng để cách ly và định tuyến các bản ghi tới các phân đoạn khác nhau trong luồng dữ liệu. Khóa phân vùng do nguồn tạo dữ liệu chỉ định khi thêm dữ liệu vào luồng dữ liệu Amazon Kinesis. Ví dụ: Giả sử bạn có luồng dữ liệu gồm hai phân đoạn (phân đoạn 1 và phân đoạn 2). Bạn có thể cấu hình nguồn tạo dữ liệu để sử dụng hai khóa phân vùng (khóa A và khóa B) sao cho tất cả các bản ghi có khóa A được thêm vào phân đoạn 1 và tất cả các bản ghi có khóa B được thêm vào phân đoạn 2.

Câu hỏi: Số trình tự là gì?

Số trình tự là một mã định danh duy nhất cho mỗi bản ghi. Số trình tự được Amazon Kinesis ấn định khi nguồn tạo dữ liệu gọi thao tác PutRecord hoặc PutRecords để thêm dữ liệu vào luồng dữ liệu Amazon Kinesis. Số trình tự cho cùng một khóa phân vùng thường tăng lên theo thời gian; thời gian giữa các yêu cầu PutRecord hoặc PutRecords càng lâu thì số trình tự càng lớn.

Tạo luồng dữ liệu

Câu hỏi: Làm thế nào để tạo Amazon Kinesis Data Streams?

Sau khi đăng ký Amazon Web Services, bạn có thể tạo luồng dữ liệu Amazon Kinesis thông qua thao tác trên Bảng điều khiển quản lý Amazon Kinesis hoặc CreateStream.

Câu hỏi: Làm thế nào để quyết định thông lượng của luồng dữ liệu Amazon Kinesis?

Số lượng phân đoạn trong luồng dữ liệu quyết định thông lượng của luồng dữ liệu Amazon Kinesis. Thực hiện theo các bước dưới đây để ước tính số lượng phân đoạn ban đầu cần thiết cho luồng dữ liệu. Lưu ý rằng bạn có thể điều chỉnh linh hoạt số lượng phân đoạn trong luồng dữ liệu thông qua thao tác chia lại phân đoạn.

  1. Ước tính kích thước trung bình của bản ghi được ghi vào luồng dữ liệu tính theo kilobyte (KB), được làm tròn tới 1 KB gần nhất (average_data_size_in_KB)
  2. Ước tính số lượng bản ghi được ghi vào luồng dữ liệu trên mỗi giây. (number_of_records_per_second)
  3. Quyết định số lượng ứng dụng Amazon Kinesis tiêu thụ dữ liệu đồng thời và độc lập từ luồng dữ liệu. (number_of_consumers)
  4. Tính băng thông ghi đi vào theo KB (incoming_write_bandwidth_in_KB), bằng average_data_size_in_KB nhân với number_of_records_per_seconds.
  5. Tính băng thông đọc đi ra theo KB (outgoing_read_bandwidth_in_KB), bằng incoming_write_bandwidth_in_KB nhân với number_of_consumers.

Sau đó, bạn có thể tính số lượng phân đoạn (number_of_shards) ban đầu cần thiết cho luồng dữ liệu theo công thức sau:

number_of_shards = max (incoming_write_bandwidth_in_KB/1000, outgoing_read_bandwidth_in_KB/2000)

Câu hỏi: Thông lượng tối thiểu mà tôi có thể yêu cầu cho luồng dữ liệu Amazon Kinesis là bao nhiêu?

Thông lượng của luồng dữ liệu Amazon Kinesis thay đổi quy mô theo đơn vị phân đoạn. Một phân đoạn đơn lẻ là thông lượng nhỏ nhất của luồng dữ liệu, cung cấp đầu vào dữ liệu 1MB/giây và đầu ra dữ liệu 2MB/giây.

Câu hỏi: Thông lượng tối đa mà tôi có thể yêu cầu cho luồng dữ liệu Amazon Kinesis là bao nhiêu?

Thông lượng của luồng dữ liệu Amazon Kinesis được thiết kế để thay đổi quy mô không giới hạn. Theo mặc định, mỗi tài khoản có thể cung cấp 10 phân đoạn trên mỗi khu vực. Bạn có thể sử dụng mẫu đăng ký giới hạn Amazon Kinesis Data Streams để yêu cầu nhiều hơn 10 phân đoạn trong một khu vực.

Câu hỏi: Kích thước bản ghi có thể ảnh hưởng như thế nào tới thông lượng của luồng dữ liệu Amazon Kinesis?

Một phân đoạn cung cấp tốc độ đầu vào dữ liệu 1MB/giây và hỗ trợ lên đến 1000 bản ghi PUT trên giây. Do đó, nếu kích thước bản ghi nhỏ hơn 1KB, tốc độ đầu vào dữ liệu thực tế của phân đoạn sẽ thấp hơn 1MB/giây, bị giới hạn bởi số lượng tối đa bản ghi PUT trên giây.

Thêm dữ liệu vào luồng dữ liệu Kinesis

Câu hỏi: Làm thế nào để thêm dữ liệu vào luồng dữ liệu Amazon Kinesis?

Bạn có thể thêm dữ liệu vào luồng dữ liệu Amazon Kinesis thông qua thao tác PutRecordPutRecords, Amazon Kinesis Producer Library (KPL), hoặc Amazon Kinesis Agent.

Câu hỏi: Giữa PutRecord và PutRecords có sự khác biệt gì?

Thao tác PutRecord cho phép một bản ghi dữ liệu đơn lẻ trong một lệnh gọi API và thao tác PutRecords cho phép nhiều bản ghi dữ liệu trong một lệnh gọi API. Để biết thêm thông tin về thao tác PutRecord và PutRecords, tham khảo PutRecordPutRecords.

Câu hỏi: Amazon Kinesis Producer Library (KPL) là gì?

Amazon Kinesis Producer Library (KPL) là thư viện dễ sử dụng và có cấu hình linh hoạt cao giúp bạn đưa dữ liệu vào luồng dữ liệu Amazon Kinesis. KPL có giao diện đơn giản, không đồng bộ và đáng tin cậy, cho phép bạn nhanh chóng đạt được thông lượng nguồn tạo dữ liệu cao với lượng tài nguyên máy khách tối thiểu.

Câu hỏi: Tôi có thể sử dụng ngôn ngữ lập trình hay nền tảng nào để truy cập Amazon Kinesis API?

Amazon Kinesis API có sẵn trên các Amazon Web Services SDK. Để xem danh sách ngôn ngữ lập trình hoặc nền tảng dành cho các Amazon Web Services SDK, tham khảo Công cụ dành cho Amazon Web Services.

Câu hỏi: Amazon Kinesis Producer Library (KPL) có sẵn bằng ngôn ngữ lập trình nào?

Phần lõi của Amazon Kinesis Producer Library (KPL) được xây dựng bằng mô-đun C++ và có thể được biên soạn để làm việc trên bất kỳ nền tảng nào có trình biên soạn C++ mới. Thư viện hiện có sẵn trên giao diện Java. Chúng tôi đang tìm cách bổ sung hỗ trợ cho các ngôn ngữ lập trình khác.

Câu hỏi: Amazon Kinesis Agent là gì?

Amazon Kinesis Agent là ứng dụng Java dựng sẵn, mở ra cách thức dễ dàng để thu thập và gửi dữ liệu tới luồng dữ liệu Amazon Kinesis của bạn. Bạn có thể cài đặt ứng dụng đại diện này trên các môi trường máy chủ dựa trên Linux như máy chủ web, máy chủ nhật ký và máy chủ cơ sở dữ liệu. Ứng dụng đại diện này giám sát các tệp nhất định và liên tục gửi dữ liệu đến luồng dữ liệu. Để biết thêm thông tin, xem Ghi bằng các ứng dụng đại diện.

Câu hỏi: Amazon Kinesis Agent hỗ trợ những nền tảng nào?

Amazon Kinesis Agent hiện hỗ trợ Amazon Linux hoặc Red Hat Enterprise Linux.

Câu hỏi: Tôi tải Amazon Kinesis Agent ở đâu?

Bạn có thể tải xuống và cài đặt Amazon Kinesis Agent bằng lệnh và liên kết sau đây:

Trên Amazon Linux: sudo yum install –y aws-kinesis-agent

Trên Red Hat Enterprise Linux: sudo yum install –y https://s3.amazonaws.com/streaming-data-agent/aws-kinesis-agent-latest.amzn1.noarch.rpm

Từ GitHub: awlabs/amazon-kinesis-agent

Câu hỏi: Làm thế nào để sử dụng Amazon Kinesis Agent?

Sau khi cài đặt Amazon Kinesis Agent trên máy chủ, bạn hãy cấu hình để ứng dụng đại diện này theo dõi các tệp nhất định trên ổ đĩa rồi liên tục gửi dữ liệu mới đến luồng dữ liệu Amazon Kinesis. Để biết thêm thông tin, xem Ghi bằng các ứng dụng đại diện.

Câu hỏi: Điều gì sẽ xảy ra nếu vượt quá giới hạn công suất của Amazon Kinesis trong khi nguồn tạo dữ liệu thêm dữ liệu vào luồng dữ liệu?

Số lượng phân đoạn trong luồng dữ liệu quyết định công suất của luồng dữ liệu Amazon Kinesis. Giới hạn có thể bị vượt quá do thông lượng dữ liệu hoặc số lượng bản ghi PUT. Khi vượt quá giới hạn công suất, lệnh gọi đặt dữ liệu bị từ chối với lỗi ProvisionedThroughputExceeded (Đã vượt quá thông lượng được cung cấp). Nếu nguyên nhân là do tốc độ dữ liệu đầu vào của luồng dữ liệu tăng tạm thời, thao tác thử lại do nguồn tạo dữ liệu thực hiện cuối cùng sẽ hoàn tất các yêu cầu. Nếu nguyên nhân là do tốc độ dữ liệu đầu vào của luồng dữ liệu tăng kéo dài, bạn nên tăng số lượng phân đoạn trong luồng dữ liệu để cung cấp đủ công suất cho các lệnh gọi đặt dữ liệu luôn thành công. Trong cả hai trường hợp, số liệu của Amazon CloudWatch đều cho phép bạn tìm hiểu về thay đổi tốc độ dữ liệu đầu vào của luồng dữ liệu và sự xuất hiện của lỗi ProvisionedThroughputExceeded.

Câu hỏi: Dữ liệu nào được kiểm đếm so với thông lượng dữ liệu của luồng dữ liệu Amazon Kinesis trong khi có lệnh gọi PutRecord hoặc PutRecords?

Blob dữ liệu, khóa phân vùng và tên luồng dữ liệu là các tham số bắt buộc của lệnh gọi PutRecord hoặc PutRecords. Kích thước của blob dữ liệu (trước khi mã hóa Base64) và khóa phân vùng sẽ được kiểm đếm so với thông lượng dữ liệu của luồng dữ liệu Amazon Kinesis do số lượng phân đoạn trong luồng dữ liệu quyết định.

Phân xuất tăng cường

Câu hỏi: Phân xuất tăng cường là gì?

Phân xuất tăng cường là tính năng tùy chọn cho các ứng dụng tiêu thụ Kinesis Data Streams, cung cấp các đường dẫn nối có thông lượng 2 MB/giây giữa các ứng dụng tiêu thụ và các phân đoạn. Nhờ đó, các khách hàng có thể thay đổi số lượng ứng dụng tiêu thụ đang đọc đồng thời từ một luồng dữ liệu mà vẫn duy trì được hiệu suất cao.

Câu hỏi: Ứng dụng tiêu thụ sử dụng phân xuất tăng cường như thế nào?

Trước tiên, ứng dụng tiêu thụ phải tự đăng ký với dịch vụ Kinesis Data Streams. Theo mặc định, việc đăng ký ứng dụng tiêu thụ sẽ kích hoạt phân xuất tăng cường. Nếu bạn đang sử dụng KCL, KCL phiên bản 2.x sẽ tự động đảm nhiệm việc đăng ký các ứng dụng tiêu thụ và sử dụng tên ứng dụng KCL làm tên ứng dụng tiêu thụ. Khi đã đăng ký, tất cả các ứng dụng tiêu thụ đã đăng ký sẽ được cung cấp các đường dẫn nối riêng với thông lượng có phân xuất tăng cường hợp lý. Khi đó, ứng dụng tiêu thụ sử dụng HTTP/2 SubscribeToShard API để truy xuất dữ liệu bên trong các đường dẫn nối thông lượng này. HTTP/1 GetRecords API hiện không hỗ trợ phân xuất tăng cường nên bạn sẽ cần nâng cấp lên KCL 2.x hoặc đăng ký ứng dụng tiêu thụ theo cách khác và để ứng dụng tiêu thụ gọi SubscribeToShard API.

Câu hỏi: Ứng dụng tiêu thụ sử dụng phân xuất tăng cường như thế nào?

Các ứng dụng tiêu thụ sử dụng phân xuất tăng cường bằng cách truy xuất dữ liệu bằng SubscribeToShard API. Tên của ứng dụng tiêu thụ đã đăng ký được sử dụng trong SubscribeToShard API, nhờ đó tận dụng được lợi ích của phân xuất tăng cường được cung cấp cho ứng dụng tiêu thụ đã đăng ký.

Câu hỏi: Tôi nên sử dụng phân xuất tăng cường khi nào?
Bạn nên sử dụng phân xuất tăng cường nếu bạn có, hoặc dự kiến sẽ có, nhiều ứng dụng tiêu thụ cùng truy xuất đồng thời từ một luồng, hoặc nếu bạn có ít nhất một ứng dụng tiêu thụ bắt buộc phải sử dụng SubscribeToShard API để cung cấp tốc độ phân phối dữ liệu dưới 200ms giữa các nguồn tạo dữ liệu và ứng dụng tiêu thụ.

Câu hỏi: Tôi có thể có cả ứng dụng tiêu thụ sử dụng và ứng dụng tiêu thụ khác không sử dụng phân xuất tăng cường hay không?

Có, bạn có thể có cùng lúc cả ứng dụng tiêu thụ sử dụng phân xuất tăng cường và ứng dụng tiêu thụ khác không sử dụng phân xuất tăng cường. Việc sử dụng phân xuất tăng cường không làm ảnh hưởng đến giới hạn số lượng phân đoạn đối với lượng sử dụng GetRecords thông thường.

Câu hỏi: Có giới hạn số lượng ứng dụng tiêu thụ sử dụng phân xuất tăng cường trên một luồng nhất định hay không?

Giới hạn mặc định là 5 ứng dụng tiêu thụ sử dụng phân xuất tăng cường trên một luồng dữ liệu. Nếu bạn cần nhiều hơn 5, vui lòng gửi yêu cầu tăng giới hạn thông qua AWS Support. Lưu ý rằng bạn có thể có nhiều hơn tổng cộng 5 ứng dụng tiêu thụ cùng đọc từ một luồng bằng cách để 5 ứng dụng tiêu thụ sử dụng phân xuất tăng cường và các ứng dụng tiêu thụ khác không sử dụng phân xuất tăng cường cùng lúc.

Câu hỏi: Ứng dụng tiêu thụ đăng ký để sử dụng phân xuất tăng cường và HTTP/2 SubscribeToShard API bằng cách nào?

Chúng tôi khuyến cáo sử dụng KCL 2.x, thư viện này sẽ tự động đăng ký ứng dụng tiêu thụ và sử dụng cả phân xuất tăng cường lẫn HTTP/2 SubscribeToShard API. Hoặc bạn có thể đăng ký thủ công ứng dụng tiêu thụ bằng cách sử dụng RegisterStreamConsumer API, sau đó có thể sử dụng SubscribeToShard API với tên của ứng dụng tiêu thụ mà bạn đã đăng ký.

Câu hỏi: Có mất phí sử dụng phân xuất tăng cường không?

Có, ngoài phí truy xuất dữ liệu trên mỗi GB truy xuất, còn có phí theo giờ theo nhu cầu trên mỗi tổ hợp phân đoạn trong luồng với ứng dụng tiêu thụ (giờ ứng dụng tiêu thụ-phân đoạn) đã đăng ký sử dụng phân xuất tăng cường. Tham khảo trang giá của Kinesis Data Streams để biết thêm chi tiết.

Câu hỏi: Giờ ứng dụng tiêu thụ-phân đoạn được tính như thế nào?

Một giờ ứng dụng tiêu thụ-phân đoạn được tính bằng cách nhân số lượng ứng dụng tiêu thụ trong luồng đã đăng ký với số lượng phân đoạn trong luồng. Ví dụ: nếu một giờ ứng dụng tiêu thụ-phân đoạn có phí 0,015 USD thì trong luồng dữ liệu gồm 10 phân đoạn, ứng dụng tiêu thụ sử dụng phân xuất tăng cường này sẽ có thể đọc từ 10 phân đoạn, nên sẽ chịu mức phí giờ ứng dụng tiêu thụ-phân đoạn là 0,15 USD trên giờ (1 ứng dụng tiêu thụ x 10 phân đoạn x 0,015 USD trên giờ ứng dụng tiêu thụ-phân đoạn). Nếu có hai ứng dụng tiêu thụ được đăng ký đồng thời sử dụng phân xuất tăng cường, tổng mức phí giờ ứng dụng tiêu thụ-phân đoạn sẽ là 0,3 USD trên giờ (2 ứng dụng tiêu thụ x 10 phân đoạn x 0,015 USD).

Câu hỏi: Hóa đơn giờ ứng dụng tiêu thụ-phân đoạn cho phân xuất tăng cường có tự động tính theo tỷ lệ nếu tôi kết thúc hoặc bắt đầu ứng dụng trong chưa đầy một giờ hay không?

Có, bạn sẽ chỉ phải thanh toán cho lượng thời gian đã chia tỷ lệ mà ứng dụng tiêu thụ đã đăng ký sử dụng phân xuất tăng cường.

Câu hỏi: Truy xuất dữ liệu phân xuất tăng cường có cách tính phí như thế nào?

Bạn trả một mức phí thấp theo GB được đo trên mỗi byte dữ liệu do ứng dụng tiêu thụ truy xuất bằng phân xuất tăng cường. Không có làm tròn dữ liệu thực hay mức phân phối tối thiểu.

Câu hỏi: Tôi có cần thay đổi nguồn tạo dữ liệu hay luồng dữ liệu của mình để sử dụng phân xuất tăng cường hay không?

Không, bạn có thể kích hoạt phân xuất tăng cường mà không làm ảnh hưởng đến các nguồn tạo dữ liệu hay luồng dữ liệu.

Đọc và xử lý dữ liệu từ luồng dữ liệu Kinesis

Câu hỏi: Ứng dụng Amazon Kinesis là gì?

Ứng dụng Amazon Kinesis là ứng dụng tiêu thụ dữ liệu, đọc và xử lý dữ liệu từ luồng dữ liệu Amazon Kinesis. Bạn có thể xây dựng ứng dụng bằng Amazon Kinesis Data Analytics, Amazon Kinesis API hoặc Amazon Kinesis Client Library (KCL).

Câu hỏi: Amazon Kinesis Client Library (KCL) là gì?

Amazon Kinesis Client Library (KCL) dành cho Java | Python | Ruby | Node.js | .NET là thư viện dựng sẵn giúp bạn dễ dàng xây dựng ứng dụng Amazon Kinesis để đọc và xử lý dữ liệu từ luồng dữ liệu Amazon Kinesis.

KCL giải quyết được các vấn đề phức tạp như tùy ứng với những thay đổi về khối lượng luồng dữ liệu, cân bằng tải cho luồng dữ liệu, điều phối các dịch vụ phân tán và xử lý dữ liệu với khả năng chịu lỗi cao. KCL cho phép bạn tập trung vào logic nghiệp vụ trong khi xây dựng ứng dụng. KCL 2.x hỗ trợ cả HTTP/1 GetRecords API và HTTP/2 SubscribeToShard API với phân xuất tăng cường để truy xuất dữ liệu từ luồng. KCL 1.x không hỗ trợ SubscribeToShard API hoặc phân xuất tăng cường.

Câu hỏi: Làm thế nào để nâng cấp từ KCL 1.x lên 2.x để sử dụng SubscribeToShard và phân xuất tăng cường?

Tham khảo tài liệu hướng dẫn sử dụng Kinesis Data Streams để tìm hiểu cách nâng cấp từ KCL 1.x lên KCL 2.x.

Câu hỏi: SubscribeToShard API là gì?

SubscribeToShard API là API tạo luồng hiệu năng cao giúp đẩy dữ liệu từ các phân đoạn đến các ứng dụng tiêu thụ qua một kết nối liên tục mà không cần tới chu trình yêu cầu từ ứng dụng khách. SubscribeToShard API sử dụng giao thức HTTP/2 để phân phối dữ liệu đến các ứng dụng tiêu thụ đã đăng ký bất cứ khi nào dữ liệu mới đến phân đoạn, thường là trong vòng 70ms, mang tới tốc độ phân phối nhanh hơn ~65% so với GetRecords API. Ứng dụng tiêu thụ sẽ được hưởng tốc độ phân phối nhanh ngay cả khi có nhiều ứng dụng tiêu thụ đã đăng ký cùng đọc từ một phân đoạn.

Câu hỏi: Tôi có thể sử dụng SubscribeToShard mà không dùng phân xuất tăng cường hay không?

Không, SubscribeToShard bắt buộc phải sử dụng phân xuất tăng cường, điều này đồng nghĩa với việc bạn cũng phải đăng ký ứng dụng tiêu thụ với dịch vụ Kinesis Data Streams để có thể sử dụng SubscribeToShard.

Câu hỏi: Kết nối liên tục SubscribeToShard kéo dài trong bao lâu?

Kết nối liên tục này có thể kéo dài lên đến 5 phút.

Câu hỏi: Kinesis Client Library (KCL) có hỗ trợ SubscribeToShard không?

Có, phiên bản 2.x của KCL sử dụng SubscribeToShard và phân xuất tăng cường để truy xuất dữ liệu với hiệu suất cao từ luồng dữ liệu Kinesis.

Câu hỏi: Sử dụng SubscribeToShard có mất thêm phí không?

Không, SubscribeToShard không làm mất thêm phí, nhưng bạn phải sử dụng SubscribeToShard cùng với phân xuất tăng cường vốn đã có phụ phí theo giờ trên mỗi tổ hợp ứng dụng tiêu thụ-phân đoạn và trên mỗi GB dữ liệu mà phân xuất tăng cường phân phối.

Câu hỏi: Tôi có cần sử dụng phân xuất tăng cường nếu muốn dùng SubscribeToShard hay không?

Có, để sử dụng SubscribeToShard, bạn cần đăng ký ứng dụng tiêu thụ và việc đăng ký sẽ kích hoạt phân xuất tăng cường. Theo mặc định, ứng dụng tiêu thụ sẽ tự động sử dụng phân xuất tăng cường khi truy xuất dữ liệu qua SubscribeToShard.

Câu hỏi: Amazon Kinesis Connector Library là gì?

Amazon Kinesis Connector Library là thư viện dựng sẵn giúp bạn dễ dàng tích hợp Amazon Kinesis Data Streams với các dịch vụ AWS khác và các công cụ của bên thứ ba. Bắt buộc phải có Amazon Kinesis Client Library (KCL) dành cho Java | Python | Ruby | Node.js | .NET để sử dụng Amazon Kinesis Connector Library. Phiên bản hiện tại của thư viện này cung cấp các trình kết nối với Amazon DynamoDB, Amazon Redshift, Amazon S3 và Elasticsearch. Thư viện này cũng bao gồm các trình kết nối mẫu thuộc mỗi loại, cùng với các tệp bản dựng Apache Ant để chạy các mẫu.

Câu hỏi: Amazon Kinesis Storm Spout là gì?

Amazon Kinesis Storm Spout là thư viện dựng sẵn giúp bạn dễ dàng tích hợp Amazon Kinesis Data Streams với Apache Storm. Phiên bản hiện tại của Amazon Kinesis Storm Spout tìm nạp dữ liệu từ luồng dữ liệu Amazon Kinesis và gửi dữ liệu theo bộ. Bạn sẽ thêm spout vào mô hình Storm để khai thác Amazon Kinesis Data Streams như một dịch vụ thu thập, lưu trữ và phát lại luồng đáng tin cậy và có quy mô linh hoạt.

Câu hỏi: Amazon Kinesis Client Library (KCL), Amazon Kinesis Connector Library và Amazon Kinesis Storm Spout có sẵn bằng ngôn ngữ lập trình nào?

Amazon Kinesis Client Library (KCL) hiện có sẵn trên Java, Python, Ruby, Node.js và .NET. Amazon Kinesis Connector Library và Amazon Kinesis Storm Spout hiện có sẵn trên Java. Chúng tôi đang tìm cách bổ sung hỗ trợ cho các ngôn ngữ lập trình khác.

Câu hỏi: Tôi có phải sử dụng Amazon Kinesis Client Library (KCL) cho ứng dụng Amazon Kinesis hay không?

Không, bạn cũng có thể sử dụng Amazon Kinesis API để xây dựng ứng dụng Amazon Kinesis. Tuy nhiên, bạn nên sử dụng Amazon Kinesis Client Library (KCL) dành cho Java | Python | Ruby | Node.js | .NET nếu phù hợp, vì thư viện này sẽ thực hiện các tác vụ nặng gắn với quá trình xử lý luồng phân tán, nhờ đó giúp phát triển ứng dụng năng suất hơn.

Câu hỏi: Amazon Kinesis Client Library (KCL) tương tác với ứng dụng Amazon Kinesis như thế nào?

Amazon Kinesis Client Library (KCL) dành cho Java | Python | Ruby | Node.js | .NET hoạt động như một dịch vụ trung gian giữa Amazon Kinesis Data Streams và ứng dụng Amazon Kinesis. KCL sử dụng giao diện IRecordProcessor để giao tiếp với ứng dụng. Ứng dụng của bạn triển khai giao diện này và các lệnh gọi KCL vào mã ứng dụng theo các phương thức trong giao diện này.

Để biết thêm thông tin về xây dựng ứng dụng với KCL, xem Phát triển ứng dụng tiêu thụ cho Amazon Kinesis bằng Amazon Kinesis Client Library.

Câu hỏi: Trình thực hiện và trình xử lý bản ghi do Amazon Kinesis Client Library (KCL) tạo ra là gì?

Ứng dụng Amazon Kinesis có thể có nhiều phiên bản ứng dụng và trình thực hiện là đơn vị xử lý ánh xạ tới từng phiên bản ứng dụng. Trình xử lý bản ghi là đơn vị xử lý giúp xử lý dữ liệu từ một phân đoạn trong luồng dữ liệu Amazon Kinesis. Một trình thực hiện ánh xạ tới một hoặc nhiều trình xử lý bản ghi. Một trình xử lý bản ghi ánh xạ đến một phân đoạn và xử lý bản ghi từ phân đoạn đó.

Khi khởi động, một ứng dụng gọi vào Amazon Kinesis Client Library (KCL) dành cho Java | Python | Ruby | Node.js | .NET để tạo phiên bản một trình thực hiện. Lệnh gọi này cung cấp cho KCL thông tin cấu hình của ứng dụng, như tên luồng dữ liệu và thông tin xác thực AWS. Lệnh gọi này cũng chuyển một tham chiếu đến quá trình triển khai IRecordProcessorFactory. KCL sử dụng factory này để tạo các trình xử lý bản ghi mới khi cần thiết để xử lý dữ liệu từ luồng dữ liệu. KCL giao tiếp với các trình xử lý bản ghi này qua giao diện IRecordProcessor.

Câu hỏi: Amazon Kinesis Client Library (KCL) duy trì theo dõi bản ghi dữ liệu đang được ứng dụng Amazon Kinesis xử lý bằng cách nào?

Amazon Kinesis Client Library (KCL) dành cho Java | Python | Ruby | Node.js | .NET tự động tạo một bảng Amazon DynamoDB cho mỗi ứng dụng Amazon Kinesis để theo dõi và duy trì thông tin về trạng thái như các sự kiện chia lại phân đoạn và các điểm kiểm tra số trình tự. Bảng DynamoDB dùng chung tên với ứng dụng nên bạn cần đảm bảo rằng tên của ứng dụng không xung đột với bất kỳ bảng DynamoDB nào hiện có trong cùng tài khoản trong cùng khu vực.

Tất cả các trình thực hiện liên kết với cùng một tên ứng dụng được giả định là đang làm việc cùng nhau trên cùng một luồng dữ liệu Amazon Kinesis. Nếu bạn chạy thêm một phiên bản của cùng một mã ứng dụng nhưng khác tên ứng dụng, KCL sẽ coi phiên bản thứ hai là ứng dụng tách biệt hoàn toàn cũng đang hoạt động trên cùng một luồng dữ liệu.

Xin lưu ý rằng tài khoản của bạn sẽ bị tính phí liên kết với bảng Amazon DynamoDB bên cạnh phí gắn với Amazon Kinesis Data Streams.

Để biết thêm thông tin về cách KCL theo dõi trạng thái của ứng dụng, xem Theo dõi trạng thái ứng dụng Amazon Kinesis.

Câu hỏi: Làm thế nào để tự động mở rộng quy mô công suất xử lý của ứng dụng Amazon Kinesis bằng Amazon Kinesis Client Library (KCL)?

Bạn có thể tạo nhiều phiên bản ứng dụng Amazon Kinesis và để các phiên bản ứng dụng này chạy trên một tập hợp phiên bản Amazon EC2 nằm trong một nhóm Auto Scaling. Khi xử lý các đợt tăng nhu cầu, phiên bản Amazon EC2 đang chạy phiên bản ứng dụng của bạn sẽ tự động được tạo phiên bản. Amazon Kinesis Client Library (KCL) dành cho Java | Python | Ruby | Node.js | .NET sẽ tạo trình thực hiện cho phiên bản mới này và tự động chuyển các trình xử lý bản ghi từ các phiên bản hiện có bị quá tải sang phiên bản mới.

Câu hỏi: Tại sao lệnh gọi GetRecords trả về kết quả rỗng trong khi luồng dữ liệu Amazon Kinesis của tôi có dữ liệu?

Một nguyên nhân có thể là không có bản ghi tại vị trí mà trình lặp phân đoạn hiện tại chỉ định. Điều này có thể xảy ra ngay cả khi bạn đang sử dụng loại trình lặp phân đoạn TRIM_HORIZON. Luồng dữ liệu Amazon Kinesis là một luồng dữ liệu liên tục. Bạn cần gọi thao tác GetRecords trong một vòng lặp và bản ghi sẽ được trả lại khi trình lặp phân đoạn tiến tới vị trí lưu bản ghi.

Câu hỏi: ApproximateArrivalTimestamp được trả về kết quả gì trong thao tác GetRecords?

Mỗi bản ghi bao gồm một giá trị được gọi là ApproximateArrivalTimestamp. Giá trị này được đặt khi Amazon Kinesis nhận và lưu trữ thành công bản ghi. Nhãn thời gian này có độ chính xác đến từng mili giây và không có đảm bảo về độ chính xác của nhãn thời gian. Ví dụ: các bản ghi trong một phân đoạn hay trên toàn luồng dữ liệu có thể có nhãn thời gian không sử dụng được.

Câu hỏi: Điều gì sẽ xảy ra nếu vượt quá giới hạn công suất của Amazon Kinesis trong khi ứng dụng Amazon Kinesis đọc dữ liệu từ luồng dữ liệu?

Số lượng phân đoạn trong luồng dữ liệu quyết định công suất của luồng dữ liệu Amazon Kinesis. Giới hạn có thể bị vượt quá do thông lượng dữ liệu hoặc số lượng lệnh gọi đọc dữ liệu. Khi vượt quá giới hạn công suất, lệnh gọi đọc dữ liệu bị từ chối với lỗi ProvisionedThroughputExceeded (Đã vượt quá thông lượng được cung cấp). Nếu nguyên nhân là do tốc độ dữ liệu đầu ra của luồng dữ liệu tăng tạm thời, thao tác thử lại do ứng dụng Amazon Kinesis thực hiện cuối cùng sẽ hoàn tất các yêu cầu. Nếu nguyên nhân là do tốc độ dữ liệu đầu ra của luồng dữ liệu tăng kéo dài, bạn nên tăng số lượng phân đoạn trong luồng dữ liệu để cung cấp đủ công suất cho các lệnh gọi đọc dữ liệu luôn thành công. Trong cả hai trường hợp, số liệu của Amazon CloudWatch đều cho phép bạn tìm hiểu về thay đổi tốc độ dữ liệu đầu ra của luồng dữ liệu và sự xuất hiện của lỗi ProvisionedThroughputExceeded.

Quản lý luồng dữ liệu Kinesis

Câu hỏi: Làm thế nào để thay đổi thông lượng của luồng dữ liệu Amazon Kinesis?

Có hai cách để thay đổi thông lượng của luồng dữ liệu. Bạn có thể sử dụng UpdateShardCount API hoặc Bảng điều khiển quản lý AWS để thay đổi số lượng phân đoạn trong luồng dữ liệu, hoặc bạn có thể thay đổi thông lượng của luồng dữ liệu Amazon Kinesis bằng cách điều chỉnh số lượng phân đoạn trong luồng dữ liệu (chia lại phân đoạn).

Câu hỏi: Mất bao lâu để thay đổi thông lượng của luồng dữ liệu Amazon Kinesis bằng cách sử dụng UpdateShardCount hoặc Bảng điều khiển quản lý AWS?

Việc hoàn thành các yêu cầu thay đổi quy mô điển hình thường mất vài phút. Các yêu cầu thay đổi quy mô lớn hơn sẽ mất nhiều thời gian hơn các thay đổi nhỏ.

Câu hỏi: UpdateShardCount có những giới hạn gì?

Để biết thông tin về các giới hạn của UpdateShardCount, xem Tài liệu tham khảo về API dịch vụ Amazon Kinesis Data Streams.

Câu hỏi: Khi tôi thay đổi thông lượng của luồng dữ liệu Amazon Kinesis bằng cách sử dụng UpdateShardCount hoặc bằng cách chia lại phân đoạn, Amazon Kinesis Data Streams có còn khả dụng hay không?

Có. Bạn có thể tiếp tục thêm dữ liệu vào và đọc dữ liệu từ luồng dữ liệu Amazon Kinesis khi đang sử dụng UpdateShardCount hoặc chia lại phân đoạn để thay đổi thông lượng của luồng dữ liệu.

Câu hỏi: chia lại phân đoạn là gì?

Việc chia lại phân đoạn là quy trình dùng để thay đổi quy mô luồng dữ liệu bằng một loạt các thao tác tách hoặc hợp nhất phân đoạn. Trong thao tác tách, một phân đoạn được chia làm hai phân đoạn, do đó làm tăng thông lượng của luồng dữ liệu. Trong thao tác hợp nhất, hai phân đoạn được hợp nhất thành một phân đoạn, do đó làm giảm thông lượng của luồng dữ liệu. Để biết thông tin, xem Chia lại phân đoạn cho luồng dữ liệu trong hướng dẫn dành cho nhà phát triển Amazon Kinesis Data Streams.

Câu hỏi: Tôi có thể chia lại phân đoạn để thay đổi thông lượng của luồng dữ liệu Amazon Kinesis trong thời gian bao lâu và tần suất như thế nào?

Một thao tác chia lại phân đoạn chẳng hạn như tách phân đoạn hoặc hợp nhất phân đoạn thường mất vài giây. Bạn chỉ có thể thực hiện một thao tác chia lại phân đoạn một lúc. Do đó, đối với luồng dữ liệu Amazon Kinesis có một phân đoạn duy nhất thì chỉ mất vài giây để nhân đôi thông lượng bằng cách tách một phân đoạn. Đối với luồng dữ liệu gồm 1000 phân đoạn, sẽ mất khoảng 30000 giây (8,3 giờ) để nhân đôi thông lượng bằng cách tách 1000 phân đoạn. Bạn nên tăng thông lượng của luồng dữ liệu trước khi cần thêm thông lượng.

Câu hỏi: Làm thế nào để thay đổi thời gian lưu giữ của luồng dữ liệu Amazon Kinesis?

Theo mặc định, Amazon Kinesis lưu trữ dữ liệu trong tối đa 24 giờ. Bạn có thể nâng thời gian lưu giữ dữ liệu lên đến 7 ngày bằng cách bật tính năng lưu giữ dữ liệu kéo dài.

Để biết thêm thông tin về cách thay đổi thời gian lưu giữ dữ liệu, xem Thay đổi thời gian lưu giữ dữ liệu.

Câu hỏi: Làm thế nào để giám sát hoạt động và hiệu năng của luồng dữ liệu Amazon Kinesis?

Bảng điều khiển quản lý Amazon Kinesis Data Streams hiển thị các số liệu hoạt động và hiệu suất chính như thông lượng đầu vào và đầu ra dữ liệu của các luồng dữ liệu Amazon Kinesis. Amazon Kinesis Data Streams cũng tích hợp với Amazon CloudWatch để bạn có thể chọn, xem và phân tích số liệu CloudWatch cho các luồng dữ liệu và các phân đoạn trong những luồng dữ liệu đó. Để biết thêm thông tin về số liệu của Amazon Kinesis Data Streams, xem Giám sát Amazon Kinesis Data Streams bằng Amazon CloudWatch.

Xin lưu ý rằng tất cả số liệu ở cấp độ luồng đều miễn phí. Tất cả số liệu ở cấp độ phân đoạn được kích hoạt chịu mức phí theo giá của Amazon CloudWatch.

Câu hỏi: Làm thế nào để quản lý và kiểm soát quyền truy cập luồng dữ liệu Amazon Kinesis?

Amazon Kinesis Data Streams tích hợp với AWS Identity and Access Management (IAM), một dịch vụ cho phép bạn kiểm soát an toàn quyền truy cập vào dịch vụ và tài nguyên của AWS đối với người dùng của bạn. Ví dụ: bạn có thể tạo chính sách chỉ cho phép một nhóm hoặc người dùng cụ thể thêm dữ liệu vào luồng dữ liệu Amazon Kinesis. Để biết thêm thông tin về quản lý và kiểm soát truy cập luồng dữ liệu, xem Kiểm soát truy cập tài nguyên Amazon Kinesis Data Streams thông qua IAM.

Câu hỏi: Làm thế nào để ghi nhật ký lệnh gọi API đã thực hiện đến luồng dữ liệu Amazon Kinesis để phục vụ phân tích bảo mật và giải quyết sự cố hoạt động?

Amazon Kinesis tích hợp với Amazon CloudTrail, một dịch vụ ghi lại lệnh gọi AWS API cho tài khoản của bạn và cung cấp tệp nhật ký tới bạn. Để biết thêm thông tin về ghi nhật ký lệnh gọi API và danh sách các thao tác Amazon Kinesis API được hỗ trợ, xem Ghi nhật ký lệnh gọi Amazon Kinesis API bằng Amazon CloudTrail.

Câu hỏi: Làm thế nào để quản lý hiệu quả các luồng dữ liệu Amazon Kinesis và các khoản phí gắn với các luồng dữ liệu này?

Amazon Kinesis Data Streams cho phép bạn gắn thẻ các luồng dữ liệu Amazon Kinesis để quản lý tài nguyên và chi phí dễ dàng hơn. Thẻ là một nhãn do người dùng xác định được thể hiện dưới dạng một cặp giá trị khóa giúp sắp xếp các tài nguyên AWS. Ví dụ: bạn có thể gắn thẻ các luồng dữ liệu theo các tập hợp đối tượng chi phí để bạn có thể phân loại và theo dõi các khoản phí Amazon Kinesis Data Streams theo các tập hợp đối tượng chi phí. Để biết thêm thông tin về gắn thẻ Amazon Kinesis Data Streams, xem Gắn thẻ Amazon Kinesis Data Streams.

Câu hỏi: Làm thế nào để mô tả cách sử dụng giới hạn phân đoạn hiện tại của mình?

Bạn có thể biết mức sử dụng giới hạn phân đoạn hiện tại đối với một tài khoản bằng cách sử dụng DescribeLimits API. DescribeLimits API sẽ trả về giới hạn phân đoạn và số lượng phân đoạn đang mở trong tài khoản của bạn. Nếu bạn cần nâng giới hạn phân đoạn, vui lòng yêu cầu tăng giới hạn.

Bảo mật

Câu hỏi: Dữ liệu của tôi bảo mật ở mức nào khi tôi sử dụng Kinesis Data Streams?

Kinesis bảo mật theo mặc định. Chỉ chủ tài khoản và luồng dữ liệu mới có quyền truy cập các tài nguyên Kinesis mà họ tạo. Kinesis hỗ trợ xác thực người dùng để kiểm soát truy cập dữ liệu. Bạn có thể sử dụng các chính sách AWS IAM để cấp quyền có chọn lọc cho người dùng và nhóm người dùng. Bạn có thể đặt và lấy dữ liệu một cách bảo mật từ Kinesis thông qua các điểm cuối SSL sử dụng giao thức HTTPS. Nếu cần tăng cường thêm bảo mật, bạn có thể sử dụng mã hóa phía máy chủ với các khóa chính AWS KMS để mã hóa dữ liệu lưu trong luồng dữ liệu. AWS KMS cho phép bạn sử dụng các khóa chính KMS do AWS tạo để mã hóa hoặc bạn có thể mang khóa chính của riêng bạn vào AWS KMS nếu muốn. Cuối cùng, bạn có thể sử dụng thư viện mã hóa của riêng mình để mã hóa dữ liệu trên phía máy khách trước khi đặt dữ liệu vào Kinesis.

Câu hỏi: Tôi có thể truy cập riêng tư vào các Kinesis Data Streams API từ Amazon Virtual Private Cloud (VPC) mà không cần sử dụng IP công cộng không?

Có, bạn có thể truy cập riêng tư vào các Kinesis Data Streams API từ Amazon Virtual Private Cloud (VPC) bằng cách tạo Điểm cuối VPC. Với Điểm cuối VPC, mạng AWS sẽ xử lý việc định tuyến giữa VPC và Kinesis Data Streams mà không cần cổng Internet, cổng NAT hoặc kết nối VPN. Thế hệ mới nhất của Điểm cuối VPC mà Kinesis Data Streams sử dụng được cung cấp bởi AWS PrivateLink, một công nghệ cho phép kết nối riêng tư giữa các dịch vụ AWS bằng cách sử dụng Giao diện mạng linh hoạt (ENI) với IP riêng trong VPC của bạn. Để tìm hiểu thêm về PrivateLink, tham khảo tài liệu hướng dẫn về PrivateLink.

Mã hóa

Câu hỏi: Tôi có thể mã hóa dữ liệu mà tôi đặt vào luồng dữ liệu Kinesis không?

Có, và có hai tùy chọn để mã hóa dữ liệu mà bạn đặt vào luồng dữ liệu Kinesis. Bạn có thể sử dụng mã hóa phía máy chủ, đây là một tính năng được quản lý hoàn toàn tự động mã hóa và giải mã dữ liệu khi bạn đặt dữ liệu vào và lấy dữ liệu từ luồng dữ liệu. Hoặc bạn có thể ghi dữ liệu đã mã hóa vào luồng dữ liệu bằng cách mã hóa và giải mã trên phía ứng dụng khách.

Câu hỏi: Tại sao tôi nên sử dụng mã hóa phía máy chủ thay vì mã hóa phía máy khách?

Khách hàng thường chọn mã hóa phía máy chủ hơn là mã hóa phía máy khách vì một trong những lý do sau:

  • Khó thực hiện mã hóa phía máy khách
  • Khách hàng muốn tầng bảo mật thứ hai bên cạnh mã hóa phía máy khách
  • Khó triển khai các mô hình quản lý khóa phía máy khách

Câu hỏi: Mã hóa phía máy chủ là gì?

Mã hóa phía máy chủ dành cho Kinesis Data Streams tự động mã hóa dữ liệu bằng khóa chính (CMK) AWS KMS do người dùng chỉ định trước khi được ghi vào tầng lưu trữ luồng dữ liệu và giải mã dữ liệu sau khi truy xuất từ bộ lưu trữ. Việc mã hóa làm vô hiệu hóa các thao tác ghi và không thể đọc dữ liệu và khóa phân vùng trừ khi người dùng đang ghi hoặc đọc từ luồng dữ liệu có quyền sử dụng khóa đã chọn để mã hóa trên luồng dữ liệu. Do đó, mã hóa phía máy chủ có thể giúp đơn giản hóa việc đáp ứng các yêu cầu nội bộ về bảo mật và tuân thủ đang điều chỉnh dữ liệu của bạn.

Với mã hóa phía máy chủ, các ứng dụng phía máy khách (nguồn tạo và ứng dụng tiêu thụ dữ liệu) không cần phải đảm nhiệm việc mã hóa, các ứng dụng đó không cần quản lý CMK hay hoạt động mã hóa và dữ liệu của bạn được mã hóa khi lưu trữ và khi truyền trong phạm vi dịch vụ Kinesis Data Streams. Tất cả CMK mà tính năng mã hóa phía máy chủ sử dụng đều được AWS KMS cung cấp. AWS KMS đơn giản hóa việc sử dụng CMK do AWS quản lý cho Kinesis (phương thức mã hóa bằng “một lần nhấp chuột”), CMK do AWS KMS của chính bạn tạo ra hoặc CMK mà bạn đã nhập để mã hóa.

Câu hỏi: Có hướng dẫn bắt đầu với mã hóa phía máy chủ hay không?

Có, có hướng dẫn bắt đầu trong tài liệu hướng dẫn người dùng.

Câu hỏi: Mã hóa phía máy chủ liệu có làm ảnh hưởng đến cách các ứng dụng của tôi tương tác với Kinesis Data Streams hay không?

Có thể. Điều này tùy thuộc vào khóa mà bạn sử dụng để mã hóa và các quyền điều chỉnh khả năng truy cập vào khóa.

  • Nếu bạn sử dụng CMK do AWS quản lý cho Kinesis (bí danh khóa = aws/kinesis), các ứng dụng của bạn sẽ không bị ảnh hưởng khi bật hoặc tắt chức năng mã hóa bằng khóa này.
  • Nếu bạn sử dụng khóa chính khác, ví dụ như khóa chính AWS KMS tùy chỉnh hoặc một khóa mà bạn đã nhập vào dịch vụ AWS KMS và nếu nguồn tạo và ứng dụng tiêu thụ dữ liệu của một luồng dữ liệu không có quyền sử dụng CMK của AWS KMS để mã hóa, các yêu cầu PUT và GET sẽ thất bại. Để sử dụng được mã hóa phía máy khách, bạn phải cấu hình các chính sách khóa của AWS KMS để cho phép mã hóa và giải mã thông điệp. Để xem ví dụ và biết thêm thông tin về quyền của AWS KMS, xem Quyền của AWS KMS API: Tài liệu tham khảo về thao tác và tài nguyên trong Hướng dẫn dành cho nhà phát triển AWS Key Management Service hoặc hướng dẫn về quyền trong tài liệu hướng dẫn sử dụng mã hóa phía máy chủ dành cho Kinesis Data Streams.

Câu hỏi: Việc sử dụng mã hóa phía máy chủ có làm mất thêm phụ phí không?

Có. Tuy nhiên, nếu bạn đang sử dụng CMK do AWS quản lý cho Kinesis và không vượt quá mức phí sử dụng KMS API thuộc bậc miễn phí, việc bạn sử dụng mã hóa phía máy chủ là miễn phí. Sau đây là mô tả về các khoản phí theo tài nguyên:

Khóa:

  • CMK do AWS quản lý cho Kinesis (bí danh = “aws/kinesis”) là miễn phí.
  • Khóa KMS do người dùng tạo chịu các khoản phí đối với khóa KMS. Tìm hiểu thêm.

Mức sử dụng KMS API:

  • Phí sử dụng API áp dụng cho từng CMK, bao gồm các khóa tùy chỉnh. Kinesis Data Streams gọi KMS khoảng 5 phút một lần khi đang xoay vòng khóa dữ liệu. Trong 30 ngày, mức phí tổng cộng cho các lệnh gọi KMS API do luồng dữ liệu Kinesis khởi tạo sẽ chưa đầy vài đô-la. Xin lưu ý rằng mức phí này tăng lên theo số lượng thông tin xác thực người dùng mà bạn sử dụng trên các nguồn tạo và ứng dụng tiêu thụ dữ liệu vì mỗi thông tin xác thực người dùng cần một lệnh gọi API riêng tới AWS KMS. Khi bạn sử dụng vai trò IAM để xác thực, mỗi lệnh gọi nhận vai trò sẽ cần đến các thông tin xác thực người dùng riêng và bạn có thể sẽ phải lưu đệm các thông tin xác thực do lệnh gọi nhận vai trò trả về để tiết kiệm phí KMS.

Câu hỏi: Các khu vực AWS nào cung cấp mã hóa phía máy chủ cho Kinesis Data Streams?

Mã hóa phía máy chủ Kinesis Data Streams có sẵn trong khu vực AWS GovCloud và tất cả các khu vực công cộng ngoại trừ khu vực Trung Quốc (Bắc Kinh).

Câu hỏi: Làm thế nào để bắt đầu, cập nhật hoặc xóa mã hóa phía máy chủ khỏi luồng dữ liệu?

Bạn có thể hoàn thành tất cả các thao tác này trên bảng điều khiển quản lý AWS hoặc sử dụng AWS SDK. Để tìm hiểu thêm, xem hướng dẫn bắt đầu với mã hóa phía máy chủ Kinesis Data Streams.

Câu hỏi: Mã hóa phía máy chủ sử dụng thuật toán mã hóa gì?

Kinesis Data Streams sử dụng thuật toán AES-GCM 256 để mã hóa.

Câu hỏi: Nếu tôi mã hóa luồng dữ liệu đã có dữ liệu được ghi vào đó, dù là dưới dạng văn bản thuần hay văn bản mã hóa, thì khi tôi cập nhật mã hóa, tất cả dữ liệu trong luồng dữ liệu đó có được mã hóa hoặc giải mã hay không?

Không, chỉ dữ liệu mới đã ghi vào luồng dữ liệu sẽ được mã hóa (hoặc duy trì ở trạng thái đã giải mã) bởi ứng dụng mã hóa mới.

Câu hỏi: Mã hóa phía máy chủ cho Kinesis Data Streams mã hóa những gì?

Mã hóa phía máy chủ mã hóa dữ liệu thực của tin nhắn cùng với khóa phân vùng do các ứng dụng tại nguồn tạo dữ liệu của luồng dữ liệu chỉ định.

Câu hỏi: Mã hóa phía máy chủ là tính năng dành riêng cho phân đoạn hay tính năng dành riêng cho luồng?

Mã hóa phía máy chủ là tính năng dành riêng cho luồng.

Câu hỏi: Tôi có thể thay đổi CMK dùng để mã hóa luồng dữ liệu cụ thể hay không?

Có, khi sử dụng bảng điều khiển quản lý AWS hoặc AWS SDK, bạn có thể chọn khóa chính mới để áp dụng cho luồng dữ liệu cụ thể.

Câu hỏi: AWS có thể hướng dẫn tôi tìm hiểu chu trình mã hóa dữ liệu từ thời điểm tôi gửi dữ liệu đến luồng dữ liệu Kinesis đã bật mã hóa phía máy chủ và khi tôi truy xuất dữ liệu được không?

Sau đây là hướng dẫn về cách Kinesis Data Streams sử dụng các CMK của AWS KMS để mã hóa tin nhắn trước khi tin nhắn được lưu vào đường dẫn PUT và để giải mã tin nhắn sau khi tin nhắn được truy xuất trong đường dẫn GET. Kinesis và AWS KMS thực hiện các hoạt động sau đây (bao gồm giải mã) khi bạn gọi putRecord(s) hoặc getRecords trên luồng dữ liệu đã bật mã hóa phía máy chủ.

  1. Dữ liệu được gửi từ ứng dụng của nguồn tạo dữ liệu Kinesis của khách hàng (ứng dụng khách) đến Kinesis bằng SSL thông qua HTTPS.
  2. Dữ liệu được truy xuất bởi Kinesis, được lưu trữ trong RAM và mã hóa được áp dụng cho dữ liệu và khóa phân vùng của bản ghi.
  3. Kinesis yêu cầu tư liệu khóa đầu vào (IKM) là văn bản thuần và bản sao IKM được mã hóa bằng khóa chính KMS đã chọn của khách hàng.
  4. AWS KMS tạo một IKM, mã hóa IKM đó bằng khóa chính và gửi cả IKM là văn bản thuần và IKM đã mã hóa tới Kinesis.
  5. Kinesis sử dụng IKM là văn bản thuần để rút ra khóa dữ liệu là duy nhất đối với mỗi bản ghi.
  6. Kinesis mã hóa dữ liệu và khóa phân vùng bằng các khóa dữ liệu và xóa khóa là văn bản thuần khỏi bộ nhớ.
  7. Kinesis gắn IKM được mã hóa vào dữ liệu đã mã hóa.
  8. IKM là văn bản thuần được lưu đệm trong bộ nhớ để tái sử dụng cho đến khi hết hạn sau 5 phút.
  9. Kinesis phân phối tin nhắn đã mã hóa tới kho lưu trữ backend, tại đó tin nhắn được lưu trữ ổn định và có thể tìm nạp bằng lệnh gọi getRecords.

Kinesis và AWS KMS thực hiện các hoạt động sau đây (bao gồm giải mã) khi bạn gọi getRecords.

  1. Khi lệnh gọi getRecords được đưa ra, lớp frontend của Kinesis sẽ truy xuất bản ghi đã mã hóa từ dịch vụ backend.
  2. Kinesis đưa ra yêu cầu tới KMS bằng một mã thông báo do yêu cầu của khách hàng tạo ra. AWS KMS xác thực mã thông báo đó.
  3. Kinesis giải mã IKM đã mã hóa được lưu với bản ghi.
  4. Kinesis tạo lại khóa dữ liệu cho mỗi bản ghi từ IKM đã giải mã.
  5. Nếu được cấp quyền, Kinesis sẽ giải mã dữ liệu và xóa khóa dữ liệu là văn bản thuần khỏi bộ nhớ.
  6. Kinesis phân phối dữ liệu qua SSL và HTTPS tới khách hàng Kinesis (ứng dụng khách) đang yêu cầu bản ghi.

Giá và thanh toán

Câu hỏi: Amazon Kinesis Data Streams có sẵn ở Bậc miễn phí của AWS không?

Không. Amazon Kinesis Data Streams hiện không có sẵn ở Bậc miễn phí của AWS. Bậc miễn phí của AWS là chương trình cho phép dùng thử miễn phí một nhóm dịch vụ AWS. Để biết thêm chi tiết về Bậc miễn phí của AWS, hãy xem Bậc miễn phí của AWS.

Câu hỏi: Amazon Kinesis Data Streams có mức phí là bao nhiêu?

Amazon Kinesis Data Streams sử dụng phương pháp tính giá đơn giản, đó là trả phí theo mức sử dụng. Không có phí trả trước hay phí tối thiểu và bạn chỉ phải trả phí cho tài nguyên mà bạn sử dụng. Mức phí của Amazon Kinesis Data Streams có hai thước đo cốt lõi và ba thước đo tùy chọn:

  • Mức phí Phân đoạn theo giờ được xác định bởi số lượng phân đoạn trong luồng dữ liệu Amazon Kinesis của bạn.
  • Mức phí Đơn vị dữ liệu thực PUT được xác định theo số lượng đơn vị dữ liệu 25KB mà các nguồn tạo dữ liệu thêm vào luồng dữ liệu.

Tùy chọn:

  • Lưu giữ dữ liệu kéo dài là phí tùy chọn được xác định bởi số giờ phân đoạn phát sinh trong luồng dữ liệu của bạn. Khi bật lưu giữ dữ liệu kéo dài, bạn sẽ trả phí lưu giữ dữ liệu kéo dài cho mỗi phân đoạn trong luồng.
  • Phân xuất tăng cường là phí tùy chọn với hai thước đo phí chính: số giờ ứng dụng tiêu thụ-phân đoạn và lượng truy xuất dữ liệu. Số giờ ứng dụng tiêu thụ-phân đoạn bằng số lượng phân đoạn trong luồng nhân với số lượng ứng dụng tiêu thụ đang sử dụng phân xuất tăng cường. Lượng truy xuất dữ liệu được xác định bằng số GB được phân phối cho các ứng dụng tiêu thụ đang sử dụng phân xuất tăng cường. 

Để biết thêm thông tin về mức phí của Amazon Kinesis Data Streams, hãy xem Giá của Amazon Kinesis Data Streams

Câu hỏi: Liệu mức phí Đơn vị dữ liệu thực PUT có thay đổi khi sử dụng thao tác PutRecords thay vì thao tác PutRecord hay không?

Mức phí Đơn vị dữ liệu thực PUT được tính dựa trên số lượng đơn vị dữ liệu 25KB được thêm vào luồng dữ liệu Amazon Kinesis của bạn. Mức phí Đơn vị dữ liệu thực PUT không đổi khi sử dụng thao tác PutRecords hoặc thao tác PutRecord.

Câu hỏi: Liệu tôi có phải chịu phí cho những phân đoạn ở trạng thái “ĐÃ ĐÓNG” hay không?

Một phân đoạn có thể ở trạng thái “ĐÃ ĐÓNG” sau khi chia lại phân đoạn. Bạn sẽ không phải chịu phí cho những phân đoạn ở trạng thái “ĐÃ ĐÓNG”.

Câu hỏi: Ngoài các khoản phí Amazon Kinesis Data Streams, liệu còn có các khoản phí nào khác có thể phát sinh trong quá trình sử dụng Amazon Kinesis Data Streams hay không?

Nếu sử dụng Amazon EC2 để chạy các ứng dụng Amazon Kinesis, bạn sẽ phải chịu phí cho các tài nguyên Amazon EC2 cộng với các khoản phí Amazon Kinesis Data Streams.

Amazon Kinesis Client Library (KCL) sử dụng các bảng Amazon DynamoDB để theo dõi thông tin trạng thái của quá trình xử lý bản ghi. Nếu sử dụng KCL cho các ứng dụng Amazon Kinesis, bạn sẽ phải chịu phí cho các tài nguyên Amazon DynamoDB cộng với các khoản phí Amazon Kinesis Data Streams.

Nếu bạn bật Số liệu nâng cao ở cấp độ phân đoạn thì ngoài các khoản phí Amazon Kinesis Data Streams, bạn sẽ phải trả các khoản phí Amazon CloudWatch gắn với số liệu ở cấp độ phân đoạn đã được kích hoạt.

Xin lưu ý rằng, trên đây chỉ là ba trường hợp điển hình mà không bao quát toàn diện.

Thỏa thuận mức dịch vụ

Câu hỏi: Thỏa thuận mức dịch vụ (SLA) của Amazon Kinesis Data Streams đảm bảo được những gì?

SLA của Amazon Kinesis Data Streams của chúng tôi đảm bảo Tỷ lệ thời gian hoạt động hàng tháng đạt mức tối thiểu 99,9% cho Amazon Kinesis Data Streams.

Câu hỏi: Làm thế nào để biết tôi có đủ điều kiện nhận Tín dụng dịch vụ SLA hay không?

Bạn đủ điều kiện nhận tín dụng SLA cho Amazon Kinesis Data Streams theo SLA của Amazon Kinesis Data Streams nếu bạn chạy một tác vụ ở nhiều Vùng sẵn sàng, trong cùng một khu vực, có Tỷ lệ thời gian hoạt động hàng tháng dưới 99,9% trong bất kỳ chu kỳ tính phí hàng tháng nào.

Để biết đầy đủ chi tiết về tất cả các điều khoản và điều kiện của SLA cũng như chi tiết về cách gửi yêu cầu, vui lòng truy cập trang chi tiết về SLA của Amazon Kinesis Data Streams

Tìm hiểu thêm về giá của Amazon Kinesis Data Streams

Truy cập trang giá
Bạn đã sẵn sàng để bắt đầu chưa?
Đăng ký
Bạn có thêm câu hỏi?
Hãy liên hệ chúng tôi