2

Tomcat集群能带来什么?

1、提高服务的性能,并发能力,以及高可用性;

(首先,一台机子一个Tomcat,如果你用单机部署多Tomcat的话,他们会共享网卡、内存、磁盘IO等,其性能依旧不行,且一台机子的HTTP线程池是有限的,多机的话可以对应处理并发,对于高可用性,Nginx下挂载多台Tomcat,当一台宕机时,可以直接将该节点取消,转接到可用节点)

2、提供项目架构的横向扩展能力;

(类似天猫双11,通过动态添加Tomcat,Nginx热部署完成横向扩展功能)

Tomcat集群实现原理

(一步登天)通过Nginx负载均衡进行请求转发

Tomcat集群新旧框架对比解析

单机或常用框架

图片描述

一个很合理的架构思路,小白也需要了解一下,一眼就能读懂。

转为集群后的“理想”架构

图片描述

Tomcat集群可能带来的新问题?

1、由上图,有经验的朋友一眼已经看出了Session问题,Session登录信息存储及读取的问题
2、服务器定时任务并发的问题(类似电商类的订单定时关闭任务,可能存在并发问题)

当然,也是有一些解决方案:
类似:采用nginx ip hash policy

优点:可以不改变现有技术架构,直接实现横向扩展(省事)
缺点:
    1、导致服务器请求(负载)不平均(完全依赖ip hash的结果)
    2、在Ip变化的环境下无法服务
    

那么我们理应采用第二种,第一种在正常的公司与团队都很少采用,而也由此演变了比较合理的集群架构

图片描述

通过Session Server解决单个服务器对应单个Session的问题,后期还要编码处理单点登录,且Redis还要处理分布式锁(防止多机同时启动定时任务,并发问题等)

这里要注意的是,架构的演进是和项目的功能、业务与问题相关的,而不是理所当然的照搬。


如果本文对你有所帮助,欢迎关注个人技术公众号,或者点赞,谢谢。
图片描述


Java猫说
1.3k 声望930 粉丝

现架构设计(码农)兼创业技术顾问,不羁平庸,热爱开源,杂谈程序人生与不定期干货。