当前位置: 首页 > news >正文

扫黄打非网站建设舞蹈网站建设报价

扫黄打非网站建设,舞蹈网站建设报价,公司做网站的价格,大连高新园区招聘微软MVP实验室研究员 马洪喜-微软 MVP 19年研发经验 云计算咨询顾问专家 容器云及基础架构云技术专家 DevOps 及微服务咨询专家 什么是函数编程 我先用通俗的大白话给大家解释一下函数(Functions, Function as a Service, FaaS)的几个要点,这样看后面示例时才不…

微软MVP实验室研究员

马洪喜-微软 MVP

19年研发经验

云计算咨询顾问专家

容器云及基础架构云技术专家

DevOps 及微服务咨询专家

什么是函数编程

我先用通俗的大白话给大家解释一下函数(Functions, Function as a Service, FaaS)的几个要点,这样看后面示例时才不会容易懵。

  • 函数就是在云平台体系内运行的、与云平台融合一体的一段程序逻辑(当然也有镜像什么的其他形态)。

  • 通过云平台本身能力,在 HTTP 事件或是云平台其他事件(如:消息队列有新消息时)发生时,函数会被云平台调度执行。

  • 函数的运行实例(理解为进程或是容器 POD)的数量可以配置,在无负载时甚至可以是0,负载到来时云平台会 Auto-Scale 函数。

其他大理论再讲就枯燥了,不如先在实际环境看看函数编程长啥样。

我们看看微软 Azure 云上的函数产品的设计思路。

在 Azure 云上函数产品叫 Function App。创建一个 Function App 如下,我们选择采用 Python 编码:

在 Function App 的上下文菜单内,创建一个 function,选择 HTTP Trigger,当你函数对应域名收到 HTTP 事件(GET,POST,UPDATE,DELETE)时函数会被执行,同时我们看到有大量的其他非 HTTP 事件可以订阅,比如:定时器执行函数或是每当消息被添加到 RabbitQ 时运行的函数等。

然后进入函数编码阶段。这里我已经做了很多简化,本来是一大堆代码可以通过上下文来判断 HTTP 请求类型什么的,但其主体逻辑仅仅是一个 def main 函数:

其运行效果如下:

通过前述示例,我们可以看到函数本身真的就是一个程序里的函数(def main),把函数写好了,其他的诸如:

①引入库、开端口什么的框架代码;

②HTTP 和其他平台事件的接管、对接;

③程序实例本身的运行和程序容量的管理等,都不需要再操心了,因为云平台本身帮我们全部搞定。

因此,大家可以看到函数产品有至少如下的两点好处:

  • 把编程从原来的作文题变成了填空题,极大程度地简化了我们对于代码的编写工作。让我们关注于业务逻辑本身,其他的不用过多操心,而且通过云平台的包括云端 IDE 能力,让函数的编写和调试更加方便;

  • 原来,可能存在大量的平时没有什么访问量的业务,但不得不还得跑上几个虚拟机或是容器干等着,以备偶然少量的访问;而突如其来的大业务量又让我们的 Scale 能力跟不上,这个资源上的尴尬局面,函数可以很好地加以解决——没有访问量时实例数可以缩小到0(或是你指定的一个值),而有了访问量平台可以自动并快速地 Scale 函数。

但也要注意,当决定使用函数时有以下的不利因素也需要考虑清楚:

  • 函数和云平台深度耦合,离开云平台函数不能再独立运行;

  • 不同云平台的函数产品完全不一致,你在 A 云上的函数代码到 B 云上不能运行;

  • 如果不是新业务场景,已有代码逻辑需要大幅度改动才能适配函数(除非以镜像形态只享受云平台带来的资源管理优势);

  • 函数不是万能的,有些复杂的场景函数不一定是合适的选择。

云平台是如何工作以支持函数的

前面咱们介绍的函数本身背景,大伙会明白云平台本身对函数来说极为重要,离开了云平台函数就不能工作了。那接下来我们一起聊聊云平台本身是如何支持函数运行的,我相信这对于希望在私有云建设函数能力的朋友们会有些借鉴意义。

问题一:关于函数本体和运行他所需的代码框架

我们都知道原来写一个最简单的 HTTP 响应也得用 Flask 之类的库, 前后代码把函数框成一个完整的代码,程序才能跑得起来:

from flask import Flaskapp = Flask(__name__)@app.route("/")
def handler():return "Hello World"
if __name__ == '__main__':app.run(host='0.0.0.0', port=80)

但为什么函数编程真的只有一个函数 def main 就能运行呢?这不科学啊。其实他也没那么神秘。云平台本身是通过一个 function-framework 或是叫 bootstrap 的框架把函数包起来,还是一个运行在容器里的完整的应用程序来执行的。不同云平台或是不同语言的实现方式可能有所不同,比如采用代码合成或是反射机制等。

恰恰是从包裹函数的 framework 或是 bootstrap 就各家实现不一了,所以函数的跨云兼容性可能是个阻碍用户选择函数的重要原因。

问题二:HTTP 事件和平台事件的管理和与函数对接

因为前面已经通过 framework 或是 bootstrap 包裹技术实现了函数的运行,基本上他表达的就是一个 HTTP 形态的 API。通过云平台提供的域名接入或是私有云的 Ingress-Controller 或是其他类似的机制把域名绑起来,然后把对应的域名的 HTTP 事件和函数触发绑起来,这个不太难。但云平台上的其他事件就千奇百态,云平台上不同的产品的不同事件,理论上都应该可以触发函数,那么有的云平台内部产品(如:数据库、中间件、AI、大数据)丰富一些,那自然函数的用武之地也更多;而如果有些云平台本身的产品就比较少,即便提供了函数编程产品,其适用场景也有一定局限性。

问题三:函数的运行实例是如何管理和 Scale 的

即然函数是可以0实例存在(此时不产生云平台费用),也可以在流量到达时快速响应, 我相信容器技术会扮演一个重要的角色。或许更具体地说,可能用到了 Knative 技术。Knative 是继 Kubernetes 之后在云原生领域众多新兴技术之一,我和我的团队关注 Knative 非常的早。用他官网的定义来说:

“Knative is a platform-agnostic solution for running serverless deployments.”

似乎看了和没看一样,我个人对 Knative 的研究没有我同事们那么精通,我的粗糙理解就是三个事:

  • (Serving) Kubernetes 上实现对实例更精细的 scaling 管理,可以支持0实例等,这个能力原来标准的 K8s HPA 是做不到的,区别行业管 Knative 的 scaling 能力叫 KPA。

  • (Eventing) 事件管理机制,Knative 引入了标准,来通过 CRD 等能力扩展 Kubernetes 实现对事件的管理。

  • (Building) 就是简单理解为 Kubernetes 上实现了 CICD,就是 Tekton 技术。

今天和大伙简单聊聊函数编程 FaaS 是怎么回事,并且从其工作原理角度进行了些许阐述。对这个话题感兴趣的朋友们,可以关注我们后续内容,我们将持续为您分享更多云原生干货。

http://www.yayakq.cn/news/715236/

相关文章:

  • 湖南省住房和城乡建设厅门户网站全网微商软件激活码货源
  • 合肥网站建设方案维护移动端网站 优帮云
  • 公司建设网站费用属于什么费用个性化定制网站
  • 网站宽度设置如何建设免费网站视频
  • 凡科网怎么建网站网站开发包括网站的 等过程
  • 天津市建设 银行网站梧州房地产信息网官网
  • 北京做的比较好的网站公司吗百度快速排名软件
  • 北京网站建设价格低怎么做网页作业
  • 网站开发公司网站网站开发文档是什么概念
  • 江门网站制作流程小学生编程课主要学什么
  • 各大游戏网站 最新版天堂资源在线
  • 淘宝做海淘产品 网站折扣变化快微信公众号怎么创建桌面快捷方式
  • 旅游网站建设的好处企业邮箱怎么注册免费
  • 做网站要以单位嘉兴市城市建设门户网站
  • 嘉兴做网站建设室内设计网站公司
  • 四川建设网网网站维护电话网站及建设中页面
  • wordpress响应式后台网页seo
  • 网站的支付系统怎么做学生制作个人网站
  • 做网站怎么插音乐网站页面做
  • 品牌网站建设 2蝌蚪小网页设计师培训价格
  • 福建省网站建设网络营销推广方案心得
  • 做电影网站用什么服务器wordpress小程序课程
  • 做网站咋不用买虚拟机国外黄冈网站推广软件免费吗
  • 不用js可以做网站吗淄博网站seo
  • 网站很难被百度收录下载网站站开发
  • 东莞市长安网站建设公司泰安网站建设dxkjw
  • 北京4网站建设怎么自己做代刷网站
  • flash互动网站开发wordpress实验室模板
  • 网站开发的工作流程网站建设费怎样摊销
  • 东兴网站建设如何找厂家地址