Page Cache
Page Cache
是文件的缓存,用于加速对文件的读写,它为RocketMQ提供了更强大的堆积能力。
RocketMQ将数据文件映射到内存中,写消息的时候首先写入Page Cache,并通过异步刷盘的模式将消息持久化(同时也支持同步刷盘),消息可以直接从Page Cache中读取。
问题:
该模式大多数情况读写速度都比较迅速,但当遇到操作系统进行脏页回写,内存回收,内存换入换出等情形时,会产生较大的读写延迟,造成存储引擎偶发的高延迟。
解决:
RocketMQ采用了多种优化技术,比如
内存预分配,文件预热,mlock系统调用,读写分离
等,来保证利用Page Cache优点的同时,消除其带来的延迟。
降级、限流、熔断
限流
对于
离线应用
场景,容错处理就是利用滑动窗口机制,通过缓慢缩小窗口
的手段,来减缓从服务端拉的频率以及消息大小,降低对服务端的影响。
而对于高频交易,数据复制
场景,则采取了快速失败策略
,既能预防应用连锁的资源耗尽而引发的应用雪崩,又能有效降低服务端压力,为端到端低延迟带来可靠保障。
降级
主要来自两方面:
一方面来自于用户数据的收集,另一方面来自引擎组件的服务QoS设定。
对于前者,通过运维管控系统推送应用自身QoS数据,一般会输出如下表格。而
引擎组件的服务QoS
,如服务于消息问题追溯的链路轨迹组件,对于核心功能来说,定级相对较低,可在洪峰到来之前提前关闭
。
网友评论