腾讯云TSF日调用量超万亿次背后的故事

腾讯云TSF是整合外部开源框架和腾讯内部历经多年锤炼的PaaS平台打造而成的企业级分布式应用服务开发与托管平台,本文重点对TSF中负责服务托管的PaaS平台进行揭秘,从技术角度解析TSF 平台是如何每天应对万亿次调用的服务托管与治理。

简介:

腾讯云TSF是整合外部开源框架和腾讯内部历经多年锤炼的PaaS平台打造而成的企业级分布式应用服务开发与托管平台,本文重点对TSF中负责服务托管的PaaS平台进行揭秘,从技术角度解析TSF 平台是如何每天应对万亿次调用的服务托管与治理。

TSF PaaS平台的前身是CAE(Cloud App Engine),其核心架构是参考Cloud Foundry设计研发的。为了给开发者提供更加便捷的服务,TSF和公司很多基础服务打通,例如腾讯网关TGW、名字服务L5、内部鉴权服务、以及消息队列等,使得用户可以在TSF平台完成一站式开发、上线、托管服务;除此之外还支持对托管在平台上的应用进行健康检查、进程监控、日志汇聚展示等服务。让开发者只需关心自己应用代码,而其它一切事情,都由平台为其提供,极大地提高了开发者的效率,降低了运维成本。下图简要描述了PaaS平台和不同角色用户之间的关系。

整体架构示意图

核心能力介绍:

目前腾讯内部有上万个应用托管在TSF PaaS平台,这些应用每天的请求量超过万亿次。下面对TSF PaaS平台的所解决的问题及核心能力分别展开介绍。

弹性扩展能力

在公司众多的互联网业务中,往往有这样的一些业务场景,海量用户突然同时去访问一组服务,如限时抢购、秒杀活动,或者游戏整点开服,tips弹窗都会触发用户的此类行为。服务器经常会面临在短时间涌入大量请求,快速的吃掉CPU和内存,造成服务器瘫痪,前端用户进一步重试,导致雪崩现象加剧。因此在一些非常重要的业务搞活动的时候,需要运维事先准备好大量的机器(预估值要远远大于可能实际值),部署好程序,等待活动的到来。如果有一套自动伸缩机制,活动时可以自动扩容,不需要时可以很方便的下线,整个运营将简单很多,弹性伸缩能力是PaaS平台的基础能力之一,TSF 根据公司内部不同业务需求场景提供多种方式的弹性规则:

规则一:可以对应用所在节点在一定时间内的物理负载情况、请求量、延时、返回错误码等多维度进行配置规则,一旦触发弹性条件,平台将自动进行相应扩缩容操作。

规则二:对于请求量有周期性波峰波谷规律的应用,可以配置定时弹性伸缩,入下图所示。

图:定时扩缩容规则

无论是动态伸缩还是定时伸缩,其后台实现原理是类似的,整体调度架构如下,

图:弹性伸缩模块示意图

配置系统: 用户在控制台根据业务情况,设置弹性伸缩触发规则,规则包括以下几个维度:

采样间隔:1~60s,可任意配置,平台具备秒级别采集数据的能力。配置规则中需要制定连续高负载次数,服务自动扩容首要条件就是服务分组下至少存在一个实例连续上报几次上报高负载数据。同时还要配置冷却时间,在冷却时间平台会忽略实例高负载信息,这样可避免在扩容还没完成期间,再次触发扩容。配置规则中的性能指标,包括CPU、内存、磁盘、网卡流量、TCP连接数、请求量、错误比例、延时大小等的维度。

通知中心: 负责对外推送的模块高负载信息及扩容决策信息。

流程系统: 通知中心收到信息后,触发自动扩容流程,包括资源部署,程序包安装,配置下发等。

弹性伸缩能力在微信红包诞生的那个春节发挥到了极致,2014年春节微信红包出乎所有人的意料一夜之前红遍大江南北,每一秒钟都有大量用户涌入,TSF 根据事先配置的规则,自动弹性扩展,成功支撑了突入起来的海量请求。为微信红包初期的发展赢得了宝贵的时间,下图为自动扩容任务列表,可以看到同一个服务在短时间内自动触发了很多次扩容操作,大大减轻了运维压力,真正达到了无人值守。

图:弹性伸缩任务查询列表

灰度发布,流量控制能力

TSF平台可以完成对应用整个生命周期的管理,从代码开发到CI/CD再到版本的升级与回退。在新功能上线过程中通常需要一个灰度过程来控制能访问到新版本的流量比重,如果发现了异常问题需要及时回滚到稳定版本。另外,灰度发布并不是短暂的过程,可能会持续很久。例如某个重大的框架或者系统更新可能会持续很久,有可能整个服务在几个月内都是新旧并存,甚至有可能需要两个版本分别各自迭代。而从产品的角度来看可能就会更灵活,很有可能线上有五六个方案都在收集数据,每天有了一些新想法都要上一些小版本看效果,每个版本上线后可能都要再各自做优化调整观察效果。这种情况可能线上就永远不会有一个统一的版本灰度反而是个常态来应对不断变化的需求和挑战。

TSF 灰度发布系统包括以下两个方面

精确的流量分发控制:从运维风险控制的角度,需要把受影响的流量控制在一个精确的范围内,在上线前就知道哪部分用户会有问题,而不是真出问题谁受到影响都不知道。一个常见场景是新版本只让公司内部的员工能访问到,再一个市、一个省的一点点推上去。TSF 灰度发布系统可以对应用实例进行分组操作,新版本按照分组来灰度发布,将一部分流量导入灰度分组,观察是否符合预期,具体导入那部分流量可以是公司内部员工,也可以按照其他维度来切分。

监控系统的支撑:流量精确分配只是第一步,接下来更重要的是获得多个版本的关键指标。对运维来说可能是看错误率、吞吐量、延迟、CPU内存消耗这些系统层面指标。对于产品来说可能是要看点击率、pv、uv 等业务指标的变化。这些都可以在PaaS控制台以图表的方式展现出来,方便对下一步灰度做出决策。

完备的日志与监控系统

完善的统计监控与日志系统是一个PaaS平台最基础的能力,没有之一。TSF的监控与日志系统底层采用EFK(ES+ Filebeat+Kinana)方案搭建而成,监控数据维度主要分为以下几类:

a.访问量:请求数、成功数、失败数、成功百分比、同比环比波动百分比

b.响应包大小、响应延时

c.机器负载:CPU、内存、读写磁盘、TCP连接数、出入流量、出入包量

d.进程监控

其中前两类采集频率是分钟级别的,机器负载和进程类的监控是秒级的,各个业务可以根据实际需要进行个性化配置。

上述以“监”,在“控”方面,支持字符串类型的微信、短信、邮件告警,另一方面支持如下图所示的曲线告警,用户可以根据需要来配置触发告警条件。

同时TSF 后台也会根据历史上报数据和告警策略进行大数据分析对比,进行智能运维。

图:统计监控示意图

分布式作业能力

TSF PaaS平台的分布式作业系统是基于Quartz开发而来的,充分继承了Quartz强大的调度功能和丰富多样的调度方法,以及其分布式集群能力。

通过TSF 分布式作业管控平台不仅可以完成所有的运维操作,还可以自动选取负载较低节点来下发计算任务,充分利用设备资源。除此之外所有作业的执行详细情况都可以在控制台进行查询,从下图可以看出目前分布式作业平台一天大约执行几十万个任务。

图:分布式作业示意图

总结:

本文针对腾讯内部接入TSF平台的业务在日常运营过程中重点关注的几个核心功能点来介绍了TSF平台服务生命周期管理部分的核心能力,如想进一步了解实习技术细节欢迎进一步交流。

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

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

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏我就是马云飞

该如何接手别人遗留下的代码?

在我们开始之前,你应该先了解一些事项。首先,请阅读这篇 Joel Spolsky 的著名文章,了解为什么永远不应该重写代码(https://www.joelon...

15630
来自专栏CSDN技术头条

小故事:架构师需要做什么?

作者:Robert C. Martin 原文:A Little Architecture 译者:孙薇 责编:钱曙光 本文是一篇模仿问答的小故事,作者用幽默的风格...

24960
来自专栏Java架构师历程

重构单体应用为微服务

近年来,微服务在应用开发和部署方面取得了显著的进步。将应用开发或者重构成微服务以分离服务,通过 API 以明确的方式来相互“对话”。例如,每个微服务都是自包含(...

20930

37 个你必须知道的现代数据中心术语

在今日的信息科技社会,现代数据中心这个术语越来越受到领导者的重视。云计算、闪存、软件定义网络(SDN)、容器,以及大量的编排及自动化工具。这些新型技术构成了现代...

323100
来自专栏WeTest质量开放平台团队的专栏

告别测试机!云真机的进阶之路

WeTest云真机自9月份全新改版上线以来,受到了广大开发者和测试人员的好评。与传统测试机相比,WeTest云真机不仅有更流畅的操作体验,更方便的测试选择,同时...

58920
来自专栏即时通讯技术

达达O2O后台架构演进实践:从0到4000高并发请求背后的努力

达达创立于2014年5月,业务覆盖全国37个城市,拥有130万注册众包配送员,日均配送百万单,是全国领先的最后三公里物流配送平台。 达达的业务模式与滴滴以及Ub...

28930
来自专栏CSDN技术头条

互联网中小型企业的持续集成CICD

本文来自作者 SoftwareLuke 在 GitChat 上分享 「互联网中小型企业的持续集成CICD」 互联网研发的世界里唯快不破、迭代速度往往很快。在快速...

3.3K90
来自专栏程序员互动联盟

【专业技术】微软最新的浏览器到底有多牛?

编者按:微软的不思进取,部分原因是钱太好赚了--躺在windows上赚大钱。可是但凡一家企业有了一个聚宝盆之后,任凭它之前多么伟大,这之后也会慢慢走向平庸,柯达...

380100
来自专栏张善友的专栏

MongoDB 如何使定制电子商务变得简单

开源电子商务软件市场已经历了众多发展阶段,您可能已经通过 osCommerce、Magento、Zen Cart、PrestaShop、Spree 等流行平台而...

24370
来自专栏Laoqi's Linux运维专列

饿了么的架构设计及演进之路(转)

22560

扫码关注云+社区

领取腾讯云代金券