Tomcat集群

简介: 目录1. Tomcat集群能带来什么1.1 提高服务的性能,并发能力以及高可用性一般一台机器部署一个Tomcat,因为部署多个有资源共享瓶颈(比如内存网卡磁盘I/O等),所以一般进行隔离一台TomcatHTTP线程...

目录

img_003d8d3700417ffc66679ef9195324d5.png

img_50994340d72345b77cdad01360b07169.png

1. Tomcat集群能带来什么

1.1 提高服务的性能,并发能力以及高可用性

  • 一般一台机器部署一个Tomcat,因为部署多个有资源共享瓶颈(比如内存网卡磁盘I/O等),所以一般进行隔离
  • 一台TomcatHTTP线程池是有限的,根据机器性能,那么两台很可能可承载的HTTP线程就是2倍
  • Ngix下挂了多个Tomcat,当Tomcat1挂掉时,可以把这个节点从ngix负载均衡Tomcat集群的配置中摘掉,ngix还会达到可用的Tomcat服务器上,并不影响我们提供的服务

1.2 提供项目架构的横向扩展能力

假设有一台服务器,通过不断升级他的内存CPU加固态硬盘etc,这种属于纵向提高机器的配置来达到提高Tmcat所提供服务的性能,随着硬件不断提高,成本是指数级上升的
比如天猫平时访问量不太多,到双十一时就可以通过Tomcat集群做到横向扩展,只需要添加Tomcat节点即可(根据实际数据和历史数据进行评估)

2. Tomcat集群实现原理

通过Nginx负载均衡进行请求转发

3. 一,二期架构对比

img_ced2d1a52f4fc5177b9d583eb41fcf65.png
一期架构

img_fc0e9dbc93ad15511f45f1e803c73270.png
"想当然"的二期结构

3.1问题:

  • session登录信息存储及读取无法共享问题
  • 服务器定时任务并发的问题
    eg.当订单没有付款,超时时,多个Tomcat会同时启动定时任务,一起去读取sql然后判断订单,对于逻辑过于复杂的业务就会造成线上数据错乱,数据出现竞争关系,难以排查出问题
  • ...

所以并不是随意加Tomcat即可

3.2解决方案

3.2.1 采用nginx ip hash policy(单纯解决登录问题)

  • 优点: 可以不改变现有技术架构,直接实现横向扩展(省事)
    根据请求的ip,对ip进行hash取模,hash后分配到指定服务器
  • 缺点:
    • 导致服务器请求(负载)不平均(完全依赖ip hash的结果)
    • 在ip变化的环境下无法服务(每次不同ip hash到不同Tomcat服务器导致)


      img_0585643f11b0fd198fe1e3b273f4a236.png
      二期真架构

4 Tomcat单机部署多应用-CentOS6.8

Nginx负载均衡配置,常用策略,场景及特点

轮询(默认)

实现简单,但是不考虑每台服务器的处理能力


img_ccba6443e2e1dd537d11df7b67dc3a07.png

权重

考虑了每台服务器的处理能力


img_7a5cbc40fd2708e497a670dc9760799d.png

ip hash

能实现同一个用户访问同一个服务器,但是不一定平均


img_41d8b2ecaa796ce962b4092570b29bc1.png

url hash(第三方)

能实现同一个服务访问同一个服务器,但是分配请求会不平均,请求频繁的url请求会请求到同一个服务器上

fair

目录
相关文章
|
11月前
|
存储 负载均衡 NoSQL
Tomcat 9.X(9.0.74)集群实现Session共享(基于redisson)
本文主要介绍了tomcat集群环境下基于redis+Redisson实现session共享,分享给大家,供广大从业者学习和参考。
11547 4
|
8月前
|
域名解析 运维 负载均衡
【运维知识进阶篇】Tomcat集群实战之部署zrlog博客(Tomcat服务安装+静态资源挂载NFS+Nginx负载均衡+HTTPS证书+Redis会话保持)
【运维知识进阶篇】Tomcat集群实战之部署zrlog博客(Tomcat服务安装+静态资源挂载NFS+Nginx负载均衡+HTTPS证书+Redis会话保持)
252 1
|
11月前
|
负载均衡 Java 应用服务中间件
tomcat集群下的session共享和负载均衡(memcache实现)
tomcat集群下的session共享和负载均衡(memcache实现)
|
11月前
|
负载均衡 NoSQL Java
tomcat集群下的session共享和负载均衡(redis实现)
tomcat集群下的session共享和负载均衡(redis实现)
210 0
|
11月前
|
NoSQL Java 应用服务中间件
tomcat集群使用redis实现session共享
tomcat集群使用redis实现session共享
231 0
|
存储 负载均衡 NoSQL
tomcat集群环境下如何保证session一致性
tomcat集群环境下如何保证session一致性
186 0
tomcat集群环境下如何保证session一致性
|
缓存 负载均衡 网络协议
tomcat + nginx 的 负载均衡和动静分离集群
tomcat + nginx 的 负载均衡和动静分离集群
130 0
|
存储 负载均衡 调度
|
存储 Java 应用服务中间件
|
负载均衡 Java 应用服务中间件
【集群】nginx+keepalived负载均衡高可用(四层/七层反向代理)、nginx+Tomcat动静分离(下)
文章目录 前言 一、nginx反向代理 1.1 四层反向代理(速度快) 1.2 配置stream模块
160 0