gpt4 book ai didi

java - 进程间共享线程

转载 作者:行者123 更新时间:2023-12-01 11:27:53 24 4
gpt4 key购买 nike

我认为这是不可能的。但我正在寻找最好的方法来分离服务的不同层,同时能够快速访问层或无需 IPC/RMI 开销。

我使用的主要编程语言是java,但如果需要也可以使用C++。

我们现在拥有的是托管数据库和访问控制的服务器。我们使用RMI供消费者请求数据。这很慢并且扩展性不太好。

我们需要性能和可扩展性,但目前我们还没有。

我们正在考虑使用分层架构,以数据库为基础,在其之上进行访问控制,并使用通知总线来通知客户端数据库中的更改。主要问题是我们希望避免/或最小化的通信开销。

是否有任何神奇的线程可以在两个上下文(切换上下文)中运行并以这种方式共享信息。我知道简短的答案是否定的,但是有哪些选择?

更新

  • 我们目前正在使用 Java RMI。

我们的基础层将提供一个 API,可用于创建在顶部运行的插件。所以我们没有固定的 Collection 家/消费者。我们可以运行 5-6 个收集器和相同数量的消费者。

我们最多可以有 1000 个消费者。

最佳答案

我的第一个建议是您应该购买一本关于构建可扩展应用程序的书(或查找在线教程),因为您似乎很迷失。

在进程之间共享线程在任何级别上都没有意义 - 它毫无意义,但您可以共享线程访问的数据,这可能就是您想要的。

最快的方法是基于 C 的 IPC(例如共享内存、信号量等: Shmget )。您说您想避免 IPC 的开销,但实际上,它不会比这更快。

但是为什么需要多个进程呢?如果您担心进程之间通信的开销,是否只需将线程放在一个进程中?没有理由不同的层必须处于不同的进程中。

但无论如何,我不相信您最初关于 RMI 缓慢且无法扩展的说法是完全正确的。如果它不能扩展,那么您可能没有使用正确的框架。也许您遇到的问题是服务器上只有一个 RMI 端点。您是否考虑过使用无状态 session Bean 的 J2EE 系统?

在不了解您的要求的情况下,很难说。

关于java - 进程间共享线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30666329/

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