Web服务器线程池队列和消息队列有什么关系

开拓者Amadues 2021-06-24 15:01:22

比如Tomcat,是不是一定程度上可以替代消息队列?

...全文
496 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
老王就是我 2021-06-25
  • 打赏
  • 举报
回复

jdk本身队列的类

=PNZ=BeijingL 2021-06-24
  • 打赏
  • 举报
回复

1.两者内部都使用了队列,如阻塞队列、优先级队列;
2.使用线程池时应用服务器既充当生产者又充当消费者,也是消息队列中间件的实现者,使用消息队列时中间件、生产者、消费者可以部署在不同的应用机器上(当然也可以部署在一台服务器上但很少有人这么用);
3.出于第2点线程池更适合非分布式的系统,但在分布式架构下消息队列明显是更优项;
4.使用消息队列会带来额外的网络开销;
5.消息队列的耦合性更低,可扩展性更好,适用于弱一致性的场景,如对log日志的解耦;
6.消息队列自动实现消息的持久化,中间已经实现了大量功能,如消息转发、消息拒绝、消息重试,以及对消息的一些监控,例如消息的消费状态、消息的消费速率等,使用线程池如果需要很多功能还要自己去实现,例如需要执行状态需要打印队列数量、计算消息消费速度;
7.在不同系统间的服务调用(调用协议也可能不一致)线程池很难实现或开销很大,这时候消息队列可以屏蔽不同机器或不同协议的问题;
8.使用消息队列会提升系统的复杂度,网络抖动怎么办?最大队列长度怎么设置?超时时间又设置多少?Qos又设置为多少?消费者多少个比较合适?Channel cache size又该设置为多少?业务线可能都是用同一个Mq,你占资源太多,或者设计不当可能会导致整个Mq故障。

51,412

社区成员

发帖
与我相关
我的任务
社区描述
Java相关技术讨论
javaspring bootspring cloud 技术论坛(原bbs)
社区管理员
  • Java相关社区
  • 小虚竹
  • 谙忆
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧