QCon 演讲火热征集中,快来分享技术实践与洞见! 了解详情
写点什么

腾讯云微计算实践:从 Serverless 说起,谈谈边缘计算的未来

  • 2019-10-24
  • 本文字数:4153 字

    阅读完需:约 14 分钟

腾讯云微计算实践:从Serverless说起,谈谈边缘计算的未来

Serverless 是一个比较新的概念,2017 年开始在行业内兴起,边缘计算则是一个更新的技术。那么 Serverless 在边缘计算中能产生的什么样的效果、产品以及形态并推进出来在大家面前呢?今天来为大家分享一下。


首先讲讲 Serverless 是什么?下面这张图可以很清晰的看到,Serverless 从架构上可以分成两部分。


  • 一是 Backend as a Service,后端即服务,腾讯云上目前已经提供很多这类产品,例如 COS 对象存储、CMQ 消息队列、CDN 内容分发、CDB 云数据库、API 网关,这些产品更多的是承载数据的存储。

  • 二是 Function as a Service,函数即服务,也是 Serverless 比较核心的技术点,腾讯云云函数就属于这种。



从 Serverless 或者云函数来看,更多是对用户的计算进行托管。用户将代码和配置提交到云函数平台上,此处的代码是指用户的一份代码或者代码包,配置,一个是指本身对于函数运行环境的配置,使用的是哪种环境、所需的内存、超时时间等;另一个是触发器的配置。因为整个函数即服务的运行方式是触发式运行,触发就需要有一个事件来源,而事件来源是和腾讯云其他产品进行关联后而产生。例如 COS 对象存储产品,它的关联就在 COS 的存储桶中,当用户上传一张图片或者删除一张图片时,就会产生一个事件,这个事件会触发云函数的运行;例如和 API 网关的对接,也可以作为事件来源,在用户的 HTTP 请求到达网关之后,API 网关会把该请求作为事件转发给云函数,触发云函数的运行,云函数拿到请求之后进行处理,生成响应给到用户。



上图左侧,是代码和配置提交到云函数平台进行保存,真正事件产生后,针对每一个事件都会拉起一个函数实例,实现触发式运行;真正事件来临时,用户函数才会运行,用户代码运行时才有云函数代码的数据运算和费用计算。


因为函数本身是托管型的,用户本身无法感知到实例在哪里运行。云函数平台背后有个大的计算资源池,用户实例触发之后,我们会从资源池中随机选取可运行的位置,把用户的函数实例在对应位置上跑起来。因此整个调度过程,或者事件来临之后的函数扩缩容过程,都是由平台进行的。对用户来说,调度的粒度更细了,而且调度也都托管给平台了。



而从整个的计算过程来说,为什么会有这种产品的出现?对于传统的数据存储过程来说,数据产生后,更多会先把数据进行缓存或者存储,如以对象存储文件的形式保存,或者数据库中以结构化形式存储下来,再进行分析应用。有了函数服务产品后,我们可以有很大的加速,可以在事件产生的时候就立刻对数据进行处理,因此就变成了先处理,再对结果进行保存使用的过程。



那么,还能不能缩短中间数据产生到数据处理的传递过程?


对于传统应用来说,数据在用户那里产生,传到云上进行处理,再进行相应的存储。这里说的缩短距离实际是把处理过程更加靠近用户,靠近用户就可以认为是边缘计算的过程。并且这里的靠近用户指的并不是加速网络速度,而是更多把计算下发,放到更靠近用户的位置。


之前无论使用容器也好,或者使用主机也好,运算能力都是在云上提供,而边缘计算要做的事情是把运算能力下发到云之外去。


边缘计算的理念,就是把计算能力下发更靠近真正的用户,更加靠近设备这一端。



为什么会有这种需求的产生?


随着互联网以及物联网的迅速发展,接入的用户越来越多,设备也越来越多,在这种情况下,产生的数据量也越来越多。无论是个人用户,还是物联网接入设备,每时每刻都在产生大量的数据。数据不断增多的情况下,也同时要求我们对于用户的响应、设备响应越来越快,本身设备的计算能力也要越来越强。


10 年前的一台 PC 都比不上现在一台智能手机的处理能力,设备的计算能力在越来越强的情况下,实现了把计算能力下发到更加边缘的位置的能力。



云函数目前在做的探索,从两方面出发。一是物联网方向,物联网主要是和设备打交道,实现设备上的边缘计算;从云函数本身的特点来讲,它属于触发型运算,真正数据产生之后才会拉起运算。云函数交由平台托管的调度,可以把云函数调度到用户设备上去,二把云函数调度到 CDN 的节点上去,虽然 CDN 可以认为是云的一部分,但 CDN 本身已经很靠近用户,CDN 节点实际上已经在云的边缘。



接下来给大家做一个和物联网相关的效果演示


先简单介绍一下几款设备,第一个是树莓派,熟悉物联网的同学一般都了解;第二个是光感的传感器,可以感测环境光,从中读取到环境光的流明值;第三个是 LED 灯。



目前这个设备已经跑起来了,它所做的事情是当环境光足够亮的情况下,LED 灯就会暗掉,当环境光足够暗的情况下,LED 灯会亮起来。演示过程可以看到,当我把光感器遮盖的时候,LED 灯有一个亮起来的动作。目前的环境光和背景足够亮,当我打开的时候,因为光足够亮,所以 LED 灯会灭掉。


针对这个代码我做一个解释。首先大家可以看到目前在树莓派上跑的一段函数,已经下到树莓派上跑了,在网上看到的是线上的代码。接下来我会对代码进行修改,从代码中大家可以看到,当从传感器中读出的流明值足够大的时候,GPIO 做拉高或者拉低的动作,目前是正常的表现。


刚刚我完成了一个修改,现在我要把代码下发到仪器上运行,同时把这里拉起,查看数值是否正确。下面不断刷新的就是传感器出来的流明值,目前传感器已经变化了,因为大家可以看到这个数值已经超过了 200,LED 灯是亮着的,当我把感光器遮盖以后,LED 灯变暗,这是通过代码把行为做了反转的变化。


我们在目前的调试过程中也会做实际的设备调试,这里演示的就是真正把云函数下放到物理设备上进行执行的效果。


接下来讲的是目前云函数和用户协同推进的 AI 能力,用户数据只要在云上利用 CVM、GPU 服务器、腾讯 TML 机器学习,进行 AI 训练,得出相应的训练后模型,再把模型和外围的导入代码进行打包,放入云函数,或者是带有 GPU 的云函数,就可以对外提供 AI 的推理能力。用户真正使用 AI 的时候,从外面送过来一段用户需要推理的语音、文本或图像,在云函数中拉起训练模型,就可以对这段数据进行推理。



AI 能力表面上看起来和边缘计算没有关系,其实不然。如果本身已经在物联网的边缘设计上具有了云函数的执行能力,那么是不是可以进一步考虑把 AI 能力下发到设备上去的,比如我们在云中进行数据的收集和训练,生成模型之后,利用模型更新云上的函数,然后可以利用一键下发把这种能力下发到设备中,使设备具备更强的 AI 能力。


通过这种方式可以让更多的设备接入 AI 能力,比如让家里的摄象头直接识别人脸,认识你的家人,或者让更多的医疗设备直接对医疗检查结果做出判断,识别疾病类型等。这些都将会是后期持续和各个物联网厂商进行摸索,往前推进的过程。



另外一个角度来说,我们为什么做 CDN 的边缘计算?CDN 本身是把数据放到边缘去的一个过程,而边缘计算是为了把计算放到边缘去。为了更快的响应用户的操作需求,对于边缘传上来的数据进行更快的处理,这也是云函数对于边缘的探索。


对于边缘计算来说,云函数要做到的就是用户在云中能完成函数的编写、管理,在所需的位置把云函数下放各个位置运行和使用。


云函数未来在边缘计算中还会有大量的探索机会,CDN 厂商、物联网厂商、硬件厂商等都将会有持续不断的合作发展,去探索尝试将边缘的物联网能力、边缘的 AI 能力、边缘 CDN 能力落地。

Q&A

Q:腾讯云 Serverless 可以自己部署吗?


A:自己部署有分两种,一种是把云函数部署到设备上的能力,一种是 Agent 的部署。Agent 本身是需要用户自行部署到用户自有的设备上去的。而今天演示用的是树莓派,Agent 不局限于树莓派,它可以在更强的服务器中运行,比如可以用到设备的 GPU、设备的存储、文件等进行分析计算。


Q:我们想在自己内部部署一个类似的 Serverless,腾讯云可以支持吗?


A:您说的是私有化部署,云函数本身没有考虑,腾讯云云函数管理整体是在云上的,边缘计算提供更多的是边缘的调度和计算能力,函数在云上配置后,调度到设备上运行,云函数本身对于设备上的数据读取全部由自己控制,读取不用走网络,因为执行的代码包已经下发到设备上去了,体现的是让计算更加靠近数据的理念。


Q:如果提前设置好代码下发到设备上去,AI 也可以断网吗?


A:对,代码运行在你的设备上。两种情况,一种是我刚才演示的物联网的边缘计算。本身的代码包装下发到设备之后,在设备上运行,断网没有关系。


云函数本身也提供 AI 能力,在云上提供,所以在云上运行。


对于 AI,云上产品化的速度会更快,目前腾讯云已经在为部分客户进行支持,云上的相关操作说明后续也会提供出来,大家可以在线体验 AI 能力。


Q:针对 IoT 这块腾讯云发布了没有?


A:这个还没有发布,还在产品化,目前也是和一些客户协同推进这个能力,物联网设备各种各样,包括底层的硬件环境,比如树莓派的 ARM,或者 X86,或者 mips 等平台,对于 Linux 里的内核功能,文件系统的支持,对于存储、内存、CPU 的要求也在整理中。


Q:云函数能够被用于传统应用吗?


A:云函数的特性因为本身是触发式运行,短暂运行的方式,所以和传统的很多开发单体的运行方式不太一样,更多是偏向于新业务开发,或者是小的新业务上线,或者急需要弹性应用能力的使用,传统的可以做改造,但是到时候需要提供一些改造的建议。


效率提升更多是在业务开发的速度上,实际上对于业务运行环境不用再过多做运维性的动作,对于扩缩容也不用考虑,业务开发之后就可以上线,运维交给平台,扩缩容能力也是交给平台,为用户减轻压力,业务用量上来之后怎么承载业务,怎么保证业务不崩溃,云函数已经解决了这个问题,本身的扩容可以理解为无限能力的扩容。


Q:Serverless 在线能力有没有额外的规划?Serverless 的程序和代码能不能访问云主机上面的接口?


A:目前有在做很多,包括边缘计算、CDN 以及和腾讯云的各种云产品打通,Serverless 本身最大的价值在于和各个云产品打通之后的效能,可以认为是各个云产品之间的黏合剂或者是轻量级计算的联合。而和后端的对接,包括数据库、CVM 直接打通,更多是网络上的问题,即将会推出和 VPC 网络的打通,用户 VPC 业务可以用云函数直接访问。


以上内容整理自 1 月 20 日腾讯云微服务架构交流会。分享人是黄文俊,腾讯云高级产品经理,曾经历过企业级存储、企业级容器平台等产品的架构与开发,对容器、微服务、无服务器、DevOps 等都有浓厚兴趣。


本文转载自公众号云加社区(ID:QcloudCommunity)。


原文链接:


https://mp.weixin.qq.com/s/hmB-Vo0sHT0s3M48VciBrQ


2019-10-24 23:091011

评论

发布
暂无评论
发现更多内容

砥砺十年,“信”创未来!亚信科技AntDB数据库产品发布会即将启幕

亚信AntDB数据库

AntDB 国产数据库 亚信科技 产品发布会 数据库·

❤️❤️❤️爱了爱了!这样的文字动画让你爱不释手!

岛上码农

flutter ios 前端 安卓开发 7月月更

区块链技术带来司法“加速度”

CECBC

正则表达式(二)

Jason199

正则表达式 js 7月月更

2种数据库覆盖式数据导入方法介绍

华为云开发者联盟

数据库 大数据 后端

面向商业市场,华为式“抢滩登陆”

脑极体

4种Kafka网络中断和网络分区场景分析

华为云开发者联盟

后端 开发 网络 网络中断

想要治好水,龙王也要拜拜这朵云

白洞计划

初识Linkerd项目

阿泽🧸

Linkerd 7月月更

C语言入门(一)

逝缘~

c 7月月更

Binder通信过程

北洋

Andriod 7月月更

Cgroup Cpuset子系统

总想做点什么

清源(CleanSource) SCA推出容器镜像扫描功能

安势信息

容器 安全 SCA 容器镜像 容器镜像Docker

复杂查询so easy ,GaussDB(for Cassandra)推Lucene引擎全新解决方案

华为云开发者联盟

数据库 后端

【Unity】绘制阿基米德螺旋线

萧然🐳

Unity 7月月更

App Store 的 App 迁移

贾献华

7月月更

C++算法题中对于字符串的一些妙手

KEY.L

7月月更

Java 缩小字符串( Compact String)和 压缩字符串(Compressed String)

HoneyMoose

传统企业要为 Web3 和去中心化做的 11 个准备

CECBC

自动生成API工具——Swagger3

Java学术趴

7月月更

应用性能管理与链路追踪的关系

穿过生命散发芬芳

链路追踪 7月月更

鸿蒙 eTS 开发方式 Image 组件详解【续】

坚果

HarmonyOS OpenHarmony 7月月更

前端与HTML

小恺

7月月更

值得学习的Python GUI 库 - pyQt5快速入门及精美界面设计体验

迷彩

PyQt5 Qt Designer 7月月更

Cgroup devices子系统

总想做点什么

【刷题记录】4. 寻找两个正序数组的中位数

WangNing

7月月更

需求量最大的6个区块链工作

CECBC

TSDB与Blockchain

CnosDB

IoT 时序数据库 开源社区 CnosDB infra

DelayQueue源码分析-特点与新增

zarmnosaj

7月月更

【愚公系列】2022年7月 Go教学课程 007-计算机进制和变量命名规范

愚公搬代码

7月月更

Redis stream性能测试实践【Java版】

FunTester

腾讯云微计算实践:从Serverless说起,谈谈边缘计算的未来_文化 & 方法_黄文俊_InfoQ精选文章