gpt4 book ai didi

java - 如何在高性能 Java Web 服务应用程序中共享通用数据结构

转载 作者:太空宇宙 更新时间:2023-11-04 08:09:26 24 4
gpt4 key购买 nike

我正在开发几个网络服务 - 一个用于购买产品,另一个用于验证产品。多个客户端将调用“购买”(大约 250 个/秒),“验证”也是如此。他们需要在调用后端之前查询和更新表格数据结构。

我有一种感觉,使用像 Oracle 这样的关系数据库表来维护这种通用数据结构会因为网络延迟而减慢速度(假设数据库和查询经过优化调整)。有人建议我使用 EhCache 和 Hazelcast,但我更喜欢使用数据库表,因为我更了解它。

谁能确认通过网络访问数据库是否会成为每秒处理 250-300 个事务的应用程序的瓶颈?

当然,如果服务器实例出现故障并且我们丢失了数据结构的内存表示形式,我们也没关系。

最佳答案

这实际上取决于您的应用程序正在做什么。
当然,您可以使用具有昂贵硬件和昂贵网络硬件的数据库机器。
问题是——这真的有必要吗?
正如一些评论中所述 - 如果您主要执行读取(读取请求多于写入请求),缓存将在很大程度上帮助您。为了优化您应该考虑建立索引(例如 - 如果您存储寻址,则可以考虑通过“ip”字段建立索引,假设大多数不按 ID 的查询都是按此字段),
这只是正确的数据库模式规划的一部分(其他方面可能是通过尽可能正确地建模数据来避免表之间的复杂连接),甚至可能是 NoSQL 数据库。
如果要进行缓存和扩展,您应该使用分布式缓存/分布式数据结构。
例如,infinispan可以在这里提供帮助。
您还可以通过在内存/进程中使用(即,其代码位于 jar 中并共同托管在应用程序的 JVM 上)来提高性能,例如 h2 - 这可以进一步减少查询时间。但再说一次,这实际上取决于您的具体用例,不幸的是您所描述的内容太笼统了。

关于java - 如何在高性能 Java Web 服务应用程序中共享通用数据结构,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11475492/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com