【问题标题】:understanding good practice for java rmi了解 java rmi 的良好实践
【发布时间】:2013-04-09 10:16:56
【问题描述】:

我有一个 RMI 应用程序, 基本上来自客户端的每个请求,都会创建一个到数据库的新连接(在服务器端),执行 SQL 查询并将数据转换为可序列化的类,然后发送回客户端。

应用程序的用户群不断增长,请求需要很长时间才能完成。以前的程序员想出的解决方案是创建一个从服务器到数据库的固定大小的连接池,每个客户端的请求都使用最旧的(最近最少使用的)来运行 SQL 查询。 我的问题是:解决此类问题的正确方法是什么?

【问题讨论】:

    标签: java rmi


    【解决方案1】:

    我想说,汇集数据库连接已经是一个重要的步骤,因为建立连接的成本很高。但是,我不会使用我自己的池,而是使用现有且经过验证的池化数据源实现,例如 DBCP 或 C3P0。它们具有许多有用的功能,例如可变大小、自动连接检查等...

    如果是查询本身占用的时间太长,那么优化会比这更复杂。各种方法都是可能的,具体取决于具体情况,例如:

    • 是否只有一个 SQL 查询,始终如您的问题所暗示的那样?
    • 数据库是只读的吗?
    • 如果没有,修改是在同一个应用程序内进行还是在外部进行?
    • 等等……

    减少请求时间的可能方法(我现在能想到的):

    • 在 java 应用程序中缓存结果(但这是一个庞大的主题...)
    • SQL 请求的优化
    • 优化 DB 架构,使用索引或更深入地重构表结构
    • 将发送回客户端的数据量减少到最低限度(以防网络成为瓶颈)

    我希望这会有所帮助。我们确实需要更多有关用例的详细信息,以便为您提供更好的答案。

    【讨论】:

    • 谢谢,这正是我想要的,顺便说一句,有很多不同的 sql 查询,而不仅仅是只读的。并且所有对服务器的调用都是通过这个 1 rmi 应用程序进行的。
    猜你喜欢
    • 2010-09-09
    • 1970-01-01
    • 2012-07-20
    • 1970-01-01
    • 1970-01-01
    • 2012-10-21
    • 1970-01-01
    • 1970-01-01
    • 2021-12-02
    相关资源
    最近更新 更多