nginx semua orang tahu bahawa sebab prestasi hebatnya adalah berdasarkan asas tak segerak dan tidak menyekat Oleh itu, apabila membangunkan pemalam nginx untuk mengendalikan permintaan rangkaian, anda mesti ingat untuk melakukan operasi yang memakan masa tertentu dengan cara menyekat. Jika tidak, ia akan menjejaskan prestasi nginx secara serius...
Soalan ini timbul: Bagaimana jika saya ingin melakukan beberapa operasi yang memakan masa dalam pemalam? Sebagai contoh, menanyakan pangkalan data (pangkalan data tidak menyokong protokol http, terdapat protokol khas)?
ps: Saya boleh membuka kumpulan benang dan membuang operasi menyekat ini ke dalam kumpulan, tetapi adakah terdapat sebarang cara untuk menggantung pemprosesan permintaan semasa kepada baris gilir acara rangka kerja nginx? Apabila menukar status dihantar dalam fungsi panggil balik operasi menyekat, biarkan nginx meneruskan memproses permintaan sebelumnya?
Terima kasih
Pertanyaan pangkalan data pada asasnya ialah komunikasi rangkaian Pada asasnya, selagi soket anda membaca dan menulis tidak disekat, tidak akan ada masalah. Ini lebih mudah diucapkan daripada dilakukan. nginx sendiri mempunyai beberapa mekanisme yang boleh diguna semula untuk melaksanakan pelbagai operasi tidak menyekat pada http. Walau bagaimanapun, komunikasi seperti tcp mungkin tidak tersedia. Anda perlu menulisnya sendiri, yang saya rasa lebih rumit, dan ia juga perlu disepadukan ke dalam nginx.