高并发服务器架构--SEDA架构分析( 四 )


观察queue长度 , 如果超过阀值就添加线程
移除空闲线程

(2)、批量管理器
目的:低响应时间和高吞吐量的调度
操作:
Batching因子:Stage一次处理的消息数量
小的batching因子:低响应时间
大的batching因子:高吞吐量
尝试找到具有稳定吞吐量的最小的batching因子
观察stage的事件流出率
当吞吐量高的时候降低batching因子 , 低的时候增加


三、小结
SEDA主要还是为了解决传统并发模型的缺点 , 通过将服务器的处理划分各个Stage , 利用queue连接起来形成一个pipeline的处理链 , 并且在Stage中利用控制器进行资源的调控 。 资源的调度依据运行时的状态监视的数据来进行 , 从而形成一种反应控制的机制 , 而stage的划分也简化了编程 , 并且通过queue和每个stage的线程池来分担高并发请求并保持吞吐量和响应时间的平衡 。 简单来说 , 我看中的是服务器模型的清晰划分以及反应控制 。

注:需要C/C++ Linux服务器开发学习资料私信“资料”(资料包括C/C++ , Linux , golang技术 , Nginx , ZeroMQ , MySQL , Redis , fastdfs , MongoDB , ZK , 流媒体 , CDN , P2P , K8S , Docker , TCP/IP , 协程 , DPDK , ffmpeg等) , 免费分享

推荐阅读