前几年流行函数式编程,Haskell等语言着实火了一把,很多现代编程语言,例如python,scala,go也推出支持函数式编程的设计模式。
函数式编程天然就支持无状态,无服务,让人感觉和云原生计算就像亲兄弟,相对而已,容器反而成了远房亲戚。但长期运行下来,函数式编程也有天然的缺点,支持函数式编程的云基础设施(faas,function as a service),一般都按函数运行时间收费,而且有超时时间,运行时间特别长的函数经常被faas当做超时来处理掉了,faas运行过程中输入和输出的数据并不在faas平台上,需要支付额外的传输费用,faas也不支持gpu等硬件加速功能,在ai等热门领域性价比比较低。
相对的,容器化形态的云基础设施(caas,container as a service)可以完美解决faas的弊端,但用caas的团队,如果从老的非云原生系统中移植功能,容易有设计出一个巨型容器的冲动。微服务的拆分,是一个螺旋上升的过程: 拆的过细会导致处理延时拉长,接口满天飞; 拆的过粗,就和一个虚机没什么两样,一行代码就把一个服务整挂,还没法弹缩。
网友评论