近年来,IT技术的更新迭代速度很是快,每一个时间点都有典型的表明名词以及概念,就目前而言,人工智能领域中的机器学习、深度学习、强化学习等名词和概念就很是热,同时区块链、物联网等技术发展也是异常火热。在云计算领域,有这样一个技术被众多云厂商认为是“风口项目”,甚至能够颠覆现有云计算中的某些格局,为此包括AWS、谷歌以及腾讯云、阿里云等在内的云厂商,都为此投入了重大人力以及精力进行相关产品建设,它就是Serverless技术。python
单纯的和你们分享什么是Serverless,可能不是很符合个人我的性格,因此,我将会在这个专栏,经过实践,和你们一块儿学习Serverless,没有华丽的语言和修饰,没有夸张的修辞和描述,一切创建在生产,实践,工程之上。nginx
咱们能够打开腾讯云云函数:web
在这里点进去,新建一个函数:apache
创建函数的时候,咱们能够填写一个函数名字,而后选择运行环境:编程
在这里,你们能够看到,这里有Python(2.7/3.6),Nodejs(6.10/8.9),PHP(5.6/7.2)以及Java,Golang等语言,是否是有一点小激动,主流的编程语言,这里均可以用,也就是说,不管你是什么语言爱好者,只要在这个列表中,那么OK,你就能够愉快的来使用Serverless架构。json
填写好相关信息,点击下一步便可到写代码的地方:后端
看一下这个代码很简单:服务器
# -*- coding: utf8 -*- import json def main_handler(event, context): print("Received event: " + json.dumps(event, indent = 2)) print("Received context: " + str(context)) print("Hello world") return("Hello World")
整个代码内容,只有一个函数,就是main_handler,动脑一下,均可以猜到,这个必定就是腾讯云Serverless的函数入口。再看一下描述:架构
能够看到,这里就是一个执行方法,以Python语言为例:less
index.main_handler
这里面index就是文件名,main_handler就是入口方法。
咱们点击完成,来体验一下:
选择函数代码:
点击测试,就能够愉快的体验:
能够看到,这里的测试结果,已经输出了:
"Hello World"
这说明,咱们已经成功跑起来了云函数:你好,世界
刚刚,咱们简单的运行了一下函数,咱们有没有发现一件事情:
这貌似是一个在线的编辑器?
传统状况下,咱们要写一个python程序,咱们须要下载Python软件,而后安装,配置环境,才能够编写程序,而就在刚刚,咱们貌似,在线编写了一个软件,而且运行了?
是的,Serverless架构实际上能够看做是FaaS+BaaS,其中FaaS就能够当作是函数计算,而BaaS就是后端的服务。咱们目前体验的这种在线的编程运行过程,就是FaaS重的一部分。
说完这里,咱们再来看看咱们的代码和输出的结果:
# -*- coding: utf8 -*- import json def main_handler(event, context): print("Received event: " + json.dumps(event, indent = 2)) print("Received context: " + str(context)) print("Hello world") return("Hello World
"Hello World"
日志: START RequestId: 2ba40ad6-1806-11ea-9ec2-52540075364a Event RequestId: 2ba40ad6-1806-11ea-9ec2-52540075364a Received event: { "key1": "test value 1", "key2": "test value 2" } Received context: {'memory_limit_in_mb': 128, 'time_limit_in_ms': 3000, 'request_id': '2ba40ad6-1806-11ea-9ec2-52540075364a', 'environ': ';SCF_NAMESPACE=default', 'function_version': '$LATEST', 'function_name': 'hello_world', 'namespace': 'default', 'get_remaining_time_in_millis': <function main.<locals>.<lambda> at 0x7f063a9f9488>} Hello world END RequestId: 2ba40ad6-1806-11ea-9ec2-52540075364a Report RequestId: 2ba40ad6-1806-11ea-9ec2-52540075364a Duration:0.34ms Memory:128MB MaxMemoryUsed:19.5039MB
咱们经过这样一个对比,咱们能够看到这样一个对应关系:
行数4的代码:
print("Received event: " + json.dumps(event, indent = 2))
输出结果:
Received event: { "key1": "test value 1", "key2": "test value 2" }
行数5的代码:
print("Received context: " + str(context))
输出结果:
Received context: {'memory_limit_in_mb': 128, 'time_limit_in_ms': 3000, 'request_id': '2ba40ad6-1806-11ea-9ec2-52540075364a', 'environ': ';SCF_NAMESPACE=default', 'function_version': '$LATEST', 'function_name': 'hello_world', 'namespace': 'default', 'get_remaining_time_in_millis': <function main.<locals>.<lambda> at 0x7f063a9f9488>}
行数6的代码:
print("Hello world")
输出结果:
Hello world
行数7的代码:
return("Hello World")
输出结果:
由此,咱们能够对应的看出两个神秘参数的真实身份:
初步判断,event里面是一些入参内容,多是用户指定,而context则是函数执行的上下文,包括一些环境变量、函数信息等。
经过腾讯云的文档:
云函数 基本概念 - 开发指南 - 文档中心 - 腾讯云cloud.tencent.com
能够看到这样的描述:
因而可知,咱们的猜想,貌似没毛病。
接下来,咱们来作一个神奇的操做:让Hello World成为不同的Hello World!
选择这样的API网关触发器:
保存以后能够看到这样一个地址:
咱们打开网址:
看到了什么?是的,看到了咱们刚才的你好世界。改变咱们的程序代码:
# -*- coding: utf8 -*- import json def main_handler(event, context): return("I love Serverless! So cool!")
保存以后,刷新刚才的网页:
简单的配置,就让咱们的你好世界,成了web版的你好世界,要知道,这是咱们Serverless的入门第一节课,咱们就能够作一个网页了!
百度一下,如何配置一个Web,有超级多的教程,可是不管如何apache,nginx的安装和配置貌似都是须要的,可是在Serverless架构下:你能够点点点。
很是简单的,咱们完成了一你好世界,很是简单的,咱们作了一个网页,很是简单的....
So cool!
是的,云函数,你能够看成是一个很是有趣项目,他是云计算的一种表现形式,也被不少人称之为真正的云计算,用户真的能够再也不关注服务器资源:如何配置环境,如何安装服务器软件,如何......用户只须要关注本身的代码,就能够实现本身想要的一块儿,这是一个你好世界,更是在向Serverless架构,云计算问好,这是一个你好世界,更是一个不同的你好世界。
经过Serverless架构,你能够更简单,更快速的建立本身的项目,完成本身的工做,怎么样,想不想和我一块儿来Serverless?