目前如果提到招聘中问到最多的技术点,那么一定就是大数据和微服务。随着分布式计算的普及,微服务也越来越走进了我们的生活。现在如果作为一个后端程序员,如果你不了解微服务,恐怕你自己都不好意去面试吧。下面我们就来简单了解下微服务中的函数计算。
函数计算起源
作为程序员,我们一直希望的就是专注写代码,不管是产品经理,还是运维人员,都不要打扰我们。但是在过去这是不现实的,特别是一些小公司,作为一个程序员,我们不仅要能够自己写后台代码,还要会写前端,同时也要会切图,更要懂服务器的部署,可以说过去的程序员都是全栈工程师,他们每个人都能顶一个团队。但是随着时间发展,现在软件功能越来越复杂,程序员更倾向于专注。每个人甚至只能开发软件的一个模块功能。服务器的部署和运维有了专业的人员来处理。如果一个团队只想专注业务开发,不想处理服务器运维相关的事项,那么serverless是最好的解决办法。这也是函数计算的由来。
什么是函数计算
FAAS(function as a service),它往往和无服务架构(Serverless Architecture)一同被提起。
Serverless可以看作是比微服务架构更细粒度的架构模式,即FaaS。Lambda也是FaaS的典型代表,它允许用户仅仅上传代码而无需提供和管理服务器,由它负责代码的执行、高可用扩展,支持从别的服务器或其他Web应用直接调用等。
比如下面的代码,就是一个函数计算的例子:
module.exports = function(context, callback) { callback(200, "Hello, world!
"); }
我们只要把代码上传到服务器,然后我们就可以访问执行了,我们不需要管理web服务器(nginx或者apache),我们不需要处理服务器负载高怎么办,因为一切对于我们开发者来说都是透明的,我们只需要专注功能的编写,其它交给云服务器处理即可。函数计算就是我们全部要做的事情。
函数计算优点
那么函数计算有哪些好处呢?
首先,最重要的就是节约成本,我们只需要把人力花费在具体业务的编写上,不需要花费精力去运维和管理服务器。
其次,函数即服务的引入,然我们的代码更加清晰,调用更加方便。
然后,扩展方便,我们需要多少的资源完全由使用决定,当访问量大的时候, 它会自动扩容。
再者,部署方便,现在我们部署的工作只是上传代码就可以了,不管是通过git,还是ftp等,反正只要把代码传上去,我们就完成了全部的任务。
Fission是一款基于Kubernetes的FaaS框架。通过Fission可以轻而易举地将函数发布成HTTP服务。它通过读取用户的源代码,抽象出容器镜像并执行。同时它帮助减轻了Kubernetes的学习负担,开发者无需了解太多K8s也可以搭建出实用的服务。Fission目前主要支持NodeJS和Python,预支持C# .NET,对Golang的支持也在进行中。Fission可以与HTTP路由、Kubernetes Events和其他的事件触发器结合,所有这些函数都只有在运行的时候才会消耗CPU和内存。
FAAS只是开始,但绝不是终点
未来肯定会有更多的企业和用户使用FAAS来搭建应用,因为它大大减少了成本,同时,它也是符合软件分工的。以后的软件开发更加工厂化,大厂们提供基础的API服务,我们只需要调用这样的服务即可。软件的架构让我们更加专注业务层,也许,多年以后,可能作为一个软件开发人员已经不需要再懂服务器了,因为服务器层面的东西都是固定服务了。我们的主要精力都花在了具体的业务上了。但是,FAAS目前还有很多不足之处,比如语言环境不是很全,比如不是很好用,比如集成还不是很完善,但是我相信这些将来一定会改善。而且,我们相信一定还会有比FAAS更好的技术出现。