Bagaimana Lambda memproses catatan dari sumber acara berbasis streaming dan antrian - AWS Lambda

Terjemahan disediakan oleh mesin penerjemah. Jika konten terjemahan yang diberikan bertentangan dengan versi bahasa Inggris aslinya, utamakan versi bahasa Inggris.

Bagaimana Lambda memproses catatan dari sumber acara berbasis streaming dan antrian

Pemetaan sumber peristiwa adalah sumber daya Lambda yang membaca item dari layanan berbasis streaming dan antrian dan memanggil fungsi dengan kumpulan catatan. Dalam pemetaan sumber peristiwa, sumber daya yang disebut poller acara secara aktif melakukan polling untuk pesan baru dan memanggil fungsi. Secara default, Lambda secara otomatis menskalakan poller peristiwa, tetapi untuk jenis sumber peristiwa tertentu, Anda dapat menggunakan mode yang disediakan untuk mengontrol jumlah minimum dan maksimum poller acara yang didedikasikan untuk pemetaan sumber acara Anda.

Layanan berikut menggunakan pemetaan sumber peristiwa untuk menjalankan fungsi Lambda:

Awas

Pemetaan sumber peristiwa Lambda memproses setiap peristiwa setidaknya sekali, dan pemrosesan duplikat catatan dapat terjadi. Untuk menghindari potensi masalah yang terkait dengan duplikat peristiwa, kami sangat menyarankan agar Anda membuat kode fungsi Anda idempoten. Untuk mempelajari lebih lanjut, lihat Bagaimana cara membuat fungsi Lambda saya idempoten di Pusat Pengetahuan. AWS

Bagaimana pemetaan sumber peristiwa berbeda dari pemicu langsung

Beberapa Layanan AWS dapat langsung memanggil fungsi Lambda menggunakan pemicu. Layanan ini mendorong peristiwa ke Lambda, dan fungsi segera dipanggil saat peristiwa yang ditentukan terjadi. Pemicu cocok untuk peristiwa diskrit dan pemrosesan waktu nyata. Saat Anda membuat pemicu menggunakan konsol Lambda, konsol berinteraksi dengan AWS layanan terkait untuk mengonfigurasi pemberitahuan peristiwa pada layanan tersebut. Pemicunya sebenarnya disimpan dan dikelola oleh layanan yang menghasilkan peristiwa, bukan oleh Lambda. Berikut adalah beberapa contoh layanan yang menggunakan pemicu untuk menjalankan fungsi Lambda:

Pemetaan sumber peristiwa adalah sumber daya Lambda yang dibuat dan dikelola dalam layanan Lambda. Pemetaan sumber peristiwa dirancang untuk memproses data streaming volume tinggi atau pesan dari antrian. Memproses catatan dari aliran atau antrian dalam batch lebih efisien daripada memproses catatan secara individual.

Perilaku batching

Secara default, pemetaan sumber peristiwa mengumpulkan catatan bersama menjadi satu muatan yang dikirim Lambda ke fungsi Anda. Untuk menyempurnakan perilaku batching, Anda dapat mengonfigurasi jendela batching (MaximumBatchingWindowInSeconds) dan ukuran batch (). BatchSize Jendela batching adalah jumlah waktu maksimum untuk mengumpulkan catatan ke dalam satu muatan. Ukuran batch adalah jumlah maksimum catatan dalam satu batch. Lambda memanggil fungsi Anda ketika salah satu dari tiga kriteria berikut terpenuhi:

  • Jendela batching mencapai nilai maksimumnya. Perilaku jendela batching default bervariasi tergantung pada sumber peristiwa tertentu.

    • Untuk sumber peristiwa Kinesis, DynamoDB, dan Amazon SQS: Jendela batching default adalah 0 detik. Ini berarti bahwa Lambda memanggil fungsi Anda segera setelah catatan tersedia. Untuk mengatur jendela batching, konfigurasikanMaximumBatchingWindowInSeconds. Anda dapat mengatur parameter ini ke nilai apa pun dari 0 hingga 300 detik dengan penambahan 1 detik. Jika Anda mengonfigurasi jendela batching, jendela berikutnya dimulai segera setelah pemanggilan fungsi sebelumnya selesai.

    • Untuk Amazon MSK, sumber acara Apache Kafka, Amazon MQ, dan Amazon DocumentDB yang dikelola sendiri: Jendela batching default adalah 500 ms. Anda dapat mengonfigurasi MaximumBatchingWindowInSeconds ke nilai apa pun dari 0 detik hingga 300 detik dengan penambahan detik. Dalam mode yang disediakan untuk pemetaan sumber acara Kafka, saat Anda mengonfigurasi jendela batching, jendela berikutnya dimulai segera setelah batch sebelumnya selesai. Dalam pemetaan sumber peristiwa Kafka yang tidak disediakan, saat Anda mengonfigurasi jendela batching, jendela berikutnya dimulai segera setelah pemanggilan fungsi sebelumnya selesai. Untuk meminimalkan latensi saat menggunakan pemetaan sumber peristiwa Kafka dalam mode yang disediakan, setel ke 0. MaximumBatchingWindowInSeconds Pengaturan ini memastikan bahwa Lambda akan mulai memproses batch berikutnya segera setelah menyelesaikan pemanggilan fungsi saat ini. Untuk informasi tambahan tentang pemrosesan latensi rendah, lihatLatensi rendah Apache Kafka.

    • Untuk sumber acara Amazon MQ dan Amazon DocumentDB: Jendela batching default adalah 500 ms. Anda dapat mengonfigurasi MaximumBatchingWindowInSeconds ke nilai apa pun dari 0 detik hingga 300 detik dengan penambahan detik. Jendela batching dimulai segera setelah rekor pertama tiba.

      catatan

      Karena Anda hanya dapat mengubah MaximumBatchingWindowInSeconds dalam beberapa detik, Anda tidak dapat kembali ke jendela batching default 500 ms setelah Anda mengubahnya. Untuk mengembalikan jendela batching default, Anda harus membuat pemetaan sumber peristiwa baru.

  • Ukuran batch terpenuhi. Ukuran batch minimum adalah 1. Ukuran batch default dan maksimum bergantung pada sumber acara. Untuk detail tentang nilai-nilai ini, lihat BatchSizespesifikasi untuk operasi CreateEventSourceMapping API.

  • Ukuran payload mencapai 6 MB. Anda tidak dapat mengubah batas ini.

Diagram berikut menggambarkan ketiga kondisi ini. Misalkan jendela batching dimulai pada t = 7 detik. Dalam skenario pertama, jendela batching mencapai maksimum 40 detik dalam t = 47 hitungan detik setelah mengumpulkan 5 catatan. Dalam skenario kedua, ukuran batch mencapai 10 sebelum jendela batching berakhir, sehingga jendela batching berakhir lebih awal. Dalam skenario ketiga, ukuran muatan maksimum tercapai sebelum jendela batching berakhir, sehingga jendela batching berakhir lebih awal.

Jendela batching kedaluwarsa saat waktu maksimal tercapai, ukuran batch terpenuhi, atau muatan mencapai 6 MB

Kami menyarankan Anda menguji dengan ukuran batch dan rekaman yang berbeda sehingga frekuensi polling dari setiap sumber acara disetel ke seberapa cepat fungsi Anda dapat menyelesaikan tugasnya. CreateEventSourceMappingBatchSizeParameter mengontrol jumlah maksimum catatan yang dapat dikirim ke fungsi Anda dengan setiap pemanggilan. Ukuran batch yang lebih besar sering kali dapat menyerap overhead secara lebih efisien di serangkaian catatan yang lebih besar, sehingga meningkatkan throughput Anda.

Lambda tidak menunggu ekstensi yang dikonfigurasi selesai sebelum mengirim batch berikutnya untuk diproses. Dengan kata lain, ekstensi Anda dapat terus berjalan saat Lambda memproses kumpulan catatan berikutnya. Hal ini dapat menyebabkan masalah pembatasan jika Anda melanggar pengaturan atau batasan konkurensi akun Anda. Untuk mendeteksi apakah ini merupakan masalah potensial, pantau fungsi Anda dan periksa apakah Anda melihat metrik konkurensi yang lebih tinggi dari yang diharapkan untuk pemetaan sumber peristiwa Anda. Karena waktu yang singkat di antara pemanggilan, Lambda mungkin secara singkat melaporkan penggunaan konkurensi yang lebih tinggi daripada jumlah pecahan. Ini bisa benar bahkan untuk fungsi Lambda tanpa ekstensi.

Secara default, jika fungsi Anda mengembalikan kesalahan, pemetaan sumber peristiwa memproses ulang seluruh batch hingga fungsi berhasil, atau item dalam batch kedaluwarsa. Untuk memastikan pemrosesan dalam urutan, pemetaan sumber peristiwa menghentikan pemrosesan untuk pecahan yang terpengaruh hingga kesalahan teratasi. Untuk sumber aliran (DynamoDB dan Kinesis), Anda dapat mengonfigurasi jumlah maksimum kali Lambda mencoba ulang saat fungsi Anda mengembalikan kesalahan. Kesalahan layanan atau throttle di mana batch tidak mencapai fungsi Anda tidak diperhitungkan dalam upaya coba lagi. Anda juga dapat mengonfigurasi pemetaan sumber peristiwa untuk mengirim catatan pemanggilan ke tujuan saat membuang kumpulan peristiwa.

Mode yang disediakan

Pemetaan sumber acara Lambda menggunakan poller acara untuk polling sumber acara Anda untuk pesan baru. Secara default, Lambda mengelola penskalaan otomatis poller ini berdasarkan volume pesan. Ketika lalu lintas pesan meningkat, Lambda secara otomatis meningkatkan jumlah poller acara untuk menangani beban, dan menguranginya saat lalu lintas menurun.

Dalam mode yang disediakan, Anda dapat menyempurnakan throughput pemetaan sumber acara Anda dengan menentukan batas minimum dan maksimum untuk sumber daya polling khusus yang tetap siap menangani pola lalu lintas yang diharapkan. Sumber daya ini secara otomatis menskalakan 3 kali lebih cepat untuk menangani lonjakan tiba-tiba dalam lalu lintas acara dan menyediakan kapasitas 16 kali lebih tinggi untuk memproses jutaan peristiwa. Ini membantu Anda membangun beban kerja berbasis peristiwa yang sangat responsif dengan persyaratan performa yang ketat.

Di Lambda, poller peristiwa adalah unit komputasi dengan kemampuan throughput yang bervariasi menurut jenis sumber peristiwa. Untuk Amazon MSK dan Apache Kafka yang dikelola sendiri, setiap poller acara dapat menangani hingga 5 throughput atau hingga 5 MB/sec pemanggilan bersamaan. Misalnya, jika sumber acara Anda menghasilkan payload rata-rata 1 MB dan durasi rata-rata fungsi Anda adalah 1 detik, satu poller acara Kafka dapat mendukung 5 MB/sec throughput dan 5 pemanggilan Lambda bersamaan (dengan asumsi tidak ada transformasi payload). Untuk Amazon SQS, setiap poller peristiwa dapat menangani hingga 1 throughput atau hingga MB/sec 10 pemanggilan bersamaan. Menggunakan mode yang disediakan menimbulkan biaya tambahan berdasarkan penggunaan poller acara Anda. Untuk detail harganya, lihat Harga AWS Lambda.

Mode yang disediakan tersedia untuk Amazon MSK, Apache Kafka yang dikelola sendiri, dan sumber acara Amazon SQS. Meskipun pengaturan konkurensi memberi Anda kontrol atas penskalaan fungsi Anda, mode yang disediakan memberi Anda kontrol atas throughput pemetaan sumber peristiwa Anda. Untuk memastikan kinerja maksimum, Anda mungkin perlu menyesuaikan kedua pengaturan secara independen.

Mode yang disediakan sangat ideal untuk aplikasi real-time yang membutuhkan latensi pemrosesan peristiwa yang konsisten, seperti perusahaan jasa keuangan yang memproses umpan data pasar, platform e-commerce yang memberikan rekomendasi yang dipersonalisasi secara real-time, dan perusahaan game yang mengelola interaksi pemain langsung.

Setiap poller acara mendukung kapasitas throughput yang berbeda:

  • Untuk Amazon MSK dan Apache Kafka yang dikelola sendiri: hingga 5 throughput atau hingga 5 MB/sec pemanggilan bersamaan

  • Untuk Amazon SQS: hingga 1 throughput atau hingga 10 MB/sec pemanggilan bersamaan atau hingga 10 panggilan API polling SQS per detik.

Untuk pemetaan sumber peristiwa Amazon SQS, Anda dapat mengatur jumlah minimum poller antara 2 dan 200 dengan default 2, dan jumlah maksimum antara 2 dan 2.000 dengan default 200. Lambda menskalakan jumlah poller acara antara minimum dan maksimum yang dikonfigurasi, dengan cepat menambahkan hingga 1.000 konkurensi per menit untuk memberikan pemrosesan acara Anda yang konsisten dan latensi rendah.

Untuk pemetaan sumber acara Kafka, Anda dapat mengatur jumlah minimum poller antara 1 dan 200 dengan default 1, dan jumlah maksimum antara 1 dan 2.000 dengan default 200. Lambda menskalakan jumlah poller acara antara minimum dan maksimum yang dikonfigurasi berdasarkan backlog acara Anda dalam topik Anda untuk memberikan pemrosesan latensi rendah dari acara Anda.

Perhatikan bahwa untuk sumber peristiwa Amazon SQS, setelan konkurensi maksimum tidak dapat digunakan dengan mode yang disediakan. Saat menggunakan mode yang disediakan, Anda mengontrol konkurensi melalui pengaturan poller peristiwa maksimum.

Untuk detail tentang mengonfigurasi mode yang disediakan, lihat bagian berikut:

Untuk meminimalkan latensi dalam mode yang disediakan, atur MaximumBatchingWindowInSeconds ke 0. Pengaturan ini memastikan bahwa Lambda akan mulai memproses batch berikutnya segera setelah menyelesaikan pemanggilan fungsi saat ini. Untuk informasi tambahan tentang pemrosesan latensi rendah, lihatLatensi rendah Apache Kafka.

Setelah mengonfigurasi mode yang disediakan, Anda dapat mengamati penggunaan poller peristiwa untuk beban kerja Anda dengan memantau metrik. ProvisionedPollers Untuk informasi selengkapnya, lihat Metrik pemetaan sumber acara.

API pemetaan sumber kejadian

Untuk mengelola sumber peristiwa dengan AWS Command Line Interface (AWS CLI) atau AWS SDK, Anda dapat menggunakan operasi API berikut: