Antipattern: با استفاده از خط مشی جاوا اسکریپت، داده ها را به سرورهای شخص ثالث وارد کنید

شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید .
اطلاعات

ثبت وقایع (Logging) یکی از روش‌های کارآمد برای اشکال‌زدایی مشکلات است. اطلاعات مربوط به درخواست API مانند هدرها، پارامترهای فرم، پارامترهای پرس‌وجو، متغیرهای پویا و غیره، همگی می‌توانند برای مراجعه بعدی ثبت شوند. این اطلاعات می‌توانند به صورت محلی در پردازنده‌های پیام (فقط Apigee Edge برای ابر خصوصی) یا در سرورهای شخص ثالث مانند Sumo Logic، Splunk یا Loggly ثبت شوند.

ضدالگو

در کد زیر، شیء httpClient در یک سیاست جاوا اسکریپت برای ثبت داده‌ها در یک سرور Sumo Logic استفاده می‌شود. این بدان معناست که فرآیند ثبت اطلاعات در واقع در طول پردازش درخواست/پاسخ انجام می‌شود. این رویکرد نتیجه‌ی معکوس دارد زیرا به زمان پردازش می‌افزاید و در نتیجه تأخیرهای کلی را افزایش می‌دهد.

لاگ دیتا_جی‌اس:

<!-- /antipatterns/examples/1-4.xml -->
<Javascript async="false" continueOnError="false" enabled="true" timelimit="2000" name="LogData_JS">
  <DisplayName>LogData_JS</DisplayName>
  <ResourceURL>jsc://LogData.js</ResourceURL>
</Javascript>

فایل لاگ دیتا.js:

<!-- /antipatterns/examples/1-5.xml -->
var sumoLogicURL = "...";
httpClient.send(sumoLogicURL);
waitForComplete();

مقصر اینجا فراخوانی تابع waitForComplete() است که عملیات فراخوانی‌کننده را تا زمان تکمیل فرآیند ثبت وقایع به حالت تعلیق در می‌آورد. یک الگوی معتبر، ناهمگام‌سازی این فرآیند با حذف این فراخوانی است.

تأثیر

  • اجرای کد ثبت وقایع از طریق سیاست جاوا اسکریپت، به تأخیر درخواست API می‌افزاید.
  • درخواست‌های همزمان می‌توانند منابع پردازنده پیام را تحت فشار قرار دهند و در نتیجه بر پردازش سایر درخواست‌ها تأثیر منفی بگذارند.

بهترین روش

  • از سیاست MessageLogging برای انتقال/ثبت داده‌ها به سرورهای ثبت وقایع یا سرویس‌های مدیریت گزارش شخص ثالث مانند Sumo Logic، Splunk، Loggly و غیره استفاده کنید.
  • بزرگترین مزیت سیاست ثبت پیام این است که می‌توان آن را در جریان پس از درخواست کلاینت تعریف کرد، که پس از ارسال پاسخ به برنامه کلاینت درخواست‌کننده اجرا می‌شود.
  • تعریف این سیاست در جریان Post Client به جداسازی فعالیت ثبت وقایع و پردازش درخواست/پاسخ کمک می‌کند و در نتیجه از تأخیرها جلوگیری می‌کند.
  • اگر الزام یا دلیل خاصی برای انجام ثبت وقایع از طریق جاوا اسکریپت وجود دارد (نه گزینه جریان Post Client که در بالا ذکر شد)، باید به صورت غیرهمزمان انجام شود. به عبارت دیگر، اگر از یک شیء httpClient استفاده می‌کنید، باید مطمئن شوید که جاوا اسکریپت waitForComplete پیاده‌سازی نمی‌کند .

مطالعه بیشتر