10.NodeJS框架
JavaScript采用单线程机制以避免DOM渲染冲突,通过事件循环(Event Loop)实现异步操作。任务队列管理异步事件,主线程执行完同步任务后不断从队列中读取任务。Node.js基于V8和libuv,利用事件驱动处理并发,并通过child_process模块支持多进程。Express和Koa为常用框架,前者基于回调,后者使用async/await与洋葱模型中间件,提升异步控制与错误处理能力。
应用架构图
在业务架构基础上,技术架构将需求转化为技术实现。涵盖分层设计、技术选型与关键技术关系,包括单体四层结构(表现、业务、数据、基础层)与分布式应用架构,明确内外部系统调用关系及边界,构建完整技术体系。
应用架构图
在业务架构基础上,技术架构将需求转化为技术实现,涵盖分层设计、技术选型与关键组件关系。包括单体四层结构(表现、业务、数据、基础层)与分布式SOA架构,明确应用内外调用关系及边界,形成完整技术体系。
RocketMQ:底层Netty频繁OS OOM
本文记录了一例Java应用因多ClassLoader加载多个Netty的PooledByteBufAllocator导致堆外内存超限、触发OS OOM的排查过程。通过NMT、Arthas等工具分析,发现7个不同类加载器各自实例化独立的分配器,均不受MaxDirectMemorySize全局限制,最终总堆外内存远超预期。根因在于Netty使用Unsafe直接申请内存,绕过JVM监管。短期建议调低堆内存以腾出空间,长期需中间件协同优化。