跳到主要内容

技术的进步

技术的进步很多时候在自己熟悉的领域里是很正常的事情,但是在不太熟悉或者并不是业内的人来说就会觉着很奇怪,有一个搞硬件的朋友有次突然问我,docker是什么,说实话我第一反应居然感觉不太好解释,于是有了一下对话

我:docker就是一个轻量的虚拟机,大部分时候用来部署服务,功能非常强大

他:那我为什么不直接用虚拟机呢,还要用docker

我:docker做了很多优化,比正常的虚拟机轻量,而且不会占用特别多的资源,而且现在大热的k8s也是docker做为基础的。

他:那他也算是一个服务器了呗

我:对,而且因为轻量,可以在一个服务器上部署很多docker,而且他们之间做了隔离,不会互相影响

他:那和我在同一台服务器上部署不同的服务有啥区别呢

我:一个是做了隔离,服务之间不会互相影响,比如两个服务需要用到同一个资源的时候的冲突问题,另一个方便管理,一个镜像只做一件事情,避免服务器部署太多的服务管理混乱,而且docker特别多之后成为集群就需要搭建k8s来管理了。

他:那不是还会有性能影响吗,毕竟起了那么多的类似虚拟机的东西

我:肯定是会有一些影响的,再轻量再优化也肯定不如原生更好,但是这个东西就是一个权衡的问题,如果你想极致的性能,那么可以所有东西都自己动手把服务优化的极致,可是更多的时候因为系统越来越大,服务器的数量越来越多,需要管理的服务越来越膨胀之后很难有人能有精力去把这些东西权衡好,那么这种时候我损失一定的性能来做一个管理上的优化,如果你只有一台服务器,三五个服务,那么这些东西肯定是用不上的,所以大厂搞这些玩意儿都贼溜,因为他们不缺资源,能把运维的人力成本节省下来比这几台服务器的价格便宜多了。

对话基本到此为止了,我突然想到这个对话是因为我最近突然意识到一个问题,那就是——那些看起来特别厉害的新技术是不是真的适合我们?正如我之前看的一篇文章:你可能不需要javascript框架,就是这样的意思,很多时候我们可能只是想写点小东西,做一个简单的服务,那么我们不需要去搞那么复杂的流程,比如js里的react,还得引入那么多的包,还需要babel,还需要webpack,还需要node起本地,比如docker,还得安装docker,还得打包镜像然后去服务器里拉取,还得设置端口和映射端口,如果需要做持久化还需要配置持久化文件,这样繁琐而困难的过程很容易就将我们劝退(如果是以学习的目的这些都无所谓)。

我们创新了很多的,看似解决了很多问题,然而在解决一部分问题的时候又引入了另一些问题:

系统的复杂度不会消除,只会转移

系统复杂度来源于世界的复杂度,世界是复杂的,所以需求也是复杂的,我们只能控制好复杂度让一个个系统腐败的慢一些,但是这些系统的寿命终究是有限的,没有一个永生的人,自然也没有一个能永生的系统。

Loading Comments...