Đặt thời gian hết hạn bộ nhớ đệm L1 trên Trình xử lý thông báo

Apigee Edge cung cấp chức năng lưu vào bộ nhớ đệm để lưu trữ cố định dữ liệu theo các yêu cầu. Khi nhận được dữ liệu API, dữ liệu đó sẽ được lưu trữ trong bộ nhớ đệm trong một khoảng thời gian ngắn rồi xoá. Khoảng thời gian tối đa mà một phần dữ liệu được lưu giữ trước khi bị xoá được gọi là expiry (hết hạn) hoặc thời gian tồn tại (TTL) của bộ nhớ đệm. Mỗi bộ nhớ đệm đều có một TTL mặc định, nhưng trong một số trường hợp, bạn có thể cần thay đổi giá trị TTL để cải thiện hiệu suất của API.

Các loại bộ nhớ đệm

Dữ liệu API được lưu trữ trong hai loại bộ nhớ đệm:

  • Cấp 1 (L1): Bộ nhớ đệm trong bộ nhớ, cho phép truy cập nhanh hơn nhưng dung lượng trống ít hơn tối đa.
  • Cấp 2 (L2): Bộ nhớ đệm liên tục trong kho dữ liệu Cassandra có tốc độ chậm hơn nhưng có nhiều dung lượng lưu trữ hơn.

Khi một mục dữ liệu trong bộ nhớ đệm L1 đến L1 TTL, mục đó sẽ bị xoá. Tuy nhiên, một bản sao của mục nhập được lưu trong bộ nhớ đệm L2 (có TTL dài hơn bộ nhớ đệm L1), nơi các trình xử lý thư khác vẫn có thể truy cập vào mã này. Hãy xem phần Trong bộ nhớ và bộ nhớ đệm cố định để biết thêm thông tin chi tiết về bộ nhớ đệm.

TTL tối đa L1

Trong Edge dành cho Cloud riêng tư, bạn có thể đặt TTL tối đa cho bộ nhớ đệm L1 đối với mỗi thư bộ xử lý bằng cách sử dụng thuộc tính Max L1 TTL (conf_cache_max.l1.ttl.in.seconds). Một mục nhập trong bộ nhớ đệm L1 sẽ hết hạn sau khi đạt đến giá trị TTL tối đa của L1 và sẽ bị xoá.

Lưu ý:

  • Theo mặc định, Max L1 TTL bị tắt (có giá trị -1), trong trường hợp này, TTL của một mục nhập trong bộ nhớ đệm L1 được xác định theo chính sách FillCache cài đặt thời gian hết hạn (cho cả bộ nhớ đệm L1 và L2).
  • L1 TTL tối đa chỉ có hiệu lực nếu giá trị của nó nhỏ hơn thời gian hết hạn tổng thể của bộ nhớ đệm.

Đặt TTL L1 tối đa

Bạn có thể đặt TTL tối đa trên trình xử lý thư như sau:

  1. Mở tệp cấu hình /opt/apigee/customer/application/message-processor.properties trong trình chỉnh sửa. Nếu tệp không tồn tại, hãy tạo tệp đó.
  2. Đặt thuộc tính TTL tối đa L1 thành giá trị mong muốn:
    conf_cache_max.l1.ttl.in.seconds = 180

    Bạn nên đặt giá trị là 180 giây.

  3. Đảm bảo rằng tệp thuộc tính thuộc sở hữu của "apigee" người dùng:
    chown apigee:apigee /opt/apigee/customer/application/message-processor.properties
  4. Khởi động lại trình xử lý thư:
    /opt/apigee/apigee-service/bin/apigee-service edge-message-processor restart

Nguyên tắc đặt TTL tối đa

Khi đặt TTL tối đa, hãy lưu ý các nguyên tắc sau:

  • Lỗi RPC: Nếu bạn nhận thấy lệnh gọi quy trình từ xa (RPC) bỏ lỡ giữa trình xử lý tin nhắn (MP) – đặc biệt là trên nhiều trung tâm dữ liệu— có thể bộ nhớ đệm L1 có các mục nhập cũ. Các mục này sẽ vẫn lỗi thời cho đến khi bị xóa từ bộ nhớ đệm L1. Việc đặt TTL L1 tối đa thành giá trị thấp hơn sẽ buộc mọi các mục nhập cũ sẽ được xoá và được thay thế bằng các giá trị mới từ bộ nhớ đệm L2, sớm hơn.
    Giải pháp: Giảm conf_cache_max.l1.ttl.in.seconds.
  • Quá tải trên Casandra: Khi bạn đặt một giá trị cho các mục nhập bộ nhớ đệm L1, Max L1 sẽ hết hạn thường xuyên hơn, dẫn đến thiếu bộ nhớ đệm L1 và nhiều lượt truy cập bộ nhớ đệm L2 hơn. Do bộ nhớ đệm L2 sẽ bị nhấn thường xuyên hơn, Cassandra sẽ phải chịu thêm tải.
    Giải pháp: Tăng conf_cache_max.l1.ttl.in.seconds

Theo quy tắc chung, hãy điều chỉnh Max L1 TTL thành một giá trị cân bằng tần số RPC thiếu giữa các MP với tải tiềm năng trên Cassandra.

Bạn nên đặt giá trị của conf_cache_max.l1.ttl.in.seconds thành ít nhất 180 giây (3 phút) để quá trình xử lý tiếp tục diễn ra suôn sẻ.