阿里、蚂蚁、晟腾、中科加禾精彩分享 AI 基础设施洞见,现购票可享受 9 折优惠 |AICon 了解详情
写点什么

腾讯云原生战略及 Serverless 平台实践解析

  • 2019-07-11
  • 本文字数:3047 字

    阅读完需:约 10 分钟

腾讯云原生战略及Serverless平台实践解析

在前不久的KubeCon上海站,国内外各大厂商的云原生实践战略进行了程度不一的曝光,本文重点介绍腾讯云原生架构搭建及其内部Serverless实践


在云原生最佳实践中,微服务、容器、Serverless 等均被列入其中,通过应用这些新技术对原有应用程序进行改造,开发者可以最大限度发挥云计算平台在资源灵活性、计算能力等方面的优势。


早在多年前,腾讯内部就在实践“类微服务”理念,那时的微服务还没有形成良好的行业统一标准,容器技术也没有被很好地验证在生产环境中可行,腾讯就曾基于 Linux cgroup 的管理方式降低虚拟化带来的损耗,追求更加极致的性能。如今,腾讯正在逐渐将应用向云平台进行迁移,内部积累了众多云原生最佳实践。本文,InfoQ 有幸采访到了腾讯云副总裁刘颖和腾讯云中间件产品负责人肖雨浓,共同探讨云原生架构及 Serverless 最佳实践。

腾讯云原生战略

云原生可以理解为一种基于云的开发方式,可能是好技术和产品的集合,比如上文提及的容器、Serverless、DevOps,都属于云原生的范畴。在 IaaS 时期,即便每家企业的基础设施建设渐趋成熟,但应用迁移依旧非常痛苦,这是因为不同的 IaaS 层具备不同的标准,甚至不少 API 差异很大,很难找到通用且简便的迁移方式。在云原生时代,基于容器(符合行业规范)的应用程序可以很方便地在不同云平台之间进行迁移,这就是标准化优势的重要体现。


采访中,刘颖表示,腾讯云基于过去几年的技术积累和探索,面向用户推出了基于 Kubernetes 技术和生态的企业级容器平台 TKE(Tecent Kubernetes Engine),支持公有云的同时也可以支持私有云;容器服务网格 TKE Mesh(云原生服务网格管控平台),进一步解决容器化后应用治理和运维层面的问题;下一代无服务器计算平台 Serverless 2.0,解决传统 Serverless 在性能启动等方面的问题,在已有事件触发函数的基础上,根据实际用户使用场景,进一步提供面向 Http 场景的 Http Function 和 Http Service,提供高层次的通用开发框架,不仅更好的支持开发者面向 Web Service 的开发诉求,也可以支持已有业务代码向 Serverless 架构的无缝迁移;涵盖开发到交付一切所需的一站式 DevOps 平台。



容器服务网格 TKE Mesh 架构图


如果需要将一个应用完整迁移至云平台,比如 QQ 空间,上述每项技术都需要实践。正如肖雨浓在采访中所述,这实际上是一套完整的平台,通过在容器之上运用微服务、Serverless、DevOps 等技术提高开发速度并降低运维成本。


过去几年,云主机、容器、Serverless 等计算形态逐一被实践。采访中,刘颖表示,从可控性层面来说,云主机更高,Serverless 更低,但从易用性层面来说,Serverless 最为便捷,其发展速度也非常快,腾讯内部已有部分核心业务在使用 Serverless,比如相册,这说明该技术未来可以承载大流量、高可用的应用场景,腾讯也希望找到更加通用的解决方案。

Serverless 实践解析

Serverless 带来了成本和效率的改变,无服务的产品和生态正走向成熟,并逐步承载起企业核心业务。


作为继虚拟机、容器后的第三代通用计算平台,Serverless 是腾讯云原生的重点发力领域。分享中,肖雨浓表示,当前复杂的企业业务系统之所以还不能完全基于 Serverless 来实现,主要有以下几方面原因:


  • 性能问题。目前无服务尚未完全成熟,在性能方面仍存在诸多问题,如同步业务的冷启动延时、高并发函数实例扩缩容,大规模业务下函数实例的集群管理等;

  • 缺乏成熟的开发者生态。企业和研发采用无服务,需要用监控、Debug 调试、DevOps 等上下游支持;

  • 需要理解和管理底层基础设施。当前 Serverless 架构下,用户依然会感知到无服务器集群和资源的存在。


针对目前行业遇到的问题,腾讯云持续探索研究,并发布了下一代无服务器计算平台:Severless 2.0,Severless 2.0 在已有的事件触发函数的基础之上,根据实际的用户使用场景,进一步提供了面向 HTTP 场景的 HTTP Function 和 HTTP Service,提供了高层次的通用开发框架,不仅更好的支持开发者面向 Web Service 的开发诉求,也可以支持已有业务代码向 Serverless 架构的无缝迁移。


在技术上,腾讯云在控制流和数据流的模块、虚拟化层、网络层、调度层都做了彻底的重构优化,在安全,可用性,性能上也进行了全面升级。



腾讯云函数架构


1、控制流、数据流模块按照职责重新梳理解耦


如上图所示,蓝色的是控制流部分,对函数的生命周期进行管理,API 层提供管理接口,元数据记录数据库后,下发一份到消息系统,通过消息队列解耦后续的管理模块。比如创建函数的场景,网络部署模块接收到消息后,负责打通函数访问 VPC 资源的转发路径。


函数代码管理模块负责进行代码检查,依赖安装,重新打包到代码仓库以便后续下载部署。调度模块可以做一些资源预创建,实例预部署工作,元数据模块负责将管理流的数据同步到数据流的缓存系统,以便后续函数调用时使用。这样,API 不需要关注函数管理的底层细节,控制流和数据流也不会干扰。


2、计算层实现轻量级虚拟化方案


函数实例节点从传统虚拟机切换到轻量级虚拟机系统,提高虚拟机的并发部署规模和速度,同时也实现多租户间的安全隔离。


3、Auto scale 自动扩缩容模块


基于函数请求实时计算的模式,动态的扩缩函数实例,优化函数冷启动的体验问题,以及控制函数计算平台本身的成本


4、VPC 网络转发代理


函数通常需要访问 VPC 网络内的存储资源或者访问公网,涉及到网络路径的打通,目前普遍的方式是通过绑定弹性网卡和部署 NAT 网关达到这个目的,在函数实例部署的过程中耗时占比很大。


综上,在技术层面,腾讯云 Serverless 2.0 通用统一的底层架构,通过采用轻量级虚拟化技术、VPC proxy 转发方案等多种优化手段,以及针对实时自动扩缩容核心的能力优化,彻底规避了传统无服务器架构中饱受诟病的冷启动问题。


除此之外,Severless2.0 还关注开发者从本地开发、代码调试、到业务的持续集成、上线运维等整个软件开发生命周期。围绕 Serverless 平台,腾讯云构建了全面的开发支持、DevOps、运维监控等能力,协助开发者更好地向 Serverless 架构迁移。

应用场景

据了解,截止 2018 年 12 月,腾讯相册累计用户量突破 1 亿,月活 1200 万,成为小程序生态的重量级玩家。但腾讯相册团队初始阶段仅几位前端和后台开发,且后台开发无法百分百能够投入到此项目,人力非常紧缺。此外,原有后台系统有不少历史包袱,在原有架构上做新的社交化功能开发并不现实。


为解决腾讯相册团队遇到的难题,腾讯云推荐了基于 Serverless 的小程序·云开发模式,通过提供较完整的云服务架构,简化小程序开发过程中复杂的后端操作,让开发者无需关心底层服务器资源部署运维,极大节约服务器架构搭建维护成本。基于云开发,腾讯相册团队用不到 2 周时间上线了第一版小程序。



这一套基于 Serverless 的架构具备更优的弹性计算能力,它根据请求自动运行,秒级上传部署,几乎不需要运维,让用户聚焦核心业务逻辑的编写。

结束语

根据调查报告,无服务器架构市场规模在 2018 年达到 42.5 亿美元,预计在 2023 年将达到 149.3 亿美元,复合年增长率将达 29%。成本和效率两大原因促使无服务器架构的市场规模正在快速增长,并将成为下一代云计算服务的主流形态。


采访最后,肖雨浓表示,随着 Serveless 2.0 的发展,无服务不仅可以逐渐承载起企业核心业务,并且能帮助打通监控、Debug 调试、DevOps 等上下游生态,助力互联网和传统企业业务的快速建设与迭代。


相关文章:


《Serverless 最佳实践:如何在两周内开发出用户量过亿的微信小程序》


《KubeCon 盘点:云原生领域最新开源项目和大厂实践》


《阿里巴巴云原生架构实践及热议技术解析》


2019-07-11 08:386767
用户头像
赵钰莹 InfoQ 主编

发布了 874 篇内容, 共 604.2 次阅读, 收获喜欢 2671 次。

关注

评论 1 条评论

发布
用户头像
上篇是阿里云原生实践,这篇是腾讯的云原生实践,重点都不一样。关于腾讯的Serverless最佳实践,推荐阅读:《腾讯云函数计算冷启动优化实践》https://mp.weixin.qq.com/s/PFrltOwRr0kITx90OgUnSg,这篇内容比较干,应该会对大家有所帮助。
2019-07-11 08:59
回复
没有更多了
发现更多内容

QT exe只允许运行单个

小肉球

qt 7月月更

mysql进阶(十七)Cannot Connect to Database Server问题分析

No Silver Bullet

MySQL 数据库 7月月更

React函数组件详解

恒山其若陋兮

7月月更

Elephant Swap的LaaS方案迅速崛起,构建全新DeFi2.0协议

EOSdreamer111

Python干货篇——列表及列表常用内置函数

Java学术趴

7月日更

云原生(十) | Kubernetes篇之Kubernetes简介

Lansonli

云原生 k8s 7月月更

SeekTiger的Okaleido有大动作,生态通证STI会借此爆发?

股市老人

strncpy() 复制字符串(受长度限制)

謓泽

7月月更

[ kitex 源码解读 ] Kitex 扩展性设计思路

baiyutang

Go golang 云原生 微服务框架 kitex

谈谈程序员如何提高自己的写作能力

宇宙之一粟

写作 7月月更

Prometheus 2.37.0 新特性

耳东@Erdong

release Prometheus 7月月更

SeekTiger的Okaleido有大动作,生态通证STI会借此爆发?

EOSdreamer111

另类加法与走方格的方案数

未见花闻

7月月更

zookeeper-运行期间的leader选举与observer

zarmnosaj

7月月更

C#入门系列(二十七) -- LINQ简析

陈言必行

7月月更

在 SAP 云平台上部署和运行 Docker 应用

Jerry Wang

Docker Kubernetes 云原生 SAP 7月月更

用 React 结合 SAP UI5 Web Components 来开发 SAP Fiori 应用

Jerry Wang

JavaScript 前端开发 SAP SAP UI5 7月月更

Elephant Swap的LaaS方案优势分析,致eToken表现强势

股市老人

深浅拷贝

Jason199

js 深拷贝 浅拷贝 7月月更

【愚公系列】2022年07月 Java教学课程 06-常量

愚公搬代码

7月月更

从源码上学习 MockMvc 的使用

安逸的咸鱼

Java 源码 Mock测试框架 7月月更

Elephant Swap的LaaS方案迅速崛起,构建全新DeFi2.0协议

鳄鱼视界

STM32+ESP8266+MQTT协议连接OneNet物联网平台

DS小龙哥

7月月更

Android 开发遇到的Exception

沃德

android 7月月更

超干货!彻底搞懂单工、半双工、全双工的区别与联系

wljslmz

网络技术 7月月更 通信模式 双工

Docker 安装 Nginx 部署前端项目

宁在春

nginx Docker Vue 7月月更

数据结构-顺序表的实现

芒果酱

数据结构 C语言 7月月更

Qt|编辑框的使用总结

中国好公民st

qt 7月月更

机器学习-集成学习

AIWeker

机器学习 7月月更

【函数式编程实战】(二)代码的行为参数化传递

小明Java问道之路

函数式接口 Lambda 函数式编程 行为参数化 7月日更

Qt | 模态对话框和非模态对话框 QDialog

YOLO.

qt 7月月更

腾讯云原生战略及Serverless平台实践解析_文化 & 方法_赵钰莹_InfoQ精选文章