【问题标题】:Communication between databases with Java ee使用 Java ee 在数据库之间进行通信
【发布时间】:2019-08-10 16:49:59
【问题描述】:
我们的客户拥有 3 家具有不同数据库的商店。在每家商店都有一只野蝇在运行一些在它们之间进行通信的 web 服务。每个 10/30 行的 json 请求平均花费 1 秒。每只 Wildfly 使用 1.5 GB 的 RAM。我知道内存在 Java 中一直是个问题,但是使用 Javalin 或微服务之类的微框架而不是 java ee 应用服务器是否更经济?并且 node.js 会是更好性能的选择吗?
【问题讨论】:
标签:
java
web-services
jakarta-ee
wildfly
microservices
【解决方案1】:
在您开始研究可能需要进行重大重写的不同架构之前,请先了解所有这些时间的去向。在 WildFly 服务器上设置分析。首先做一个,然后有一些调用进来。检查在堆栈的各个部分花费了多少时间。对 Web 服务的调用是否处理得相当慢?然后看看时间都去哪儿了。它可能是数据库访问。一个这样的呼叫一旦进入服务器本身就可以很快处理吗?那么你最好的选择就是在网络层浪费时间。
检查网络流量。您可以为此使用 Wireshark 或类似的跟踪工具。查看从请求进入到响应发出之间实际经过了多长时间。是不是很慢,但 Wildfly 本身的处理速度似乎足够快?也许会有一些开销(比如安全性)。请求和响应之间的时间是否很快?您肯定将网络视为罪魁祸首。
最终,您可能需要同时在所有三台服务器上启用配置文件和网络跟踪,以查看发生了什么,或者查看两台服务器的每个组合。结果可能只有其中一个是瓶颈。如果您有服务器A、B 和C,从它的声音来看,您的设置可能会导致从A 到B 的调用也需要从B 到C 之前的调用一些结果可以返回到A。如果是这种情况,难怪您可能会看到一些严重的延迟。
但是,在您开始决定更改整个框架和不同的编程语言之前,先测量并找出问题的根源。否则,您可能会花很多时间在没有任何改进的事情上。如果架构存在根本缺陷,则需要考虑不同的方法。如果这仍处于原型设计阶段,那将容易得多。
【解决方案2】:
好吧,首先你可以修剪你的 WildFly 安装或尝试 Quarkus :)