想向各位朋友探讨一下单机负载均衡的话题

我们单位有一个合作三方公司部署充值项目时候采用的一种单机负载均衡的方案。

同一台windows服务器,同一套代码,启动了多个tomcat,使用nginx对多个tomcat进行负载均衡,来解决单进程崩溃后服务中断的问题,因为之前这台服务器隔三差五就tomcat崩溃,服务直接中断,三方公司就采用这样的方案处理了。。。


我想参考下,这种负载方案放在undertow身上可取吗?有意义吗?

评论区

zzutligang

2021-01-20 13:57

方法可行,但没啥意义!既然一个进程可以崩,那其他进程同样可以崩。这种做法没啥意义。还是找三台实体机器吧。当然,如果你非要这么做,完全可以的。只是需要考虑的是web登录的session放在某个地方,例如redis里。

lcmkc

2021-01-20 17:19

@zzutligang 感谢回答。。

JFinal

2021-01-21 00:56

放在 undertow 上与在 tomcat 上是一样的,当然是可以的

只需要处理好 session 共享就可以了,其实只需要弃用 session,而是将登录信息放在一个集中的数据库的 table 中就可以了

社区提供的 jfinal club 就是使用的 session 表方案:
https://jfinal.com/club

jfinal爱好者22

2021-01-21 08:57

@JFinal 用数据表解决session共享问题,每次请求都进行数据库读写开销不小

sioui

2021-01-21 10:35

我发现很多支付、订单类的项目都喜欢一个线程跑到底,实际上最好的方式应该是多线程去处理这些业务。

sioui

2021-01-21 10:39

@jfinal爱好者22 看并发数了,现在数据库大多装在ssd上,速度非常快,并没有想象那么弱

doubuxingle

2021-01-21 11:30

@jfinal爱好者22 中间加一层ehcache吧

SuperEric

2021-01-21 11:48

@zzutligang @lcmkc 还是有意义的,比如我有过类似的应用经历,启动了多个,并且定时一个一个去重启。Nginx会自动识别后端正常在运行的应用。其实也是偷懒的办法,不想解决根本问题,目前此方法线上稳定跑了一年多。 实用就好,
不折腾!

zzutligang

2021-01-21 12:22

@SuperEric 有道理,没有最好的,只有最适合的。

pobaby

2021-01-23 10:35

一台物理机仍然存在风险,比如峰值并发,内存耗尽了,3个实例服务同样都会挂掉。

lcmkc

2021-01-25 08:36

@pobaby 有道理。。

逍遥一生

2021-02-01 16:32

我也搞过这个 一个nginx接上八九个tomcat应用 主要是为了避免其中一个应用挂了重启的时候把其它的服务也重启了 做集群的话还是多台机器比较稳当