11月融资额创年度新高,医疗、企业服务热度不减
06-18
立即点击->选择自己喜欢的框架,免费体验Serverless Demo 15位青春女团候选成员,百万在线观众投票,节目播出后,迅速占据热搜前十……在这个激动人心的决赛之夜,腾讯Serverless团队旗下的云API网关产品充当了幕后英雄,利用其高并发、高可用的技术特性支撑起了投票环节节目顺利进行,各地粉丝踊跃呼吁投票,成功确保姑娘们以C位出道!不寻常的投票【投票】是一个非常简单的功能,但《创造营》的投票却不同。 《创造营》是现场表演,投票时间很短。
全网大量粉丝瞬间同时涌入。瞬时大流量、高并发对系统的高可用性提出了极高的要求。
《创造营》投票将决出今年的总冠军。这是《创造营》决定性的夜晚和激动人心的时刻的制胜部分。
投票制度的任何出入都会对粉丝心理和节目效果造成严重损害。在投票的关键时刻,为了保证女团姑娘们顺利出道,技术小哥采用了怎样的技术设计来保证投票功能在这种特殊场景下的高可用呢? ServerlessServerless是云计算技术的新趋势。
一方面,它允许开发者构建和运行应用程序,而无需管理服务器等基础设施,进一步降低构建应用程序的成本,并实现快速迭代和极快速的部署。同时,Serverless特别适合于高并发场景,无需预估流量大小,容量会根据流量情况自动扩容和缩容。
整个过程不需要人工干预。值得一提的是,Serverless也是按需付费的模式,避免了无用的资源开销。
大大降低了成本。为了让用户获得这些技术优势,腾讯Serverless团队推出了云函数、API网关、Serverless Framework、Serverless HTTP等一系列Serverless产品。
这些产品已广泛应用于多种场景。比如最近超火的《创造营》程序,背后就有Serverless技术,默默提供支持和服务。
举个具体的例子,《创造营》的投票系统高可用的秘诀就是基于腾讯云Serverless的重要组件API网关产品。 Serverless云API网关如何保证投票系统的高可用性?接下来我们就从这一点出发,从技术层面为读者进行深入剖析。
高可用的产品策略:轻重逻辑分离、用户分流、功能简化 客户端:重试、失败提示优化、客户端随机丢弃请求 接入层:全局限流、服务降级、认证、ACL 逻辑层:识别 热点对象和热对象预处理、事务一致性和事务回滚存储层:可靠性(主备/异地容灾/数据持久化)、一致运维:灰度发布、故障演练、混沌工程本文主要是从我们从接入层的角度简单分析一下如何保证服务的高可用性。另一方面,灵活的全局限流和服务降级功能也是客户选择API网关的原因。
上图是创创盈小程序的简化架构图:小程序通过外网访问API网关,API作为接入层为各个业务创建restful API,转发到不同的业务代码扫描后台服务跳转至小程序。扶妹计划的功能是投票服务分别提供抽奖和兑奖服务,分别提供抽奖和兑奖功能。
云API网关中创建的API如下图所示: 不同的业务分别建立相关的API并配置对应的后端扫码、投票、抽奖、获取礼物分别对应扫码、投票、抽奖、领奖企业。通常restful API是通过路径或者路径加方法来匹配的。
建议针对不同的业务使用不同的路径。您还可以根据需要根据某些业务API进一步拆分API。
建议选择ANY方法。不建议只创建一个/+ANY API,这样会失去API生命周期管理的意义。
分析服务限流是接入层高可用的必要条件,但限流设置多少合适呢?需要根据业务场景压力预估,结合全链路压测得到的业务能力评估,制定通用的解决方案。结合以上内容,本文主要从以下几点保障业务高可用:全链路压测确定业务容量,根据容量设置限流,避免高负载造成雪崩。
区分主辅业务,优先主业、辅业。通过限流和高可用来进行服务降级。
压测还没做,粮草先放;业务保障,压力测试放在首位。压测可以及时发现业务中的性能问题,计算业务容量。
是保证业务高可用性不可或缺的环境。不过,压力测试有一些共同点需要注意: 做业务压力测试时,最好使用线上数据和线上环境。
因为测试环境和线上环境往往存在各种差异,从而影响压测结果。另一方面,为了不影响正常业务,压力测试往往需要在业务低峰时段进行,比如22:00之后或者早上9:00之前。
压测时尽量使用线上流量或者模拟线上流量。由于线上业务的访问模型并不统一,无差别压力测试和模拟线上流量的模型压力测试的结果往往有很大差异。
不要从单个服务器发起流量。第一,压测时容易达到压测机的瓶颈,影响压测结果;另一方面,由于网络链路中负载均衡、会话保持等功能的存在,单机压测往往会造成负载不均,影响压测结果。
那么你应该选择哪种压力测试工具呢? ab和wrk都是常用的开源压力测试工具。与ab相比,wrk的性能比ab更好,并且支持通过Lua脚本构造特定的压力测试请求,因此wrk的应用更为广泛。
开源压测工具虽然简单、免费,但用其模拟线上流量却非常复杂,所以不考虑选择。基于以上压测考虑,我们选择了WeTest自研的压测大师。
可以基于在线流量模型轻松模拟压测请求,使压测数据更加准确。主要配合客户端进行压力测试。
根据线上流量模型,压测结果如下: 可以看出,业务全链路容量为58K TPS,核心投票逻辑拉单、获取投票状态和投票能力分别可达18K。 、4K、13K TPS。
时延、TPS、成功率均符合预期(投票是由于投票业务本身的流控限制)。服务限流 为了保证投票系统在过载时不会出现问题,我们需要服务限流。
限流是一个非常常见的功能。例如,在nginx/openresty等网关中,限流可以限制并发连接数(ngx_http_limit_conn_module module/resty.limit.conn库)或QPS(ngx_http_limit_req_module module/resty.limit.req库);在数据库中,连接池也可以看作是一种限流(golang的database/sql库中的DB对象维护连接池)。
本文讨论的是接入层网关,所以限流是指请求限流(如QPS)。限流业务场景接入层限流在不同的业务场景中也有不同的职责。
限流通常用于保护后端服务或当前服务不被流量淹没,保证服务的高可用性。常见的例子包括接入层网关的限流功能或者各种RPC/微服务框架(如Sentinel框架)的限流插件。
,这种情况下,服务的可用性更重要,偶尔的限流不准确是可以接受的;限流还可用于通话计费。例如,腾讯云市场会将服务商的API打包,以流量(调用次数)的方式以API调用的形式出售给客户,并根据API调用的频率进行计费。
因为涉及到钱,所以这种情况下,API调用的次数必须绝对准确,不能有任何差错。云API网关目前针对这两种场景有限流策略。
前者在API Gateway中称为限流。可以对API维度、API组维度、用户维度(需要配合认证)的请求进行QPS限流。
;后者对应云API网关配额概念。该功能目前主要提供给云市场,用于精确计算通话次数。
限流算法 限流算法分为单机限流和全局限流。业界常见的单机限流算法对比如下: 限流算法优缺点 参考库固定窗口实现简单关键问题,不适合长周期限流滑动 窗口实现简单并解决了限流临界跳变问题。
限流算法精度有限,不够平滑(限流触发时只会丢包)。漏桶算法平滑了流量。
限流后流量恒定,无法应对突发流量。 ngx_http_limit_req_module模块 令牌桶算法 可以应对突发流量和非流畅流量(目前业界主流的应用层限流方法是令牌桶算法或漏桶算法)。
实际的接入层网关服务往往是分布式的,单机限流不能满足需要。通常需要分布式限流。
虽然可以通过预设将限流值平均到每台机器,但如果潮流不均、机器宕机或者临时扩容,分布式限流功能就会受到严重影响。通常,目前的生产级分布式限流是集中式限流方案:全局限流状态由中心化节点/集群(如redis等)维护,中心化节点/集群定期统计或获取token从这个中心。
也有可能无法使用。如果没有,通常的做法是将分布式限流降级为单机限流。
云API网关目前基于滑动窗口算法实现单机限流,通过中心化节点维护全局限流状态(与CLB的全局限流方案一致,未来会在TAPISIX的实践中进行优化) )实现分布式限流。 。
配置方法 如何使用云API网关配置限流?上述压力测试显示,业务整体容量在58K TPS左右。因此,为了保证基于后端最大负载50%的业务稳定性,将整体业务的API组限流(或服务限流)设置为30K。
参考下图设置API。群组限流(服务限流) Serverless 服务降级 服务降级的本质是解决访问过多与资源有限的矛盾。
通过禁用一些不重要的服务,将更多的资源分配给核心业务,保证核心业务和整个系统的平稳运行。服务降级分类 顾名思义,服务降级需要牺牲部分功能,通常如下: 类型介绍 禁用次要功能,通过限制当前或停止次要服务来保证核心业务有更多资源 功能降级功能或业务本身 简化处理逻辑或简化返回内容的一致性,将强一致性降级为最终一致性。
对于创造营小程序来说,通过对二级API进行限流(降低限流值或者将限流值设置为0)来限制二级业务,实现服务。降级。
配置方法 那么如何使用云API网关配置服务降级呢?区分核心业务和次要业务。创创盈小程序的核心业务是投票和二维码扫描,次要业务是抽奖和兑奖功能。
对于二级业务,可以使用API??限流功能来限制二级接口的电流。因此,决赛当晚,对抽奖、兑奖API设置了较低的API限流,以保证投票等业务的资源不被抢占。
参考下图对二级业务API进行限流(如果请求被云API网关限流,会返回错误码,客户端需要对错误码进行优化。例如:优化提示“投票业务繁忙,请“稍后重试”或内部重试)结束语 经过以上一系列高可用准备,《创造营》最终晚间,创造营小程序顺利度过多轮小高峰投票,成功保证了小姐姐的C位首发,Serverless作为云计算的一项新技术和趋势,凭借自身的优势在越来越多的技术场景中发挥着重要作用。
承载Serverless应用的HTTP服务接入层。此外,Serverless还包括云功能、Serverless Framework等许多重要组件。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件 举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签:
相关文章
06-18
06-18
06-17
06-17
06-18
最新文章
【玩转GPU】ControlNet初学者生存指南
【实战】获取小程序中用户的城市信息(附源码)
包雪雪简单介绍Vue.js:开学
Go进阶:使用Gin框架简单实现服务端渲染
线程池介绍及实际案例分享
JMeter 注释 18 - JMeter 常用配置组件介绍
基于Sentry的大数据权限解决方案
【云+社区年度征文集】GPE监控介绍及使用