Phản mẫu: Ghi dữ liệu vào máy chủ của bên thứ ba bằng chính sách JavaScript

Bạn đang xem tài liệu về Apigee Edge.
Chuyển đến Tài liệu về Apigee X.
thông tin

Ghi nhật ký là một trong những cách hiệu quả để gỡ lỗi. Thông tin về API như tiêu đề, tham số biểu mẫu, tham số truy vấn, biến động, v.v. đều có thể được ghi lại tham khảo sau này. Thông tin có thể được ghi lại cục bộ trên Trình xử lý thư (chỉ dành cho Apigee Edge dành cho Đám mây riêng tư) hoặc tới máy chủ của bên thứ ba như Sumo Logic, Splunk hoặc Loggly.

Phản mẫu

Trong mã bên dưới, đối tượng httpClient trong chính sách JavaScript được dùng để ghi dữ liệu vào một Máy chủ Sumo Logic. Điều này có nghĩa là quá trình ghi nhật ký thực sự diễn ra trong xử lý yêu cầu/phản hồi. Phương pháp này phản tác dụng vì góp phần vào quá trình xử lý , do đó làm tăng độ trễ tổng thể.

LogData_JS:

<!-- /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>

LogData.js:

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

Thủ phạm ở đây là lệnh gọi đến waitForComplete(), lệnh này sẽ tạm ngưng cho đến khi quá trình ghi nhật ký hoàn tất. Mẫu hợp lệ là làm cho không đồng bộ này bằng cách loại bỏ cuộc gọi này.

Tác động

  • Việc thực thi mã ghi nhật ký thông qua chính sách JavaScript sẽ làm tăng độ trễ của API của bạn.
  • Các yêu cầu đồng thời có thể tạo áp lực cho các tài nguyên trên Trình xử lý thư và do đó ảnh hưởng xấu đến việc xử lý các yêu cầu khác.

Phương pháp hay nhất

  • Sử dụng chính sách MessageLogging để chuyển/ghi nhật ký dữ liệu vào máy chủ Ghi nhật ký hoặc nhật ký của bên thứ ba các dịch vụ quản lý như Sumo Logic, Splunk, Loggly, v.v.
  • Ưu điểm lớn nhất của chính sách Ghi nhật ký thư là có thể xác định chính sách này trong Luồng ứng dụng khách được thực thi sau khi phản hồi được gửi lại cho ứng dụng yêu cầu.
  • Việc xác định chính sách này trong quy trình Ứng dụng bài đăng giúp tách biệt hoạt động ghi nhật ký và xử lý yêu cầu/phản hồi do đó tránh được độ trễ.
  • Nếu có yêu cầu cụ thể hoặc lý do để thực hiện ghi nhật ký qua JavaScript (không phải thông báo tuỳ chọn luồng ứng dụng nêu trên), thì cần thực hiện không đồng bộ. Nói cách khác, nếu đang sử dụng đối tượng httpClient, bạn cần đảm bảo rằng JavaScript KHÔNG triển khai waitForComplete

Tài liệu đọc thêm