
场景某服务记录日志会较多但写日志就不能是同步IO写磁盘了为什么不同步写呢是因为同步写日志边际成本很高一般的解决方案是同步写到内存某个位置然后不管由专门的逻辑处理日志。处理流程日志处理方案1. 按时间维度存储10s 写一次2. 按日志大小维度处理1m 写一次技术方案import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.InitializingBean; import org.springframework.stereotype.Service; import java.util.concurrent.LinkedBlockingQueue; Slf4j Service public class TestServiceQueue implements InitializingBean { private static final LinkedBlockingQueueObject QUEUE new LinkedBlockingQueue(100); private Thread loggerProducerThread; Override public void afterPropertiesSet() throws Exception { // 注册消费者 loggerProducerThread new Thread(new Runnable() { Override public void run() { try { Object logger QUEUE.take(); if (logger ! null) { // 处理日志 } } catch (InterruptedException e) { log.error(process data error, e); } } }, logger-record-thread); loggerProducerThread.start(); } // 生产者 public void produce() { try { // 构建日志对象 QUEUE.put(logger 111 333 222); } catch (InterruptedException e) { log.error(produce data error, e); } } }