写点什么

腾讯云原生战略及 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:387247
用户头像
赵钰莹 极客邦科技 总编辑

发布了 934 篇内容, 共 720.0 次阅读, 收获喜欢 2717 次。

关注

评论 1 条评论

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

【数据结构之红黑树】深入原理与实现

C++后台开发

数据结构 后端开发 红黑树 linux开发 C++开发

SAP | 认识abap工作台(上)

暮春零贰

SAP abap 10月月更

Vue 2x 中使用 render 和 jsx 的最佳实践 (1)

默默的成长

Vue 前端 10月月更

深入浅出理解Java并发AQS的独占锁模式

JAVA旭阳

Java 并发 10月月更

开源云原生平台对比 KubeSphere vs Rainbond

北京好雨科技有限公司

阿里云事件生态再升级:使用 EventBridge 驱动全量云产品

阿里巴巴云原生

阿里云 云原生 EventBridge

Vue中的nextTick有什么作用?

CoderBin

面试 前端 Vue 3 nextTick 10月月更

权威认可!OceanBase 通过分布式数据库金融标准验证

OceanBase 数据库

ES6中Let命令基本用法

默默的成长

前端 ES6 10月月更

企业号十月PK榜,年度榜单倒计时开始!

InfoQ写作社区官方

企业号十月PK榜

【10.7-10.14】写作社区优秀技术博文一览

InfoQ写作社区官方

优质创作周报

中软鸿联:数字为运动蓄能,智能为健康充值

中软国际AIoT开发者社区

智能穿戴 运动健康

kubernetes为什么会火?为什么值得我们学习?

王中阳Go

Kubernetes k8s 容器编排 10月月更 动态扩缩

KMP算法的实现详解

lovevivi

c 数据结构 10月月更

什么是云渲染?《阿凡达》《阿丽塔》告诉你

Finovy Cloud

人工智能 云渲染

Java基础(五)| 方法的定义、调用及重载

timerring

Java 10月月更 方法重载

BAT加速冲刺,“智慧交通”赛道谁能笑到最后

硬科技星球

云原生时代的DevOps平台设计之道

北京好雨科技有限公司

【kafka】kafka的服务复用与隔离设计方案

石臻臻的杂货铺

kafka 后端 10月月更

快速一览:织信低代码联合WPS推出多场景办公轻应用

优秀

低代码 wps

【DBA100人】台枫:DBA不仅要懂运维还得懂代码

OceanBase 数据库

Vue 中const 命令

默默的成长

前端 Vue 3 10月月更

故障复盘究竟怎么做?美图SRE结合10年经验做了三大总结(附模板)

TakinTalks稳定性社区

运维 SRE SRE实践

图解ReentrantLock公平锁和非公平锁实现

JAVA旭阳

Java 并发 10月月更

MySQL高级--性能优化之慢日志查询

Java学术趴

10月月更

数有引力 智造未来 | 华为云云商店星品推介会·厦门站

极客天地

Flowable 按角色分配任务

江南一点雨

spring springboot workflow flowable

华为云从入门到实战 | 云服务概述与华为云搭建Web应用

TiAmo

华为 华为云 云开发 10月月更

Milvus 2.1 版本更新 - 简单可信赖、性能持续提升

Zilliz

人工智能 开源项目 Milvus 版本更新 向量数据库

中原银行:基于StarRocks构建OLAP全场景架构解决方案,迈入极速统一时代

StarRocks

数据库

你对“低代码”存在哪些误解?

优秀

低代码

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