基因、容器和上帝

举报
tsjsdbd 发表于 2019/04/18 14:18:53 2019/04/18
【摘要】 搞云计算多年,什么容器、虚拟机、网络虚拟化都玩了个遍,近来恰好又因为容器技术接触到基因测序领域,发现所有这些技术其实有个一些共通点。于是总结下从程序猿角度看到的云计算和基因与上帝的关系。Ps:仅供茶余饭后讨论,不必较真,主要还是帮助大家更深入的理解云计算。


作为程序猿,不敢保证上帝一定存在。但是if他存在,他应该是个程序猿。

上帝编码蛋白质合成

    从孟德尔种植豌豆开始,人类就一直在探寻遗传因子,并且也证实了DNA就是控制遗传信息(即基因)的载体。然而有一个问题,一直困扰着人们:就大象和老鼠2个长得差不多的基因怎么会被翻译为完全不同的2种动物呢。说程序猿理解的话:好比2个编译好的二进制程序,看着都是2进制文件嘛,怎么跑起来行为完全不一致呢?注:基因是一种4进制编码

这就得提到后面发现的信使RNA了,整个过程大概这样:DNA→信使RNA→蛋白质。蛋白质才是大家长得不一样的表现,比如同一个人的按理细胞基因都一样,但是眼睛和鼻子却长得不一样,就是合成的蛋白质不一样。

image.png

顺便提一下,历史上发现信使RNA的过程非常有意思,有兴趣的可以搜一搜:-)

image.png

让我们回到这个神奇的mRNA翻译蛋白质的过程。

首先,蛋白质由一个或多个由氨基酸组成的。已发现氨基酸种类大概是20多种。

其次,基因是4进制(ATCG),如果每2位作为氨基酸编码。那么应该有 4*4 = 16 种氨基酸(而实际氨基酸有20多种,说明2位编码不够)。

image.png

如果3个编码为一组对应一种氨基酸,则有 4*4*4 = 64种,比较符合实际发现。事实也是这样,3位基因编码,定义了一种氨基酸。并且还有一个编码表,一一对应这个翻译顺序。这就神奇了,这不就是我们代码时,提前定义写好的map表么~

 image.png

通过提前定义好的map表,控制二进制程序(实际是4进制)怎么运行。至少,我们可以推断上帝应该是个程序猿。

Ps:二进制怎么执行,我们知道了。但是二进制怎么编译出来的呢?这个我认为上帝还有一个“模型 => 二进制的编译器”,他不可能直接写二进制代码,鉴于篇幅,留待想象吧。


现实的再现 - 造物者视角

最早接触虚拟机VM没有什么特别的感觉,就是觉得对物理机的仿真嘛,模拟出了一个看着像物理机一样的东西,使得剩余的CPU能力可以充分利用。然而在接触到Docker容器技术之后,我发现这个事情并没有那么简单。

image.png

因为,Docker容器技术和VM虚拟机从技术原理上看,是完全不同的路线,连实现思路都不一样。但是,它们所达成的效果或者说是目标确是惊人的一致:即模拟一台看着像物理机一样的东西。那是不是我们可以推断:如果未来再出现一种虚拟化技术,它的目标依然还是创建一个看着像物理机一样的东西。好比现在的网络虚拟化,也是照着物理网络使劲的去模拟。

那么问题来了,如果你是上帝,那么你会如何创造新的世界?我想你也是照着自己所在的世界来打造的吧。因为从上面VMDocker发展已经看到,这个跟打造用的技术无关,不管用什么技术都是照着原来的世界去模拟而已。

所以如果上帝存在,我们的世界和他的世界大概率是一样的。


一切都是虚幻 - 宠物的视角

我们再回到Docker容器和VM虚拟机里面,首先问个问题:一个程序自己是否知道自己是运行在VM里面,还是物理机里面?答案是基本无法感知。

image.png

也就是不管虚拟化的技术如何,最终运行的程序都是无法感知自己到底是跑在容器里面,或者是跑在VM虚机里面。因为它(指一个app程序)看到的一切都好像是真的, CPU、内存以及网络,尽管这些是使用各种不一样的技术组装起来的。意思是一个好的云计算,是不应该让程序感知到自己的世界是如何被创造的。

image.png

那么问题来了,当你环顾四周,你能判断出自己的世界是被上帝虚拟出来的,还是原本就是真实的吗?答案还是不能(莫非大侠你能找到内核bug,然后突破guest系统,跑到Host上面去捣乱?)。

 

云世界的上帝

那么如果上帝是存在的,跟我们程序猿又有什么关系呢,因为也许我们只是他创造的众多虚拟时空中的一个而已(平行宇宙?)。其实也不用那么悲观,我们经常会看到Docker-In-Docker或者Docker-In-VM这种技术,意思是就算你本身在VM里面了,你还是可以继续创建VM或者Docker容器的,你拥有这个Docker容器的完整控制权利。

所以作为云计算从业者,我们自己就是云世界里的上帝。如何打造一个好的虚拟机网络或者容器网络,使它能够可以模拟各种复杂的物理组网,来满足APP的需求,就是我们的首要目标。

你看云计算里面,计算是假的(VM),存储是假的(Volume),网络也是假的,所有看到的统统都是假的。然而程序它却跑的很欢,因为它的所有原来的知识栈都不用做任何改变。一个好的“世界”就是这样,让你的“宠物”安静地按照原来世界的方式运行着。最后,希望你能成为一个好的上帝,别让你的程序发现你:-)


【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。