考虑到可扩展性的基于组件的应用程序:OSGi 还是 Akka?

2024-03-06

在我的硕士论文中,我正在开发一个用于销售大型活动门票的应用程序框架。我的主要要求是可修改性、可扩展性和性能。我的客户(活动组织者)应该能够在运行时轻松替换组件并添加功能。此类组件的一个示例是座位分配组件。

我的导师说看看 OSGi。松散耦合的捆绑包的想法当然很有吸引力。在寻找替代方案时,我发现了 Akka。这个框架承诺了很多东西,比如可扩展性和高性能。我想知道 Akka 的 actor 概念是否适合我的可修改性要求。 Akka 似乎比 OSGi 更有生产力,因此开发速度会更快。 Akka 似乎也更适合可扩展性。如果使用 OSGi,我的日子会更难过。

如果您有 OSGi 和 Akka 的经验,您会向我推荐哪一个?比较这两种技术的优缺点是什么?最后,OSGi 或 Akka 是否有任何好的替代方案可以满足我的要求?

EDIT

首先,感谢您到目前为止的回复,您给了我们很大的帮助。 如下所述,我试图比较苹果和梨。一个更合乎逻辑的问题是:OSGi 和 Akka 如何一起使用并相互受益?这是如何构造的?您的所有参与者是否都驻留在一个 OSGi 捆绑包中,他们是否每个人都获得一个单独的捆绑包,是否有混合解决方案,或者是否确实存在一种“正确”的方法来做到这一点?

EDIT bis

我发布了一个后续问题here https://stackoverflow.com/questions/20163507/how-can-osgi-and-akka-benefit-from-each-other-how-is-this-structured,询问如何结合OSGi和Akka。


正如彼得所说,它们没有直接可比性。事实上,您可以一起使用它们,并且它们应该是非常互补的。

Akka 提供了异步通信 API。 OSGi 提供了一个模块化的、面向服务的框架。例如,Akka 中没有任何东西可以解决隔离模块的问题,使它们无法看到彼此的内部结构。同样,OSGi 中也没有像 Akka 提供的异步通信那样的东西。因此,将它们一起使用,您将获得两全其美的效果......

OSGi 确实具有同步服务,这是单个 JVM 中模块之间通信的主要方法。 OSGi 还有一个远程服务层,可用于远程计算机之间的通信。我想这可能是 OSGi 和 Akka 最直接重叠的领域。但即使在这里我认为也有合作的潜力。例如,OSGi 远程服务有一个非常强大的发现机制,允许我们在网络上公布功能。您可以使用此发现来查找可供您交流的 Akka Actor。

我不知道目前有谁真正在研究这个问题,所以我认为探索和扩展这个想法将是硕士论文的一个很好的主题!

你就读哪所大学? OSGi 联盟对加强与学术界的联系非常感兴趣,也许我们可以与您和您的教授安排一次在线会议?

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

考虑到可扩展性的基于组件的应用程序:OSGi 还是 Akka? 的相关文章

随机推荐

  • 单元测试错误条件 - EINTR

    简而言之 如何对系统调用上的错误条件 例如 EINTR 进行单元测试 我正在研究的一个特定示例 这可能是一种单独的情况 是 当它返回带有 errno EINTR 的 EOF 时是否有必要再次调用 fclose 该行为取决于 fclose 的
  • 如何在 vapi 文件中编写 void 指针类型定义?

    我正在尝试编写一个 VAPI 文件来使用 unixODBC 其中一个函数被称为SQLAllocHandle From
  • R 中存在大循环?

    假设我想使用以下命令执行模拟function fn1 lt function N res lt c for i in 1 N x lt rnorm 2 res lt c res x 2 x 1 res 对于非常大的N 计算似乎挂起 有更好的
  • 如何隐藏表单上的轮廓

    我必须设计一个其中包含输入的表单 我在输入上使用背景图像 因此它看起来像一个按钮 每次有人点击它时 它都会发送 POST 这是我想要实现的行为 但问题在于表格的轮廓 当我们单击表单时 会显示轮廓 虽然很小 但如果能让表单 或输入 失去轮廓那
  • 如何在 Vuejs 组件中应用过滤器?

    如果我有一个简单的过滤器 请说 Vue filter foo function value return value replace foo g bar 还有一个简单的组件 Vue component example props msg S
  • 可以在网站上嵌入 Github 问题列表(带有特定标签)吗?

    有谁知道有一种简单的方法可以将带有特定标签的问题列表从 github 嵌入到网站上吗 这是为了在项目网站上嵌入未解决的错误列表 使用 jQuery 的解决方案 有一种方法可以轻松地使用 github api 仅使用 javascript 无
  • 固定位置在 Safari 7 中不起作用

    我有一个固定位置的 div 当我滚动时它位于屏幕底部 而不是移动 然而 在 Safari 上 这个 div 的行为就像是绝对定位的 并随着其余内容一起上下移动 当我单击 检查元素 时 编程的 所需的 位置会突出显示 而不是视觉 实际 位置
  • 使用 Python min() max() 避免数值的字典顺序

    我有一个脚本可以从一组值中提取随机数 然而 今天它崩溃了 因为min and max 按字典顺序对值进行排序 因此 200 被视为大于 10000 我怎样才能避免这里的字典顺序 Len关键是在正确的轨道上 但并不完全正确 我找不到任何其他有
  • 使用 istream 从命名管道读取

    是否可以使用 C stl 从命名管道 mkfifo 读取 使用流 因此没有提前定义char buffer MAX SIZE 用于读操作 我想读取直到缓冲区结束并将结果放入std string 当前方法 bytes read fd buffe
  • 如何在iOS中检索ssl服务器证书?

    我希望能够获得 ssl 证书 如果可能的话 链 以便能够显示可分辨名称并确定它是否是 EV 证书 通过证书策略检测 EV 证书 维基百科 http en wikipedia org wiki Extended Validation Cert
  • 如何使用 Python 获取 Selenium Webdriver 上的会话 ID?

    我正在使用 SauceLabs 我需要 sessionId 来获取那里的作业 ID 并使用它在测试执行期间设置通过 失败状态 如何使用 python 获取会话 ID 找到了 Selenium Remote Webdriver session
  • 如何用 2 列制作 R 图例?

    我想在我的图表上制作一个图例 它是由plot 功能 原本的legend 函数将生成一个只有 1 列的列表 我怎样才能制作一个有两列的图例 我无法找到一种方法可以在一次调用中做到这一点legend对于标准地块 这是一个选项 绘制两个单独的图例
  • 在 JNA 中创建一个本机 Windows 窗口和一些带有 GWL_WNDPROC 的 GetWindowLong

    再会 我已经使用 JNA 与 Windows API 交互有一段时间了 现在我在创建窗口时陷入困境 据我做了以下事情 1 创建了现有窗口的子窗口并为其获取了有效的处理程序 2 了解Windows 中的每个窗口都有一个不间断的消息分发循环 3
  • 我可以更新 WebStorm 中的 TypeScript 版本吗?

    我目前正在使用 WebStorm 10 0 4 最新的 TypeScript 版本是 1 5 3 但在 WebStorm 中存在旧版本的 TypeScript 如何在 WebStorm 中更新我的 TypeScript 版本 在默认设置对话
  • 当路径不存在时的 SHParseDisplayName

    我正在开发一个替代品IFileOpenDialog and IFileSaveDialog 我几乎让它工作了 至少IFileOpenDialog 但是当我想返回时IShellItem代表新文件名 用户选择保存在GetResult 方法 我无
  • 删除注册表键值

    在 MSDN 中 它说在调用更改正在枚举的注册表项的函数时不应使用 RegEnumValue 那么这也适用于删除注册表项值吗 就像这段代码所做的那样 if RegOpenKeyEx m hkey m path c str 0 KEY ALL
  • Gradle:在自定义独立插件中使用“maven-publish”插件

    在我的第三个问题之后 几乎感觉像是在发垃圾邮件 因为我的问题看起来很微不足道 但我在 Gradle 文档中找不到对我的案例有任何帮助 而且关于 stackoverflow 的其他问题也没有帮助 这次 我无法使用maven publish插件
  • 如何在 Perl 中引用长字符串?

    我通常使用简单的引号 但有时我会得到很长的行 我无法中断并且还需要使用转义字符 所以我得到如下内容 my str select query accession query tag hit accession hit tag signific
  • Tesseract 对阿拉伯语单词/字母不返回任何内容

    我已经安装了 Pytesseract 它可以完美地处理法语 英语文本以及数字 但是当我尝试阅读任何阿拉伯文本 字母时 它不会返回任何内容 这是我使用过的代码 try from PIL import Image except ImportEr
  • 考虑到可扩展性的基于组件的应用程序:OSGi 还是 Akka?

    在我的硕士论文中 我正在开发一个用于销售大型活动门票的应用程序框架 我的主要要求是可修改性 可扩展性和性能 我的客户 活动组织者 应该能够在运行时轻松替换组件并添加功能 此类组件的一个示例是座位分配组件 我的导师说看看 OSGi 松散耦合的