阿里云前端专家冯军:前端用户体验该如何优化

news2024/11/15 12:56:21

2022 年 9 月 28 日,阿里云用户组(AUG)第 11 期活动在深圳举办。活动现场,阿里云前端专家冯军,向参会企业代表分享了前端用户体验该如何优化?本文根据演讲内容整理而成。

大家好,我叫冯军,在可观测领域工作六年的经验,现在主要负责的 ARMS 前端监控。今天讨论的话题是前端用户体验该如何优化。我就简单介绍一下我们在解决什么问题?

前端监控关心的核心问题

在这里插入图片描述

如何提供一个优质的用户体验,所有公司都比较关注:

  • 在客户出现问题的时候,如何快速划分清楚问题是由于前端,网络,还是后端服务导致的?
  • 客户遍及全球,如何发现用户在产品使用上的体验差异,以及出现问题时的影响范围?
  • 如何通过快速搭建业务指标的监控?
  • 产品体验改版,基于用户使用体感量化改进结果?

Session 结构

有客户出现问题,我们如何划分清楚问题出现哪一块?一个用户觉得体验或者是使用上的中断,那么到底是前端出了问题,还是网络出了问题,还是后端出了问题?

多维分析 & 日志分析

我们现在的客户是多种多样的,比如说我们服务了全球,那么我们怎么样才能去发现每个地区,每个用户他的网络情况,用户习惯我们都不一样。怎么样去挖掘出不同区域不同用户的这种差异,出现问题怎么去解决?

自定义事件上报

比如说监控的基础指标—错误、API 等等,但是涉及到一些业务相关的,我们怎么去解决?我们要统计有个 VIPD 的使用量大概有多少?如果我们需要后端开发接口去建表、建库,前端去做一些统计,那这个流程可能要耗费很长时间,就会有很高的代价。如果说你的业务非常多想快速迭代,我们怎么样去快速的去统计业务的一些指标。

自定义关键指标和属性上报

产品体验改版,每隔一段时间做一些改版,我如何知道这次改版相比上一个版本有了提升,提升在哪里等等这些是我们关心的一些问题。

什么是 ARMS 前端监控?

在这里插入图片描述

那么怎么解决呢?首先介绍一下 ARMS 提供了哪些主要的能力?前端监控是通过实时的采集客户端应用程序性能数据,帮助开发人员优化用户体验。我提供了上图中四个主要的能力(其他能力还有很多):

会话分析:会话分析是从单个用户的绘画出发去了解用户所有发生的页面访问,API,错误、性能、用户的行为等等,这样我们可以针对数据库做分析。

问题定位:这是一个对前端来说非常普遍的问题,在测试的过程中发现正常,但是在用户使用过程中,就会发生各种各样的错误,这个错误发生的情况是怎么样的?我们怎么样去定位呢?比如用户使用的某些浏览器没有在测试范围内,这种情况可能大量存在的真实情况。

衡量用户影响:比如我们出现了一些错误,导致用户使用上的中断,那么影响了哪些客户呢?这个客户分布在哪里?是不是跟这个应用有关系?还是跟浏览器有关系?跟系统有关系?还是跟设备有关系?衡量用户影响能够通过告警的方式通知到开发人员在第一时间发现问题、解决问题。

前后端链路追踪:往往出现一种问题就是后端监控没有任何错误,但是前端就是发生了一些 API 的请求错误。比如说无法访问或者超时问题,那它可能发生在哪一个点呢?比如说出现在网络不好,或者是出现在服务端的网关侧没有把这个请求转发到后端的服务,或者是页面开发存在出现了大量的请求的跟进中,这时候导致一些 API 超时,这种情况都有可能出现,这就是我们 ARMS 前端监控主要提供的一些能力。

监控架构

在这里插入图片描述

探针接入层

目前我们支持了主要是移动 Web & H5、小程序、Native APP,目前接入的能够满足大部分的需求。

数据高可用

网关层是来接收看帧收到的数据,因为它是公网的,我们做了大量的关于突发流量的优化。

首先第一层是有一个本地磁盘会立刻会把我们的数据存在本地,然后通过 Victor 的处理传递到 Kafka,进一步进入流式计算,我们自研的流式计算,用于数据聚合、采样分发,处理完了以后,会把数据存到我们的明细数据库 SLS,指标数据存在 Prometheus(Prometheus 还在内测很快会对外开放)。另外一部分就是原日志,我们会也会存储一部分。为了防止我们的流量突发会导致的一些异常,数据依然能够恢复过来。另外一部分是 Config 是不对外开放的,是我们存一些配置的功能。为了控制前面的一些层的一些行为,比如说限流降级这样的一个行为。通过一级磁盘,二级 kafka,三级日志数据库,这三级机制保证了数据的高可用。

数据开放

除通过提供的 OpenAP、告警、Grafana 等能力去做数据分析,我们的明细数据 SLS 部分已经能够完全开放,以前只能通过我们提供的查询层这些能力去查数据,现在已经可以直接基于我们的明细数据自己写一些根据业务特点的查据。

以 Session 为核心的数据

在这里插入图片描述

然后介绍一下数据的组织形式,数据是以三个为核心的,所有的数据都以 Session 为核心。

Session 是一次用户使用产品的完整旅程,是他来到你的站点来访问,进入到他走这一段时间,然后是一个持续的浏览过程。它里面分为多个 PV,就是每一次 PV 是处于某一个 Session,然后每一次 PV 里面包含了若干个监控的项目。比如说 Perf 页面性能、资源监控、API 错误、自定义监控、用户的行为等等这样,所有的上报项目,都会有一些公共属性,大概是一个六类:
在这里插入图片描述

阿里云前端专家冯军:前端用户体验该如何优化

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/141345.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

HTML a标签打开新标签页避免出现安全漏洞,请使用“noopener”

新标签页中打开一个网址如何出现安全漏洞 让我们在网站上的新标签页中打开一个网址&#xff0c;HTML如下 <a href"https://malicious-domain.netlify.com" target"_blank">访问恶意网站&#xff01; </a> 这里我们有一个指向恶意网站的 href…

当malloc为string等容器开内存时候产生的问题,malloc和new最本质的区别

报内存错误的代码: 顺利执行的代码: 可以看到在malloc为a开好空间&#xff0c;然后对自定义类型对象a中的string a成员进行赋值的时候&#xff0c;发生了内存错误&#xff0c;但是经过测试&#xff0c;使用new为string a开空间就不会发生错误; new和malloc最本质的区别 最主要…

uniCloud云开发----6、uniapp配置tabbar底部导航栏和去掉uni-app顶部标题

uniapp配置tabbar底部导航栏、去掉uni-app顶部标题前言效果图1、创建页面并声明注册2、配置pages.json--tabBar3、通过pages.json来去掉uni-app顶部标题全部页面都去掉单个页面去掉前言 tabbar文档 在 pages.json 中提供 tabBar 配置&#xff0c;不仅仅是为了方便快速开发导航…

Elasticsearch入门,持续更新中

目录elasticsearch简介elasticsearch下载问题分析解决启动可视化界面Kibana下载配置启动进入kibana的控制台elasticsearch简介 懂得都懂 elasticsearch下载 官网下载地址 链接: https://www.elastic.co/cn/downloads/elasticsearch 本人准备安装在win10上&#xff0c;本地…

IB学习阶段所需的教材有哪些?

IB课程即国际文凭组织IBO&#xff08;International Baccalaureate Organization&#xff09;&#xff0c;是为全球学生开设从幼儿园到大学预科的课程&#xff0c;为3-19岁的学生提供智力&#xff0c;情感&#xff0c;个人发展&#xff0c;社会技能等方面的教育&#xff0c;使其…

可以同时解析多个binlog吗

GreatSQL社区原创内容未经授权不得随意使用&#xff0c;转载请联系小编并注明来源。GreatSQL是MySQL的国产分支版本&#xff0c;使用上与MySQL一致。作者&#xff1a; 叶金荣文章来源&#xff1a;GreatSQL社区原创 1.可以同时解析多个binlog吗 2.innodb_buffer_pool_instances设…

【C语言进阶】指针的进阶(1)

作者:匿名者Unit 目录一.数组指针1.定义2.使用二.数组、指针传参1.一维数组传参2.二维数组传参3.一级指针传参4.二级指针传参三.函数指针一.数组指针 1.定义 数组指针&#xff0c;顾名思义是指向数组的指针&#xff0c;那数组指针是如何定义的呢 int (*p)[10]; //解释&#x…

JavaSE从基础到入门:异常的学习

1. 异常的概念与体系结构 1.异常的概念 异常&#xff08;Exception&#xff09;指不期而至的各种状况&#xff0c;异常发生的原因有很多&#xff0c;通常包含以下几大类&#xff1a; 用户输入了非法数据。要打开的文件不存在。网络通信时连接中断&#xff0c;或者JVM内存溢出…

HDMI1.4/2.0 Subsystem官方例程的建立

HDMI1.4/2.0 Subsystem官方例程的建立1、 项目背景明德扬(MDY)为某研究所研制的视频接口转换模块&#xff0c;该模块将HDMI视频转成LVDS7:1视频。视频输入接口采用的是HDMI 4K输入&#xff0c;基于Xilinx K7325t的高速收发器,特点是无需外围HDMI接收芯片&#xff0c;大大简化了…

SpringBoot+VUE前后端分离项目学习笔记 - 【13 SpringBoot和Vue实现导入和导出】

hutool工具 引入Hutool工具使用ExcelWriter&#xff0c;可以将数据写出到EXCEL https://www.hutool.cn/docs/#/poi/Excel%E5%B7%A5%E5%85%B7-ExcelUtil 引入pom依赖 <dependency><groupId>cn.hutool</groupId><artifactId>hutool-all</artifactI…

项目中不容忽视的图表报表

在项目工作中&#xff0c;报表可是少不了的好帮手&#xff0c;可以帮助我们向合作者以及领导直观地展示项目情况进展。项目报表的作用可以从多维度监控项目的运行&#xff0c;保障项目的顺利进行。让数据可视化&#xff0c;辅助管理者进行合理决策。及时与合作者共享项目信息&a…

使用ros从realsence相机中获取图像

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录前言一、使用ros从realsence相机中获取录制的视频并播放1.开启ros内核2.打开realsense相机3.查看当前话题4.在相机界面显示RGB图像和depth图像4.1 添加Image4.2 填入…

智能高效的Go IDE——GoLand v2022.3全新发布

GoLand使 Go 代码的阅读、编写和更改变得非常容易。即时错误检测和修复建议&#xff0c;通过一步撤消快速安全重构&#xff0c;智能代码完成&#xff0c;死代码检测和文档提示帮助所有 Go 开发人员&#xff0c;从新手到经验丰富的专业人士&#xff0c;创建快速、高效、和可靠的…

javac和java命令详解

javac 是java语言编程编译器。全称java compiler。相信大家在学习java编程的时候&#xff0c;一定使用过javac和java这两个命令。大家在安装JDK的时候&#xff0c;验证是否安装成功&#xff0c;都会在命令行里输入java和javac命令来验证&#xff0c;这就是我们第一次使用java和…

PDF怎么编辑注释? 5 个免费好用的 PDF 注释器

成群结队的人和组织想要注释他们的 PDF 文档的原因有很多。无论哪种情况&#xff0c;目标是做到近乎完美并不是完美。但是&#xff0c;如果您没有合适的 PDF 注释器&#xff0c;这又是不可能的。虽然这些 PDF 注释器工具中的许多都很昂贵&#xff0c;但您仍然可以使用免费的 PD…

tkintertools 模块实战一:任务清单小工具

之前我自己写了一个 tkinter 模块的辅助模块 —— tkintertools&#xff0c;这次试着用这个模块开发了一款可以记录任务的小工具&#xff0c;应该会比较实用。tkinter 模块的最强辅助模块 —— tkintertools&#xff08;万字详解&#xff09;_小康2022的博客-CSDN博客tkinter 模…

数字图像处理实验(直方图均衡化规定化)

图像均衡化 图像均衡化是一种图像处理技术&#xff0c;它的目的是改善图像的对比度。 具体来说&#xff0c;对于一张图像&#xff0c;其直方图就是统计图像中各灰度级出现的次数的图像。通常情况下&#xff0c;图像的直方图会呈现不平衡的状态&#xff0c;即图像的某些灰度级出…

SQLSERVER 的主键索引真的是物理有序吗?

一&#xff1a;背景 1. 讲故事 最近在看 SQL SERVER 2008 查询性能优化&#xff0c;书中说当一个表创建了聚集索引&#xff0c;那么表中的行会按照主键索引的顺序物理排列&#xff0c;这里有一个关键词叫&#xff1a;物理排列&#xff0c;如果不了解底层原理&#xff0c;真的…

5G NR标准: 第18章 射频特性

第18章 射频特性 如第 3 章所述&#xff0c;NR 的射频特性与 5G 的可用频谱以及在这些频谱分配中运行所需的频谱灵活性密切相关。 虽然频谱灵活性一直是前几代移动系统的基石&#xff0c;但对于 NR&#xff0c;这一点变得更加突出。 它由几个组成部分组成&#xff0c;包括在不…

C++11 线程异步

文章目录1. 线程异步的概念2. future2.1 共享状态2.2 常用成员函数3. promise3.1 常用成员函数3.2 promise的基本使用4. package_task4.1 常用成员函数4.2 package_task的基本使用5. async5.1 async的基本使用6. promise、package_task、async的对比与总结1. 线程异步的概念 问…