虚拟机执行速度缓慢,好像和高性能没有什么关系,但事实上,却不是这样的。我们首先探讨下对高可用的作用,这个其实比较好理解。虚拟机一直执行脚本化程序,比如lua/ruby/python/sql等,他们在虚拟机中被解释执行。java其实也可以被认为是这样的,erlang也是。这些情况都反应了这样的事实,当然,我们并不是说他们都是高可用的。我们考察2个重要的语言:SQL和erlang。SQL是一种结构化的查询语言,他的出错概率并不高,因为他基于严格的数学理论。而erlang是广泛应用于电信级系统中的语言,高可用方面是显而易见。

我们究其原因,可以发现基于同样严格的理论基础,而同时,对系统的运行过程有更高级别的控制。开发者对运行结果和需求施加影响,更多的实现被虚拟机接管。开发者的错误导致的影响被严格地控制在一定的范围内,如死锁,也是有系统进行仲裁。这些特点和C不一样。

我所设想的虚拟机也是需要完成这样的功能。将用户编写的功能性程序加载到虚拟机上编译,然后在虚拟机上运行,理论基础参考与erlang,但最后设计成如Lua那样轻量级的。

我们在上面几个章节中做了很多论述,实际上最后的实现可以体现在这个虚拟机上。由于我们对虚拟机是完全控制的,所以划分处理粒度可以通过语言细节来提供,如mapreduce。在进程迁移、调度上都可以做到更好的把握。

高性能的实现也是这样,我们在虚拟机上的进程如果很容易地被迁移,那么分布式计算/集群实际上就容易地完成了。

Logo

华为开发者空间,是为全球开发者打造的专属开发空间,汇聚了华为优质开发资源及工具,致力于让每一位开发者拥有一台云主机,基于华为根生态开发、创新。

更多推荐