Đặ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ữ dữ liệu một cách bền vững trên nhiều yêu cầu. Khi dữ liệu API được nhận, dữ liệu đó sẽ được lưu trữ trong bộ nhớ đệm trong một khoảng thời gian ngắn rồi bị 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à thời gian hết hạn hoặc thời gian tồn tại (TTL) của bộ nhớ đệm. Mỗi bộ nhớ đệm 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ớ, có quyền truy cập nhanh hơn nhưng dung lượng lưu trữ trống ít hơn.
  • Cấp 2 (L2): Bộ nhớ đệm ổn định trong kho dữ liệu Cassandra, có quyền truy cập chậm hơn nhưng dung lượng lưu trữ sẵn có nhiều hơn.

Khi một mục dữ liệu trong bộ nhớ đệm L1 đạt đến TTL L1 thì mục đó sẽ bị xoá. Tuy nhiên, một bản sao của mục nhập được lưu giữ trong bộ nhớ đệm L2 (có TTL dài hơn bộ nhớ đệm L1), nơi các trình xử lý thông báo khác vẫn có thể truy cập được bản sao đó. Xem bài viết Các cấp bộ nhớ đệm ổn định và trong bộ 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 đám mây riêng tư, bạn có thể đặt giá trị TTL tối đa cho bộ nhớ đệm L1 cho mỗi trình xử lý thông báo bằng thuộc tính TTL tối đa L1 (conf_cache_max.l1.ttl.in.seconds). Một mục trong bộ nhớ đệm L1 sẽ hết hạn sau khi đạt giá trị TTL tối đa L1 và sẽ bị xoá.

Lưu ý:

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

Đặt TTL tối đa L1

Bạn có thể đặt TTL tối đa L1 trên bộ xử lý thông báo 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 sử dụng giá trị 180 giây.

  3. Đảm bảo tệp thuộc tính thuộc sở hữu của người dùng "apigee":
    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 L1

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

  • Thiếu RPC: Nếu bạn nhận thấy lệnh gọi quy trình từ xa (RPC) bị bỏ lỡ giữa các trình xử lý thông báo (MP) – đặc biệt là trên nhiều trung tâm dữ liệu – thì có thể bộ nhớ đệm L1 có các mục nhập cũ. Các mục nhập này sẽ vẫn lỗi thời cho đến khi chúng bị xoá khỏi bộ nhớ đệm L1. Việc đặt TTL tối đa L1 thành giá trị thấp hơn sẽ buộc phải xoá mọi mục nhập cũ và 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.
  • Tải quá nhiều lần trên Casandra: Khi bạn đặt một giá trị cho tối đa L1 TTL, các mục nhập bộ nhớ đệm L1 sẽ hết hạn thường xuyên hơn, dẫn đến nhiều bộ nhớ đệm L1 bị bỏ lỡ và nhiều lượt truy cập vào bộ nhớ đệm L2 hơn. Vì bộ nhớ đệm L2 sẽ bị nhấn thường xuyên hơn, nên Cassandra sẽ phải chịu mức tải tăng lên.
    Giải pháp: Tăng conf_cache_max.l1.ttl.in.seconds

Theo nguyên tắc chung, hãy điều chỉnh Max L1 TTL thành một giá trị cân bằng giữa tần suất RPC bị 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ý diễn ra suôn sẻ.