首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >服务器IO瓶颈-如何减少数据库的读/写,同时仍然保留我的数据?

服务器IO瓶颈-如何减少数据库的读/写,同时仍然保留我的数据?
EN

Stack Overflow用户
提问于 2014-07-20 15:48:31
回答 2查看 247关注 0票数 0

我们正在开发一个带有apache tomcat服务器集群和负载均衡器的web应用服务器。我们的数据库是mySQL,我们在项目中使用了spring框架。

其中一个需求是能够维持10K的并发用户请求。

现在,这导致了一个真正的问题,因为在每个请求句柄中,我们执行以下操作:

1)开始事务

2)从DB获取数据(如果需要)

3)转换数据

4)将数据持久化回DB

显然,这是此过程的主要IO瓶颈。如果我们使用内存中的DB,它将显着提高性能。

更明显的是,现在的服务器可以保持很高的流量,并且可以做我上面提到的所有事情。因此,必须有一个更好的架构来处理这些请求,对吗?

有什么想法吗?参考资料?

谢谢

EN

回答 2

Stack Overflow用户

发布于 2014-07-20 17:00:53

如果您的数据库访问中存在IO瓶颈,则应使用缓存。常见的开源java缓存有EhcacheInfinispan (前身是JBoss缓存或Hazelcast )。

当大多数请求是只读的并且涉及相同的数据时,缓存可以提供显著的性能改进。如果每个请求都读取和写入一个不同的元素,则增益会小得多。

有不同的缓存体系结构,这取决于数据是否主要是只读访问的,是否有单个web服务器或集群等。根据您的应用程序要求,您的里程将有所不同……你得自己试一试。

票数 1
EN

Stack Overflow用户

发布于 2014-07-20 17:19:23

正如@Serge指出的那样,缓存在处理只读数据时非常有效。我从来没有遇到过有10k并发写入的项目需求。如果您的需求是以某种方式存储会话数据以从已完成的节点恢复,您可以看看Apache Zookeeper。但是,由于您的问题更多地是关于减少数据库访问,因此最好的提示是查看ehcache。它也可以用作冗余存储节点。既然你是usibg Spring,那就来看看onboard @cachable的特性。也许你的解决方案是缓存整个请求。

另一种选择是在主/从模式中使用Maria db。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24848463

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档