首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >进程间共享线程

进程间共享线程
EN

Stack Overflow用户
提问于 2015-06-05 12:15:39
回答 2查看 117关注 0票数 0

我想这是不可能的。但是我正在寻找最好的方法来分离我的服务的不同层,但是能够快速地访问层,或者没有IPC/RMI的开销。

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

我们现在拥有的是一个承载数据库和访问控制的服务器。我们使用RMI对消费者进行数据请求。这很慢,而且不太适应。

我们需要目前还没有的性能和可伸缩性。

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

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

更新

  • 我们目前正在使用Java。

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

我们可以有多达1000名消费者。

EN

回答 2

Stack Overflow用户

发布于 2015-06-05 12:31:53

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

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

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

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

但是无论如何,我不相信你最初关于RMI慢和不缩放的说法是完全正确的。如果没有缩放,您可能没有使用正确的框架。也许您有一个问题,就是服务器上只有一个RMI端点。您是否考虑过具有无状态会话bean的J2EE系统?

不知道自己的需求,很难说。

票数 1
EN

Stack Overflow用户

发布于 2015-06-05 12:48:48

如果您的目标是通知用户,则应该考虑发布/订阅消息传递(pub/sub)。有许多中间件供应商提供这种架构,尽管大多数在生产场景中都是昂贵的。对于开放源码,请查看http://redis.io/topics/pubsub。(无从属关系)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30666329

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档