java - 使用Java ee进行数据库之间的通信

标签 java web-services jakarta-ee wildfly microservices

我们的客户拥有 3 家拥有不同数据库的商店。每个商店都有一只野蝇运行一些网络服务,它们之间进行通信。每个 10/30 行的 json 请求平均花费 1 秒。每只 Wildfly 使用 1.5 GB 的 RAM。我知道内存在 Java 中始终是一个问题,但是使用 Javalin 或微服务等微框架而不是 java ee 应用服务器是否可以更经济? Node.js 会是获得更好性能的选择吗?

最佳答案

在开始研究不同的架构(这可能会导致重大重写)之前,请找出所有时间都花在哪里了。在 WildFly 服务器上设置分析。首先在其中一个上执行此操作,然后进行一些调用。检查堆栈的各个部分花费了多少时间。对 Web 服务的一次调用处理速度是否相当慢?然后看看时间都去哪儿了。可能是数据库访问。一旦这样的调用进入,服务器本身是否会很快处理它?那么你最好的选择就是在网络层上浪费时间。

检查网络流量。为此,您可以使用 Wireshark 或类似的跟踪工具。查看请求传入和响应发出之间实际经过了多少时间。是不是很慢,但 Wildfly 本身的处理速度似乎足够快?也许存在一些开销(例如安全性)。请求和响应之间的时间是否非常快?您肯定将网络视为罪魁祸首。

最终,您可能需要在所有三台服务器上同时启用分析和网络跟踪,以查看正在发生的情况,或者对于两台服务器的每种组合。结果可能只有其中之一是瓶颈。如果您有服务器 ABC,从声音来看,您的设置可能会导致来自 A 的调用code> 到 B 还需要从 BC 进行调用,然后才能将某些结果返回到 A。如果是这种情况,那么您可能会看到一些严重的延迟也就不足为奇了。

但是,在开始决定更改整个框架和不同的编程语言之前,请衡量并找到问题的根源。否则,你可能会投入大量时间在某件事上却毫无进步。如果架构存在根本缺陷,您需要考虑不同的方法。如果这仍处于原型(prototype)设计阶段,那会容易得多。

关于java - 使用Java ee进行数据库之间的通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55253214/

相关文章:

java - Java中删除所有链表

java - 获取适用于 Android 的 Facebook 电子邮件 Api

java - 使用 Java Reflection 从对象列表中查找参数总和

java - Web 实例已经停止

java - float Action 按钮点击时会跳转

java - 比较数组并比较两个数组中的每个元素

php - webservice接收参数数组作为字符串而不是数组

web-services - 在 Scala 中模拟外部 Web 服务的最轻量级 Web 服务框架

java - 使用 Spring WS Test 测试 CXF 客户端

java - Spring IoC 和 Java EE