【100亿次的挑战】之如何在服务有损的情况下保证用户体验

2023-11-03 11:40

本文主要是介绍【100亿次的挑战】之如何在服务有损的情况下保证用户体验,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

讲师:Boas

 

分享主题:如何在服务有损情况下保证用户体验

 

羊年春晚因着微信摇一摇的介入,变得十分的不一样。而从项目参与者本身出发,100亿次摇一摇、10亿个红包等惊人数据,都是让我们很兴奋的,当然之所以撑起这么大的数量,服务器的多项优化起到了非常关键的作用。作为参与其中的客户端开发来说,我们能做什么?我们扮演的是什么样的角色?而面对春晚这个巨大的项目,我们从哪些方面入手设计?在这里跟大家做一点分享。

 

对于客户端同学来说,常常直面用户的体验问题,而从春晚这个项目本身出发,可预见的是,当时的服务将会有损,在这样的情况下如何保证用户体验,成了我们设计的一个核心。

 

 

一春晚项目简介

 

春晚是一个什么样的项目?它与我们平时遇到的项目有什么不同之处?

 

1. 并发量大

 

春晚是在春节起见发生,而同在春节期间发生的还有“春运”。这两者之间虽然完全不同,但也有其相同之处——需求多、资源少。

 

春晚本身有着很高的收视率,再加上红包的引导,摇一摇的请求量必然会达到这个空前的高峰,服务器也面临着从未有过的压力。除了摇一摇协议本身,还有每个活动背后所需的资源。

 

2. 项目复杂

 

春晚项目不是只有抢红包的10分钟,它的整个过程包括电视互动、好友互动、企业红包、人文艺术等多方面的产品,而其中的细节涵盖到每个节目之间的切换等等。不论是项目参与人数还是产品需求,都是一个复杂的项目。

 

3. 用户预期不可控

 

绝大多数互联网产品都是希望有着越多越好的用户数。但是对于春晚这个项目,却不尽然。由于资源有限,我们希望“见者有份”,尽可能使所有参与者都有满意的收获。因此我们需要对用户预期尽可能地做一些控制。

 

二高并发我们怎么做?

 

1.尽可能少请求资源

 

春晚期间除了摇一摇协议本身的高并发之外,还需要极多的资源请求,如明星拜年的资源、企业红包资源、节目单等等。面对这些资源压力,我们设计了资源预下载的方案。

 

 

客户端通过服务器的通知机制,获取资源信息,并启动下载,得到资源包。由于这些资源都有着保密性需求,所以我们下载得到的资源包都是加密了的。在活动临近时,客户端再获取资源加密的控制信息,并进行解密。

 

另外很重要的一点,我们在整个启动下载、下载成功、重试下载、解密成功等各个环节处都做了上报,监控每个资源的准备情况。

 

 

通过上面的数据展示可以看出,我们很好地平滑了资源下载的压力。

 

2.优化404,提高用户体验

 

纵然我们有了资源预下载的方案,但也不能保证每个客户端都完全地做好了资源的准备,所以,在异常时,我们依旧紧紧关注着用户的体验。

 

首先,我们设计了彩蛋。在用户可预期的活动之外,加入一些搞笑的彩蛋,不仅缓解服务器的压力,同样能够给到用户趣味感。

 

 

另外,我们美化了404。在除夕夜这样合家欢聚的时刻,我们避免数字和科技用语。你看不见“服务器繁忙”“请稍后再试”等冷冰冰的话语,我们给你的是体贴温暖的“陪家人说话”。

 

结 合节日的气氛,我们还设计了一个404页面,鞭炮+服务器。一个作为技术人员不愿见到的界面,但又是一个精巧的设计。这个界面表示服务器这时候压力真的巨 大了,但是这个界面给用户带去的感受是新奇,是无限的想象。“鞭炮下面挂的是礼盒吗?”“我是中奖了吗?”最终一声哈哈大笑,在春晚这个项目中,完美地体 现了有损服务下保证用户体验这个价值观。

 

三项目复杂我们怎样来稳定?

 

1.方案要简单

 

精细的方案设计的确可以带给我们非常细致的体验。但是也意味着有着极多的技术细节要处理,这样带给大家的就是系统更加复杂,稳定性的降低。所以,我们不得不弱化一些灵活性,来得到我们需要的稳定。

 

为了保护服务器,可以支持服务器告知限流时间,限流期间不做请求,减少服务器压力。然后限流时间的设定就是一个需要考虑灵活和稳定双重标准的设计。

 

简单地由服务器传参数作秒数,充分具备灵活性,但若出问题,也有可能出现几百甚至更到的限流时间,将会导致不可用。

 

若是有客户端写死,就充分稳定,但也完全不灵活。

 

两者兼顾,最终协定共用一份枚举,服务器传参表示限流level,客户端查得相关时长,如此,一来保证限流时长都在可接受范围内,二来限流时长可由服务器控制。

 

2. 异常要简单

 

程序运行中,有很多异常会出现,如:企业资源未下载时,去下载?明星拜年没资源时,跳网页?节目ID不匹配时,保留匹配的部分?面对这些问题,我们依旧从稳定性出发,简单处理,直接进入美化过的404。

 

3.系统要可扩展

 

这个项目中,有着很多我们不可预知的变化。系统的稳定,除了很多逻辑要简单之外,必要的扩展性,也是保证可稳定运行的重要因素。在设计中,我们加入通用H5的设计,而这个设计,也是在两次预热和“一年又一年”的需求中,起到了至关重要的作用。

 

四用户预期我们怎么控制?

 

  1. 运营位的引导

 

在红包详情页,设计加入运营位,可引导至春晚摇一摇。这是一种相对较弱的引导方式。

 

2. 红点提示引导

 

红点提示是目前常用的提示能力。在春晚项目中,我们对红点进行控制,可以分平台下发、红点加入有效期控制、一次下发中带有多个红点等。然而,数据标明,红点的能力有限,只能带来一次性的点击量,不能够持久引流。

 

3. 倒计时Banner

用户看到红点,进入活动后,一次的摇一摇后没有结果便会离开。而倒计时的设计,给用户持久的能量,使用户持久参与活动。

 

五我们还做了什么?

 

上述的阐述都在描绘我们如何设计,如何从设计上尽力地匹配海量服务的特点,但是并不能够真正100%地解决一切问题。我们在实践过程中,还意识到一些项目进行中要注意的问题

 

 

  1. 关键问题要追根究底

  2. 把握每次预热的机会

 

由于没有发布前的灰度过程,我们只能依靠预热的机会,发现问题、解决问题。也只有在预热过程中,我们尽力去发现问题,才能真正明确自己的能力,更好地优化,已达到目的。

 

六小结

 

面对像春晚这样海量服务的项目,我们认为“一定会挂,只是怎样更优雅?”我们可以用这样一张图来理解

 

 

原文here

转载于:https://www.cnblogs.com/ytkah/articles/4422720.html

这篇关于【100亿次的挑战】之如何在服务有损的情况下保证用户体验的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/337911

相关文章

跨国公司撤出在华研发中心的启示:中国IT产业的挑战与机遇

近日,IBM中国宣布撤出在华的两大研发中心,这一决定在IT行业引发了广泛的讨论和关注。跨国公司在华研发中心的撤出,不仅对众多IT从业者的职业发展带来了直接的冲击,也引发了人们对全球化背景下中国IT产业竞争力和未来发展方向的深思。面对这一突如其来的变化,我们应如何看待跨国公司的决策?中国IT人才又该如何应对?中国IT产业将何去何从?本文将围绕这些问题展开探讨。 跨国公司撤出的背景与

【区块链 + 人才服务】可信教育区块链治理系统 | FISCO BCOS应用案例

伴随着区块链技术的不断完善,其在教育信息化中的应用也在持续发展。利用区块链数据共识、不可篡改的特性, 将与教育相关的数据要素在区块链上进行存证确权,在确保数据可信的前提下,促进教育的公平、透明、开放,为教育教学质量提升赋能,实现教育数据的安全共享、高等教育体系的智慧治理。 可信教育区块链治理系统的顶层治理架构由教育部、高校、企业、学生等多方角色共同参与建设、维护,支撑教育资源共享、教学质量评估、

BUUCTF靶场[web][极客大挑战 2019]Http、[HCTF 2018]admin

目录   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 [web][HCTF 2018]admin 考点:弱密码字典爆破 四种方法:   [web][极客大挑战 2019]Http 考点:Referer协议、UA协议、X-Forwarded-For协议 访问环境 老规矩,我们先查看源代码

【区块链 + 人才服务】区块链集成开发平台 | FISCO BCOS应用案例

随着区块链技术的快速发展,越来越多的企业开始将其应用于实际业务中。然而,区块链技术的专业性使得其集成开发成为一项挑战。针对此,广东中创智慧科技有限公司基于国产开源联盟链 FISCO BCOS 推出了区块链集成开发平台。该平台基于区块链技术,提供一套全面的区块链开发工具和开发环境,支持开发者快速开发和部署区块链应用。此外,该平台还可以提供一套全面的区块链开发教程和文档,帮助开发者快速上手区块链开发。

【Kubernetes】K8s 的安全框架和用户认证

K8s 的安全框架和用户认证 1.Kubernetes 的安全框架1.1 认证:Authentication1.2 鉴权:Authorization1.3 准入控制:Admission Control 2.Kubernetes 的用户认证2.1 Kubernetes 的用户认证方式2.2 配置 Kubernetes 集群使用密码认证 Kubernetes 作为一个分布式的虚拟

基于SpringBoot的宠物服务系统+uniapp小程序+LW参考示例

系列文章目录 1.基于SSM的洗衣房管理系统+原生微信小程序+LW参考示例 2.基于SpringBoot的宠物摄影网站管理系统+LW参考示例 3.基于SpringBoot+Vue的企业人事管理系统+LW参考示例 4.基于SSM的高校实验室管理系统+LW参考示例 5.基于SpringBoot的二手数码回收系统+原生微信小程序+LW参考示例 6.基于SSM的民宿预订管理系统+LW参考示例 7.基于

国产游戏行业的崛起与挑战:技术创新引领未来

国产游戏行业的崛起与挑战:技术创新引领未来 近年来,国产游戏行业蓬勃发展,技术水平不断提升,许多优秀作品在国际市场上崭露头角。从画面渲染到物理引擎,从AI技术到服务器架构,国产游戏已实现质的飞跃。然而,面对全球游戏市场的激烈竞争,国产游戏技术仍然面临诸多挑战。本文将探讨这些挑战,并展望未来的机遇,深入分析IT技术的创新将如何推动行业发展。 国产游戏技术现状 国产游戏在画面渲染、物理引擎、AI

Golang支持平滑升级的HTTP服务

前段时间用Golang在做一个HTTP的接口,因编译型语言的特性,修改了代码需要重新编译可执行文件,关闭正在运行的老程序,并启动新程序。对于访问量较大的面向用户的产品,关闭、重启的过程中势必会出现无法访问的情况,从而影响用户体验。 使用Golang的系统包开发HTTP服务,是无法支持平滑升级(优雅重启)的,本文将探讨如何解决该问题。 一、平滑升级(优雅重启)的一般思路 一般情况下,要实现平滑

Golang服务平滑重启

与重载配置相同的是我们也需要通过信号来通知server重启,但关键在于平滑重启,如果只是简单的重启,只需要kill掉,然后再拉起即可。平滑重启意味着server升级的时候可以不用停止业务。 我们先来看下Github上有没有相应的库解决这个问题,然后找到了如下三个库: facebookgo/grace - Graceful restart & zero downtime deploy for G

vue2实践:el-table实现由用户自己控制行数的动态表格

需求 项目中需要提供一个动态表单,如图: 当我点击添加时,便添加一行;点击右边的删除时,便删除这一行。 至少要有一行数据,但是没有上限。 思路 这种每一行的数据固定,但是不定行数的,很容易想到使用el-table来实现,它可以循环读取:data所绑定的数组,来生成行数据,不同的是: 1、table里面的每一个cell,需要放置一个input来支持用户编辑。 2、最后一列放置两个b