ຮູບພາບທີ່ບໍ່ຄົບຖ້ວນຜ່ານ proxy: ກວດເບິ່ງການຂຽນສຳເລັດຂອງ Netty
ເມື່ອຮູບພາບມາບໍ່ຄົບຖ້ວນຜ່ານ proxy, ກວດເບິ່ງວ່າຕົ້ນກຳເນີດປິດຊ່ອງ Netty ກ່ອນການຂຽນຄຳຕອບແບບອະສິງຄະໂຣນັດຈະສຳເລັດຫຼືບໍ່.
ຮູບພາບໜຶ່ງເຮັດວຽກໄດ້ໃນການເຊື່ອມຕໍ່ໂດຍກົງທີ່ໄວ, ແຕ່ມາບໍ່ຄົບຖ້ວນຜ່ານ proxy ສົ່ງຕໍ່ທີ່ຊ້າກວ່າ. ສາເຫດໜຶ່ງທີ່ເປັນໄປໄດ້ແມ່ນຕົ້ນກຳເນີດປິດການເຊື່ອມຕໍ່ໃນຂະນະທີ່ຄຳຕອບຂອງມັນຍັງຖືກຂຽນຢູ່.
Netty I/O ເປັນອະສິງຄະໂຣນັດ. ການກັບມາຈາກ writeAndFlush ບໍ່ໄດ້ໝາຍຄວາມວ່າການດຳເນີນການນັ້ນສຳເລັດແລ້ວ. ດັ່ງນັ້ນລຳດັບນີ້ຈຶ່ງບໍ່ປອດໄພສຳລັບຄຳຕອບທີ່ຍັງມີໄບຕ໌ຢູ່ໃນຄິວ:
ctx.writeAndFlush(response);
ctx.close();
ເມື່ອການແລກປ່ຽນ HTTP ຖືກປິດໂດຍເຈດຕະນາຫຼັງຈາກຂໍ້ຄວາມຄຳຕອບສຸດທ້າຍຂອງມັນ, ໃຫ້ຕິດການປິດນັ້ນໃສ່ future ຂອງການຂຽນນັ້ນ:
ctx.writeAndFlush(finalResponseMessage)
.addListener(ChannelFutureListener.CLOSE);
ສ່ວນປະໂຫຍກນີ້ສົມມຸດວ່າຄຳຕອບຖືກສ້າງ ແລະ ຕັ້ງກອບຢ່າງຖືກຕ້ອງແລ້ວ. ສຳລັບເນື້ອຄວາມທີ່ສົ່ງເປັນສະຕຣີມ, ໃຫ້ໃຊ້ການສຳເລັດຂອງຂໍ້ຄວາມສຸດທ້າຍ ບໍ່ແມ່ນການຂຽນຫົວຂໍ້. ສຳລັບການເຊື່ອມຕໍ່ HTTP ແບບຕໍ່ເນື່ອງ, ຢ່າເພີ່ມການປິດພຽງເພາະຄຳຕອບຈົບແລ້ວ.
ກວດເບິ່ງຄວາມລົ້ມເຫຼວຂອງ future ເປັນສ່ວນໜຶ່ງຂອງການຈັດການຂໍ້ຜິດພາດປົກກະຕິຂອງແອັບຯ. ການສຳເລັດລວມມີຄວາມລົ້ມເຫຼວ ແລະ ການຍົກເລີກ, ດັ່ງນັ້ນການສຳເລັດຢ່າງດຽວບໍ່ແມ່ນໃບຢັ້ງຢືນການສົ່ງຈາກບຣາວເຊີ.
ການປຽບທຽບທີ່ເປັນປະໂຫຍດແມ່ນຄວາມຍາວຄຳຕອບທັງໝົດ ແລະ ຜົນຂອງການຂຽນໃນແຕ່ລະເສັ້ນທາງ. proxy ສາມາດປ່ຽນເວລາໄດ້ພໍທີ່ຈະເປີດເຜີຍຂໍ້ຜິດພາດວົງຈອນຊີວິດທີ່ມີຢູ່ແລ້ວ; ການມີຢູ່ຂອງມັນບໍ່ໄດ້ພິສູດວ່າຄອມເພຣສເຊີ ຫຼື ແຄຊຂອງມັນໄດ້ຖິ້ມໄບຕ໌ເຫຼົ່ານັ້ນ.