default CompletableFuture<ReadDataBlock> read(long streamId, long startOffset, long endOffset, int maxBytes) {
        return read(TraceContext.DEFAULT, streamId, startOffset, endOffset, maxBytes);
    }
Like linux page cache, S3BlockCache is responsible for:
1. read from S3 when the data block is not in cache.
2. caching the data blocks of S3 objects.
s3stream/src/main/java/com/automq/stream/s3/cache/S3BlockCache.java