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 sự cố. Thông tin về yêu cầu API, chẳng hạn 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. Thông tin có thể được ghi cục bộ trên Bộ xử lý thông báo (chỉ dành cho API Apigee Edge dành cho đám mây riêng tư) hoặc vào 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 nhật ký dữ liệu vào máy chủ Logic Sumo. Điều này có nghĩa là quá trình ghi nhật ký thực sự diễn ra trong quá trình xử lý yêu cầu/phản hồi. Phương pháp này không hiệu quả vì nó làm tăng thêm thời gian xử lý, từ đó 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();

Nguyên nhân ở đây là lệnh gọi đến waitForComplete(). Lệnh gọi này sẽ tạm ngưng các thao tác của phương thức gọi cho đến khi quá trình ghi nhật ký hoàn tất. Mẫu hợp lệ là thực hiện việc không đồng bộ này bằng cách loại bỏ lệnh gọi này.

Mức độ 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 yêu cầu API.
  • Các yêu cầu đồng thời có thể làm quá tải các tài nguyên cho Bộ xử lý thư và do đó ảnh hưởng tiêu cực đế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áchMessageLogging để chuyển/ghi nhật ký dữ liệu vào máy chủ Nhật ký hoặc các dịch vụ quản lý nhật ký của bên thứ ba 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ông báo là bạn có thể xác định chính sách này trong Luồng ứng dụng sau. Luồng ứng dụng này được thực thi sau khi phản hồi được gửi lại ứng dụng khách gửi yêu cầu.
  • Việc xác định chính sách này trong quy trình của ứng dụng khách giúp tách riêng hoạt động ghi nhật ký và xử lý yêu cầu/phản hồi, nhờ đó tránh được độ trễ.
  • Nếu có yêu cầu cụ thể hoặc lý do để ghi nhật ký qua JavaScript (không phải tuỳ chọn luồng Ứng dụng bài đăng đã đề cập ở trên), thì bạn cần thực hiện việc đó một cách 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