负载均衡架构和软件设计问题

发布于 2022-09-01 06:28:53 字数 147 浏览 25 评论 0

一个比较实际的问题,部署到TOMCAT上的一个MIS系统,现在用户量增加,打算通过Apache前端做软负载均衡,可MIS系统中使用的session和自定义的数据缓存(ehcache)在多TOMCAT服务器中没想好怎么弄。这类高并发大用户量的MIS系统应该怎么架构和软件设计呢?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(5

困倦 2022-09-08 06:28:53

不建议搞广播、all-to-all复制什么的。
可以把共享数据放在redis或memcached里面,而且不用自己造轮子。
轮子:
memcached-session-manager
tomcat-redis-session-manager

葮薆情 2022-09-08 06:28:53

这种一般需要才去集群可分布式缓存来处理,比如memcached和redis。

把session信息和缓存都发在redis上,就不用怕应用机器多了。

霓裳挽歌倾城醉 2022-09-08 06:28:53

session的问题比较好解决,负载均衡大部分能够做到session sticky,就是一个用户的请求会固定到一台服务器,这样的话session就不是问题了。

自定义的数据缓存,ehcache本身是支持集群同步的,可以到网上找相关的资料。

从架构方面看,使用redis类的分布式缓存更为合理,但涉及系统的改造比较多,量力而行吧。

白色秋天 2022-09-08 06:28:53

我是把ehcache数据转到memcached去了。

何必那么矫情 2022-09-08 06:28:53

分离数据操作和数据,即无状态处理和状态保存。tomcat的集群应该有这个功能,session及其attributes都会保存起来(例如,单机模式下setattribute是写入实例内存,集群模式下就是写入状态保存模块,这个不需要改代码),但是,用户数据,例如,你控制类里面的实例,数组,hashmap等不会保存,因此需要使用额外的共享内存来实现,redis就可以(注意:为了减小代码修改量,可以实现一个redis+hashmap的类,重写put remove等方法,再做使用类的更改;redis也支持主备模式)。另外,还要注意集群中定时器的处理,建议用quatz实现,它把定时器数据都保存在数据库当中,只要有一个实例存活,定时器功能就不会失效。
负载均衡功能主要考虑健康检查、负载策略和会话保持,根据需要选择开源的就行(注意负载均衡本身的单点问题)。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文