Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

AWS Lambda - Caching MySQL

Hal pertama yang harus dipahami adalah bagaimana require bekerja di NodeJS. Saya sarankan Anda membaca artikel jika Anda tertarik untuk mengetahui lebih banyak tentangnya.

Sekarang, setelah Anda membutuhkan koneksi Anda, Anda memilikinya untuk selamanya dan tidak akan diperlukan lagi. Ini cocok dengan apa yang Anda cari karena Anda tidak ingin membanjiri database Anda dengan membuat koneksi baru setiap saat.

Tapi, ada masalah...

Lambda Cold Start

Setiap kali Anda memanggil fungsi Lambda untuk pertama kalinya, itu akan memutar wadah dengan fungsi Anda di dalamnya dan membuatnya tetap hidup selama kurang lebih 5 menit. Sangat mungkin (walaupun tidak dijamin) bahwa Anda akan menemukan wadah yang sama setiap kali selama Anda membuat 1 permintaan dalam satu waktu. Tetapi apa yang terjadi jika Anda memiliki 2 permintaan sekaligus? Kemudian wadah lain akan diputar secara paralel dengan wadah sebelumnya yang sudah dipanaskan. Anda baru saja membuat koneksi lain di database Anda dan sekarang Anda memiliki 2 wadah. Sekarang, coba tebak apa yang terjadi jika Anda memiliki 3 permintaan bersamaan? Ya! Satu kontainer lagi, sama dengan satu koneksi DB lagi.

Selama ada permintaan baru ke fungsi Lambda Anda, secara default, permintaan tersebut akan ditingkatkan untuk memenuhi permintaan (Anda dapat mengonfigurasinya di konsol untuk membatasi eksekusi ke sebanyak mungkin eksekusi bersamaan yang Anda inginkan - dengan menghormati batas Akun Anda)

Anda tidak dapat dengan aman memastikan bahwa Anda memiliki jumlah koneksi yang tetap ke Database Anda hanya dengan memerlukan kode Anda pada pemanggilan Fungsi. Hal yang baik adalah bahwa ini bukan salahmu. Beginilah cara fungsi Lambda berperilaku.

...satu pendekatan lainnya adalah

untuk menyimpan data yang Anda inginkan dalam sistem cache yang sebenarnya, seperti ElasticCache , Misalnya. Anda kemudian dapat membuat satu fungsi Lambda dipicu oleh Acara CloudWatch yang berjalan dalam frekuensi waktu tertentu. Fungsi ini kemudian akan menanyakan DB Anda dan menyimpan hasilnya di cache eksternal Anda. Dengan cara ini Anda memastikan koneksi DB Anda hanya dibuka oleh satu Lambda pada satu waktu, karena itu akan menghormati CloudWatch Event, yang ternyata hanya berjalan sekali per pemicu.

EDIT :setelah OP mengirim tautan di bagian komentar, saya memutuskan untuk menambahkan beberapa info lagi untuk memperjelas apa yang ingin dikatakan artikel tersebut

Dari artikel:

Dan inilah yang sedang Anda lakukan. Dan ini berhasil! Tetapi masalahnya adalah jika Anda memiliki N koneksi (Permintaan Lambda) secara bersamaan. Jika Anda tidak menetapkan batas apa pun, secara default, hingga 1000 fungsi Lambda dapat diputar secara bersamaan. Sekarang, jika Anda kemudian membuat 1000 permintaan lagi secara bersamaan dalam 5 menit berikutnya, kemungkinan besar Anda tidak akan membuka koneksi baru apa pun, karena koneksi tersebut telah dibuka pada pemanggilan sebelumnya dan wadahnya masih hidup.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Perbarui kueri gagal dengan kesalahan:1175

  2. SQL Untuk Menemukan Kategori Paling Populer

  3. Ambil alamat ip klien di mysql

  4. mysql_fetch_row() vs mysql_fetch_assoc() vs mysql_fetch_array()

  5. Mendapatkan kesalahan Perintah tidak sinkron, Anda tidak dapat menjalankan perintah sekarang saat menjalankan prosedur tersimpan di mysql/PHP