Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >支持多语言:Serverless 云函数如何解锁语言限制?

支持多语言:Serverless 云函数如何解锁语言限制?

作者头像
腾讯云serverless团队
发布于 2020-09-07 03:10:34
发布于 2020-09-07 03:10:34
1.4K0
举报

导语 | 云函数 SCF 是腾讯云为企业和开发者们提供的无服务器执行环境,帮助大家在无需购买和管理服务器的情况下运行代码。但是 SCF 在使用过程中经常会受到开发语言方面的限制,造成拓展性和成本上的问题。本文就将为大家介绍使用 Custom Runtime 来解锁 SCF 语言限制,希望与大家一同交流。文章作者:臧琳,腾讯云Serverless 研发工程师。

一、背景

SCF 作为腾讯云 FaaS 核心产品,支持 javascript、python、php、java、go等多语言函数。但是,在用户实际使用过程中,我们发现了一些问题:

1. 寻求更多语言支持

我们时常会收到来自内外的各种关于编程语言的咨询,比如 SCF 是否支持 dotnet、rust、deno 甚至 C 等多种语言环境。

2. 关于现有语言的功能拓展

比如 php 想要安装更多的插件,就需要在执行环境中使用 phpize 来安装(因为部分插件可能和 os library 等底层库相关),但是云函数因为安全等原因,限制了相关权限。 

3. 关于Runtime的拓展性

举个例子,现有 SCF java 的语言环境是 java8, 如果用户想要在 SCF 中使用 JDK11 或者更新的 JDK15,有没有办法解决呢? 

4. 使用成本

目前,用户如果想要在自己的业务代码中嵌入 SCF, 需要了解 SCF 各个语言提供的入口函数及编程方法。虽然我们已经尽量将使用方法和接口设计得简单,但对于一些用户来说,仍然要处理编程语言上的接口依赖,以及学习如何正确使用这些接口 API。

5. 维护成本

简单来说, 如果复用现有方案,给 SCF 提供多语言支持其实是可行的,但是需要给每一种语言编写一套使用 SCF 的 API。这不仅仅需要 SCF 研发同学懂得各种语言,还需要他们了解各个语言的安全特性,使用特性等,维护成本很高。

那么, 有没有一种方法能够让我们只需要维护一套统一的 API,就能让用户从各种编程语言中解耦,还能解决上述列举的各项问题呢?答案就在于使用——Custom Runtime 。

二、Custom Runtime简介

Custom Runtime(以下简称CR)使用方法较为简单:CR 会暴露一套 HTTP API 提供给用户环境,而用户只需要到特定端口上发送/接收 HTTP 请求,即可以获得 SCF 下发的各种 event,并返回处理结果。具体的文档可以参考 :Custom Runtime 说明 [1]

总体来说,要使用 Custom Runtime, 用户需要做好以下准备:

1. bootstrap 可执行程序

此执行程序可以是任何形式的 Linux 可执行文件,比如 C 语言编译出的二进制文件,或者是一个简单的 shell 脚本。

2. 用户的事件处理函数

也就是通过 CR 约定的 HTTP API 实现 event 的获得和处理,以及结果返回。

3. 用户语言 Runtime(可选)

针对解释型语言,或者是需要 Runtime 来运行的语言,比如 js、python、dotnet 等,需要用户提供自己的 Runtime,并在 bootstrap 中提供相应的启动 Runtime 的命令。

腾讯云官网上也提供了利用 CR 实现 shell 云函数的示例[2],有兴趣的小伙伴可以看看。

三、Custom Runtime 具体模型及用法示例

Custom Runtime 函数的内部处理流程如下所示:

目前 Custom Runtime 的实现在 SCF 侧是一个 HTTP Server 。用户侧代码作为 HTTP Client 通过约定的 API 给 SCF 发请求来获得事件及相关信息,并发送 HTTP 请求返回处理结果给 SCF 服务。

HTTP Server 端口号和 URL,通过两个环境变量传递到云函数环境中:

SCF_RUNTIME_API:SCF_RUNTIME_API_PORT 

HTTP API 定义如下图所示:

1.  冷启动阶段(函数部署阶段)

冷启动阶段主要是部署用户代码,完成用户初始化,这个阶段 SCF 会在用户提供的程序包(zip包)中寻找 bootstrap 可执行程序,然后拉起该程序。bootstrap 由用户实现,内部启动用户代码等工作。

用户函数在冷启动阶段需要完成代码初始化工作, 并通知 SCF,初始化工作完成。即发 POST 到 SCF_RUNTIME_API:SCF_RUNTIME_API_PORT/runtime/init/ready.

SCF 服务侧接收用户 ready 的请求,初始化工作结束,通知上层服务。函数进入调用流程(即 event 此时可以下发到函数侧)。

2. 热启动阶段(调用阶段)

函数通过GET SCF_RUNTIME_API:SCF_RUNTIME_API_PORT/runtime/invocation/next 获得 event 及相关 ctx 信息。

SCF 在函数拉取 event 之后, 等待用户函数返回。

函数处理 event 之后, 如正常返回,通过 POST SCF_RUNTIME_API:SCF_RUNTIME_API_PORT/runtime/invocation/response 传递返回信息给 SCF 服务。

如函数调用出现异常(此处指业务代码需要返回错误信息), 则通过 POST SCF_RUNTIME_API:SCF_RUNTIME_API_PORT/runtime/invocation/error 返回错误信息。

SCF 服务传递返回给上层服务,函数一次调用结束,进入下一次 event 调用周期。

这里我们用 SCF 中 CustomRuntime 的 Deno 模板示例做说明,如下图所示,程序包里有:

  • bootstrap: 入口文件,这里是shell, 可以看到红线标注这一行就是启动deno程序;
  • deno 二进制:Deno Runtime, 启动 deno 程序必须的 launcher ;
  • demo.ts:用户函数,里面就实现了上面提到的和 SCF 服务端交互的逻辑,也是用户业务逻辑的主要处理函数。

bootstrap 主要是启动 demo.ts, 下面我们看看 demo.ts 里的代码实现:

可以看到,主要是完成初始化阶段。下面再来看看调用是怎么完成的:

可以看到,是通过 GET (fetch) 循环拉取 event, 然后调用 processEvent() 来进行处理。processEvent()  逻辑如下所示:

分别处理正常返回和错误返回。最后再来看一下我们是怎么封装这里的 postData() 函数的:

以上就是一个 Deno 函数使用 SCF 的 Custom Runtime 实现云函数的全过程。

四、结语

从上文的论述我们不难看出:

1. SCF与语言无关

因为 CR 的使用与语言无关,所以解锁了 SCF 的语言限制,也就是说只要可以实现一个 HTTP Client,就可以通过 HTTP API 的调用和 SCF 进行交互,从而完成云函数的事件处理及调用。

2. bootstrap 是入口

举个例子,如果我用 C 语言实现一个 HTTP Client,按照 CR 的约定完成与 SCF 的交互,那么完全可以编译成一个名字叫 bootstrap 的二进制文件,然后就可以跑 C 的FaaS 函数了。 

3. bootstrap可配置

用户可以在 bootstrap 里面启动多个进程,可以解锁多种玩法,当然,要符合安全,毕竟用户函数运行环境有安全限制。但是,这已经可以解决一些“云函数+agent进程”的需求。

4. 使用简单

相对于学习各个语言的函数编写规范,了解云函数对各个语言的支持。使用 CR 只需要学习 HTTP API 的使用即可。更多的语言,环境相关的问题都是用户在业务开发中使用到的,不需要额外学习。

Custom Runtime 刚刚上线, 已经得到了一些外网客户的关注。比如,有人用 Custom Runtime 把 Swift 放到了 SCF 里面,并做了相应的支持 [3] ;有人用 Custom Runtime 在 SCF 中跑了 WASM, 并在上面做了 Rust 语言的支持 [4] 。

还有很多类似场景,我们也在不断的努力,引入更多的语言, 借助语言的生态,带动Serverless的生态发展。 最后,欢迎大家体验 SCF Custom Runtime, 留下宝贵的意见!

参考资料:

[1] Custom Runtime 说明 :

https://cloud.tencent.com/document/product/583/47274

[2] 官网示例 :

https://cloud.tencent.com/document/product/583/47610

[3] 场景拓展1:

https://github.com/stevapple/swift-tencent-scf-runtime

[4] 场景拓展2:

https://www.freecodecamp.org/news/rust-webassembly-serverless-tencent-cloud/

One More Thing

立即体验腾讯云 Serverless Demo,获取 Serverless 新用户礼包,请在 PC 端访问:

serverless.cloud.tencent.com/start?c=wx

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-09-04,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ServerlessCloudNative 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
DeepSeek-R1动态知识图谱技术解析
在人工智能与大数据技术飞速发展的今天,知识图谱作为连接数据与智能的核心技术之一,已成为企业实现数据驱动决策的关键基础设施。然而,传统知识图谱多基于静态数据构建,难以应对实时变化的环境需求。深度求索(DeepSeek)公司推出的DeepSeek-R1系统,以其创新的动态图谱技术(Dynamic Knowledge Graph)突破了这一局限,实现了从静态知识表示到动态实时推理的跨越。本文将从技术原理、架构设计、核心模块、应用场景及挑战等多个维度,深入解析这一技术的实现细节与价值。 一、动态知识图谱技术的核心逻辑与设计理念 动态知识图谱技术的核心目标,是解决传统知识图谱在实时性、时序性和动态演化能力上的不足。传统知识图谱通常基于历史数据构建,更新周期长且无法捕捉瞬时变化,例如金融交易中的异常行为、物联网设备的实时状态或社交媒体的热点事件。DeepSeek-R1的动态图谱技术通过引入流式计算、时序建模和增量学习,构建了一个能够实时感知、快速响应和持续演化的知识网络。 从设计理念上看,动态图谱技术强调“数据流动即知识演化”。系统将数据流视为知识的基本载体,每一份输入数据(如传感器信号、用户行为日志或交易记录)不仅被解析为实体和关系,还会触发图谱的实时更新与推理。这种设计使得知识图谱不再是静态的“快照”,而是一个随时间动态生长的有机体。例如,在金融风控场景中,一笔异常转账会立即被动态图谱捕获,结合历史交易模式实时分析其风险等级,并触发预警机制。这种能力依赖于三大技术支柱:流式数据处理、时序图建模和实时推理引擎。 二、技术架构:从数据接入到智能决策的全链路 DeepSeek-R1的动态图谱技术架构可分为四层:数据接入层、图谱构建层、计算推理层和应用服务层。每一层通过模块化设计实现高效协同,确保系统在低延迟、高吞吐量下的稳定运行。 在数据接入层,系统支持多源异构数据的实时接入,包括结构化数据(如数据库表)、非结构化数据(如文本、图像)和时序数据(如传感器流)。通过Apache Kafka或Amazon Kinesis等流处理平台,数据被实时采集并分发至预处理模块。预处理阶段的核心任务包括数据清洗(去除噪声与冗余)、格式标准化(统一时间戳、编码格式)以及事件抽取。例如,在社交媒体监控场景中,系统需从推文中提取实体(人名、地点)、事件(如“发布会”)和情感倾向,并将其转化为图谱可识别的三元组(主体-关系-客体)。 图谱构建层负责将预处理后的数据动态映射为图结构。这一层的核心技术是时序图数据库(如TigerGraph或DeepSeek自研的时序图存储引擎),其特点在于为每个实体和关系附加时间戳属性,并支持时间窗口查询。例如,在物流监控场景中,一个包裹的运输状态(如“已装车-时间T1”“到达中转站-时间T2”)会被记录为带时间戳的节点属性,系统可通过时间范围查询回溯其完整运输轨迹。此外,动态图谱还引入了“版本控制”机制,通过快照技术保存历史状态,以支持合规审计或因果分析。 计算推理层是动态图谱的智能核心,承担实时推理与决策任务。该层整合了图计算引擎(如Apache AGE)、规则引擎(如Drools)和机器学习模型(如图神经网络GNN)。例如,在反欺诈场景中,系统会实时遍历交易图谱,检测是否存在环路转账(通过BFS算法)或异常社区(通过GNN聚类),并结合规则引擎中预设的风险阈值(如“单日转账次数超过10次”)触发预警。为了提高计算效率,该层采用内存计算(如RedisGraph)和分布式计算框架(如Spark GraphX),将复杂图查询的响应时间控制在毫秒级。 应用服务层通过API或可视化界面向用户提供交互能力。例如,运维人员可通过时间轴工具查看服务器集群的状态演化图谱,动态定位故障根源;金融分析师则可利用图谱的可视化查询界面,快速追踪资金流动路径。这一层还支持自定义规则与模型的灵活接入,允许用户根据业务需求扩展图谱的推理逻辑。 三、关键技术突破与创新 1. 时序图建模与时间切片技术
用户7353950
2025/02/10
1.7K0
DeepSeek-R1动态知识图谱技术解析
如何在推荐系统中玩转知识图谱
在推荐系统领域近几年的工作中,知识图谱被越来越多的应用进来。在推荐系统中引入知识图谱被验证会给user-item的预测效果带来比较明显的提升,一个主要原因在于通过知识图谱,可以挖掘到很多user-item历史交互行为中看不到的信息。知识图谱如何应用到推荐系统中呢?今天就给大家带来4篇顶会中典型的知识图谱应用到推荐系统的工作。
圆圆的算法笔记
2022/09/22
7610
如何在推荐系统中玩转知识图谱
SFFAI分享 | 牛广林:规则引导的知识图谱组合式表示学习【附PPT与视频资料】
牛广林,北京航空航天大学在读博士,研究方向为知识图谱与知识推理,以第一作者发表一篇AAAI2020论文。
马上科普尚尚
2020/05/11
1.2K0
Graph Neural Network(GNN)综述
图(graph)是一个非常常用的数据结构,现实世界中很多很多任务可以描述为图问题,比如社交网络,蛋白体结构,交通路网数据,以及很火的知识图谱等,甚至规则网格结构数据(如图像,视频等)也是图数据的一种特殊形式,因此图是一个很值得研究的领域。
SIGAI学习与实践平台
2019/05/16
2.4K0
Graph Neural Network(GNN)综述
知识图谱中的关系推理
就我的理解而言,虽然目前的知识图谱上已经有了非常多的实体对和关系事实,但是由于数据的更新迭代以及不完整性,注定了这个知识图谱的不完整,同样,他里面也隐藏着我们难以轻易发现的信息。在论文中,给出了一个非常经典的介绍:
机器学习AI算法工程
2019/10/28
3.9K0
知识图谱中的关系推理
python知识推理知识图谱_知识图谱系列–知识推理
本文接着知识图谱系列–实体链接技术(1)[1]介绍知识推理方法。知识推理就是通过各种方法获取新的知识或者结论,这些知识和结论满足语义,其具体任务可分为可满足性(satisfiability)、分类(classification)、实例化(materialization)。[2]
全栈程序员站长
2022/09/06
1.8K0
python知识推理知识图谱_知识图谱系列–知识推理
AAAI 2024| 知识图谱论文总结
最近,收集一下AAAI 2024关于知识图谱的论文,主要是以Knowledge graph为关键词进行总结,关于知识图谱中涉及到的实体识别、关系抽取等文章就不在本次的总结之列(如有遗漏,欢迎大家补充)。
时空探索之旅
2024/11/19
2.2K0
AAAI 2024| 知识图谱论文总结
当可解释人工智能遇上知识图谱
来源:知乎—机器学习小谈地址:https://zhuanlan.zhihu.com/p/386458680 本文约6100字,建议阅读10分钟 可解释人工智能遇上知识图谱。 在科学研究中,从方法论上来讲,都应“先见森林,再见树木”。当前,人工智能学术研究方兴未艾,技术迅猛发展,可谓万木争荣,日新月异。对于AI从业者来说,在广袤的知识森林中,系统梳理脉络,才能更好地把握趋势。为此,我们精选国内外优秀的综述文章,开辟“综述专栏”,敬请关注。 本文按照以下章节进行组织: 1. 背景意义 2. 基于路径的方法 3.
数据派THU
2023/03/29
1.1K0
当可解释人工智能遇上知识图谱
掌握BERT、GPT-3、图神经网络、知识图谱等大厂必备技能!
金三银四很快就到了,铁子们做好跳槽拿高薪的准备了吗? 回想去年的算法岗,可谓是从灰飞烟灭到人间炼狱。之后的趋势都变成了这样:转行的开始转行,换专业的开始换专业。 于是很多人欲转行NLP,原因是NLP技术近几年发展非常快,像BERT、GPT-3、图神经网络、知识图谱等技术被大量应用于项目实践中,这也推动了NLP在产业中的持续落地,以及行业对相关人才的需求。  但是最近有粉丝私信我,NLP很难学,这条路能坚持走吗? 对于这位朋友的问题,我想从两方面开始回答。 NLP学起来不容易 01 很多大多数欲从事N
昱良
2022/03/04
5780
知识图谱嵌入模型 (KGE) 的总结和比较
来源:Deephub Imba本文约2900字,建议阅读5分钟本文介绍了知识图谱嵌入模型的总结与比较。 知识图谱嵌入(KGE)是一种利用监督学习来学习嵌入以及节点和边的向量表示的模型。它们将“知识”投射到一个连续的低维空间,这些低维空间向量一般只有几百个维度(用来表示知识存储的内存效率)。向量空间中,每个点代表一个概念,每个点在空间中的位置具有语义意义,类似于词嵌入。 一个好的KGE 应该具有足够的表现力来捕获 KG 属性,这些属性解决了表示关系的独特逻辑模式的能力。并且KG 可以根据要求添加或删除一些特
数据派THU
2023/04/03
9710
知识图谱嵌入模型 (KGE) 的总结和比较
特定领域知识图谱融合方案:文本匹配算法(Simnet、Simcse、Diffcse)
特定领域知识图谱融合方案:文本匹配算法(Simnet、Simcse、Diffcse) 本项目链接:https://aistudio.baidu.com/aistudio/projectdetail/5
汀丶人工智能
2023/02/01
1.5K0
知识图谱嵌入与图神经网络的深度融合
在过去的十年里,知识图谱(Knowledge Graph, KG)作为结构化的知识表示方式,已经在多个领域得到了广泛应用。它通过图结构来表达实体之间的关系,使得计算机能够理解和推理复杂的语义关系。然而,随着知识图谱规模的不断扩大,传统的基于逻辑和规则的推理方法已经无法满足现代应用对高效推理和深度语义挖掘的需求。
数字扫地僧
2024/09/27
5120
【知识图谱系列】多关系神经网络CompGCN
CompGCN汇报ppt版可通过关注公众号后回复关键词:CompGCN 来获得,供学习者使用!
Houye
2020/12/29
1.3K0
【知识图谱系列】多关系神经网络CompGCN
推荐算法不够精准?让知识图谱来解决
来源 | 微软研究院AI头条(公众号ID:MSRAsia) 编者按:我们几乎每天都会接收到各种各样的推荐信息,从新闻、购物到吃饭、娱乐。个性化推荐系统作为一种信息过滤的重要手段,可以依据我们的习惯和爱好推荐合适的服务。但传统的推荐系统容易出现稀疏性和冷启动的问题,而知识图谱作为一种新兴类型的辅助信息,近几年逐渐引起了研究人员的关注,本文将向大家介绍知识图谱的相关知识以及知识图谱在推荐系统中可能的应用价值。一起来学习一下吧! 小王是一名程序员。早上八点,他被闹铃叫醒,拿起手机开始浏览手机上的
用户1737318
2018/06/05
1.5K0
知识图谱嵌入中的时间感知模型
知识图谱(Knowledge Graph, KG)是一种用于组织和存储知识的结构化图数据结构,由实体(nodes)和它们之间的关系(edges)组成。它广泛应用于搜索引擎、问答系统和推荐系统等领域。然而,传统的知识图谱嵌入模型通常忽略了时间维度,而时间信息在现实世界的关系中往往是至关重要的。例如,历史事件中的关系随时间变化而演化,因此需要在知识图谱嵌入中引入时间感知机制来捕捉这种动态变化。时间感知知识图谱嵌入模型通过将时间作为一个关键的上下文来优化嵌入结果,能够更好地处理动态知识图谱的推理任务。
数字扫地僧
2024/09/30
4440
知识图谱嵌入中的时间感知模型
AISecOps:基于动态图的威胁分析
智能安全运营(AISecOps)[1]涵盖了预防、检测、响应、预测、恢复等网络安全风险控制与攻防对抗技术,将大幅提升威胁检测、风险评估、自动化响应等关键运营环节的处理效率,减少对专家经验的过度依赖,有效降低企业、组织乃至国家级关键信息基础设施、数据资产的整体安全风险。如何利用多种关键技术构建AISecOps,研究任务任重而道远。利用异构数据保护网络安全已成为业内共识,此前公众号发表过的文章《AISecOps:基于异构图的威胁分析技术》介绍了异构图在威胁分析中的应用。在真实的网络环境中,为了实时的威胁分析,需要构建动态图,即图中的节点和边是随着时间变化的。本文将分析基于动态图的异常检测在威胁分析中的应用,以供从事网络安全运营的人员参考。
绿盟科技研究通讯
2021/10/15
1.2K0
Spatial-Temporal时间序列预测建模方法汇总
时间序列预测问题是根据一个序列的历史值预测未来值。当同时预测多个时间序列,并且各个时间序列之间存在空间上的关系时,就不能只将每个时间序列单独建模,而应该考虑不同时间序列之间的关系。例如,在交通预测场景中,需要预测不同地点的车流量,不同地点的车流量之间是存在空间上的关系的,例如A点的车20%在5分钟后会开往B点。仍然用传统的时间序列预测方法,即每个序列独立的进行预测,无法捕捉这种不同地点的空间关系信息。
圆圆的算法笔记
2022/09/22
9990
Spatial-Temporal时间序列预测建模方法汇总
专业的知识图谱应用门槛正在被不断降低
  知识图谱(knowledge graph)⼀度被专家称为“AI皇冠上的明珠”,因为知识图谱技术是⼈⼯智能技术⽅向中的重要⼀环。它不仅可以为其他⼈⼯智能应⽤提供⽀持,如⾃然语⾔处理、推荐系统等,更可以帮助⼈⼯智能系统⾃主构建和增⻓知识库,提升计算机的理解和分析能⼒,实现“认知智能”的⽬标。Gartner预测,到2025年,知识图谱技术将应⽤于80%的数据分析,⽽2021年这⼀⽐例仅为10%。   最近爆⽕的ChatGPT也是⾃然语⾔处理和理解领域的⼀个重要应⽤,虽然ChatGPT在⽣成和理解⾃然语⾔⽅⾯表现出⾊,但它的知识表⽰和推理能⼒有限,⽆法直接获取和处理结构化知识。因此,知识图谱可以为ChatGPT提供丰富的结构化知识,以增强其对话⽣成和理解的能⼒,进⽽提升对话系统的智能⽔平。
石臻臻的杂货铺[同名公众号]
2023/06/10
5730
专业的知识图谱应用门槛正在被不断降低
深度文本分类综述
最近有很多小伙伴想了解深度学习在文本分类的发展,因此,笔者整理最近几年比较经典的深度文本分类方法,希望帮助小伙伴们了解深度学习在文本分类中的应用。
小小詹同学
2019/06/20
1.4K0
深度文本分类综述
AI论文速读 | 2024[WWW]SSTKG:简易时空知识图谱:可解释性与多功能动态信息嵌入
论文标题:SSTKG: Simple Spatio-Temporal Knowledge Graph for Interpretable and Versatile Dynamic Information Embedding
时空探索之旅
2024/11/19
3720
AI论文速读 | 2024[WWW]SSTKG:简易时空知识图谱:可解释性与多功能动态信息嵌入
推荐阅读
相关推荐
DeepSeek-R1动态知识图谱技术解析
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档