我有一个想法,我正在和一些同事一起考虑。我们当中没有人知道它是否存在。
基本前提是拥有一个100%正常运行时间但可以动态提高效率的系统。
以下是方案:
*所以我们快速将系统哈希到a 它具有指定的接口集 零优化,但我们是 确信它是100%稳定的 虽然(可疑,但为了 这个场景请玩 沿着)
*我们然后介绍 原来的课程,并开始 程序替换为 瓶颈。
*原始和替换同时启动 同步。
*原件允许运行完成:如果更换没有 完成它被系统否决了 作为替代品 原来,
*对于a,替换必须始终返回与原始值相同的值 指定的次数,并为 特定范围的值,之前 被采纳为替代 原来,
*如果在采用更换后发生异常,则系统 自动尝试相同的操作 有一个类被取代了 它。
您是否在实践中看到了类似的概念? Critique Please ...
以下是有关初步问题后的评论 帖子:
*系统演示了达尔文的系统演化方法。
*原件和替换件将并行运行而不是串联。
*竞争条件是多线程应用程序和我的固有问题 承认他们。
答案 0 :(得分:3)
我认为这个想法是一个有趣的理论辩论,但由于以下原因不太实际:
这听起来很有用并且实际上是“必须”的唯一“环境”是一个“遗传”系统,它自己生成新版本的代码,但这是一个完全不同的故事,并没有真正广泛适用......
答案 1 :(得分:2)
在运行时运行性能基准测试的系统将比没有运行的系统慢。如果目标是优化速度,为什么你不能独立进行基准测试并在证明速度更快后导入最快的例程?
您同时启动例程的想法可能会引入race conditions。
此外,如果目标是确保100%正常运行时间,则您不希望引入未经测试的例程,因为它们可能会生成无法捕获的异常。
也许你的想法有利于作为基准测试而不是操作系统?
答案 2 :(得分:2)
我在练习中看到过类似的概念吗?不,但无论如何我会提出一个方法。
似乎您的大部分目标都会通过某种超级源控制系统来满足,可以使用CruiseControl来实现。
CruiseControl可以运行单元测试以确保新版本的正确性。
您必须编写一个CruiseControl构建器pluggin,它将根据一系列现有基准执行您的系统的新版本,以确保新版本是一项改进。
如果CruiseControl构建循环通过,则接受新版本。这样的过程需要付出相当大的努力来实施,但我认为这是可行的。单元测试和基准构建器必须非常光滑。
答案 3 :(得分:2)
我认为像OSGi或Spring这样的控制容器反转可以完成您所谈论的大部分内容。 (按名称动态加载)
你可以建立在他们的东西之上。然后实现您的代码
如果模块通过消息传递完成工作,则可以存储消息,直到操作成功完成,并在发生异常时重新使用另一个模块。
答案 4 :(得分:1)
有关高可用性系统的设计思路,请查看Erlang。
答案 5 :(得分:0)
我认为代码本身并不会变得更好。但是,一些运行时参数可以很容易地调整到最佳值,但这只是常规编程,对吧?
关于即时更改,我分享了想法,并将在Lua或类似的动态语言之上构建它。可以有部件加载,如果更换,则重新加载使用。也没有火箭科学。如果“旧代码”仍在运行,那就完全可以了,因为与DLL不同,只有在读取文件时才需要该文件,而不是在执行来自那里的代码时。
有用? NAA ...