《阿里云可观测最佳实践》——6.核桃编程(1)

简介: 《阿里云可观测最佳实践》——6.核桃编程(1)

6

6 核桃编程

  基于ARMS的核桃编程前端可观测性建设之路


1 关于核桃编程


在互联网时代的今天,新时代家长愈发注重孩子的素质教育,注重培养孩子人工智能方向的才能。少儿编程教育就是在这样的背景下快速发展起来。


核桃编程作为少儿编程教育行业的领导者,致力于以科技手段促进编程教育,通过人工智能、自适应学习等先进技术和科学的教育方法,启发中国孩子的学习能力。自2017年8月成立以来,核桃编程的业务量飞速发展,仅仅3年时间付费学员人数就突破了200万,并实现了单月营收过亿。


2 业务场景 & 可观测需求介绍


随着核桃编程业务快速增长,核心应用的系统规模和系统复杂度经历翻天覆地变化。技术团队不断通过新兴技术手段维护整套系统架构的技术先进性。在3年时间里,技术团队至少对整体系统架构进行了6次以上重大重构,涉及微服务化、容器化、分布式数据库等重要技术,并尝试通过Serverless提升系统弹性伸缩能力。疫情期间,当系统负荷呈现数倍突增,核桃编程的系统架构经受住了考验。


随着系统架构变得复杂,如何提升分布式系统的可观测性成为技术团队面对的重要要挑战。在线上编程教学场景中,用户一个简单的操作,就有可能涉及到前后端系统多次交互,以及多个服务端微服务应用之间相互调用,甚至还会受到第三方服务接口影响。


任何环节出现故障或者性能瓶颈,都会导致用户体验断崖式下跌,而用户体验又是决定品牌形象的核心要素,所以对于核桃技术团队而言,保证优秀的用户体验需要在系统可观测性建设上做到这几个方面:


全面而且实时的了解系统每一个对外接口的性能质量。

通过数据掌握最终用户与系统交互时感受到的系统健康程度。

当系统健康程度存在问题时,技术团队能第一时间发现问题,并及时处理。

处理问题时,能迅速定位到系统瓶颈和故障源。


任何一个技术团队要想围绕着这几个方面,从零开始建设分布式可观测体系,都是一项非常艰巨的任务,好在业界对于分布式可观测性的建设,已经有了不少成熟的方法论以及开源项目可以参考。


通过引入Skywalking,Prometheus等开源技术,核桃技术团队建立完整的分布式可观测体系,能够对服务端复杂微服务应用实现全链路追踪,并通过统一的日志服务体系收集分析业务日志。这样的对于系统稳定性以及用户体验提升是立竿见影的:当系统服务端的任何一个环节出现故障或性能瓶颈的时候,技术团队都能第一时间得到通知,并快速定位问题,进行针对性处理。


相对于成熟的服务端监控技术,整个业界在客户端监控领域的技术方案一直比较欠缺。海量用户使用不同厂家、不同操作系统、不同屏幕分辨率终端设备,分布在不同地域,通过不同网络运营商进行接入,甚至存在复第三方依赖,包括CDN、第三方统计脚本、页面嵌套等方面。当用户体验遇到问题时,如果仅仅拥有服务端监控手段,很难第一时间确认问题的根源到底在于前端还是后端。即便能够排除服务端的问题,前端用户体验也受到页面渲染、JavaScript执行、网络质量、第三方接口服务质量等方面的影响,为进一步排查问题留下了非常多的挑战。


因此,技术团队计划通过前端JavaScript做自定义的埋点,将最终用户的各种行为实时上报给服务端进行统计,以第一时间了解到用户体验。但具体到业务埋点、数据采集、聚合分析、视图展现等层面都有非常多工作需要做,是一个浩大的工程。绝大多数技术团队而言,投入如此多的精力来建设这样一套前端监控方案都是不现实的。


《阿里云可观测最佳实践》——6.核桃编程(2): https://developer.aliyun.com/article/1227051


相关文章
sign check fail:check Sign and Data Fail报错攻略
错误码: com.alipay.api.AlipayApiException: sign check fail: check Sign and ​Fail            报错原因:验签失败 ,未使用正确的支付宝公钥     在新版接口的调用过程中,常常出现此报错。
5661 12
|
开发工具
frp-免费内网穿透
frp-免费内网穿透
2331 0
|
12月前
|
存储 安全 搜索推荐
《分布式软总线牵手云服务,拓展应用新维度》
分布式软总线与云服务的融合正掀起一场技术变革,重塑工作、生活与交互方式。分布式软总线作为设备互联的基石,通过Wi-Fi、蓝牙、NFC等技术实现设备间无缝连接与协作;云服务则提供强大的算力与数据支撑,助力复杂数据分析和业务扩展。二者结合拓展了智能家居、智能办公及工业互联网等应用场景,如远程控制家电、高效会议协作与生产流程优化。然而,安全隐私、网络延迟与标准兼容性等问题仍需克服。未来,这一技术融合将带来更多智能化与便捷化的可能性,深刻改变我们的世界。
256 0
|
Java 应用服务中间件 容器
SpringBoot配置外部Tomcat并打war包
SpringBoot配置外部Tomcat并打war包
548 0
|
机器学习/深度学习 数据采集 供应链
使用Python实现智能食品价格预测的深度学习模型
使用Python实现智能食品价格预测的深度学习模型
421 6
|
NoSQL 关系型数据库 BI
记录一次MySQL+Redis实现优化百万数据统计的方式
【10月更文挑战第13天】 在处理百万级数据的统计时,传统的单体数据库往往力不从心,这时结合使用MySQL和Redis可以显著提升性能。以下是一次实际优化案例的详细记录。
739 1
tf.keras.layers.Dense
【8月更文挑战第19天】tf.keras.layers.Dense。
361 1
|
数据采集 存储 JSON
推荐3款自动爬虫神器,再也不用手撸代码了
推荐3款自动爬虫神器,再也不用手撸代码了
1578 4
|
存储 缓存 监控
深入解析JVM内存分配优化技术:TLAB
深入解析JVM内存分配优化技术:TLAB
|
移动开发 JavaScript 前端开发
HTML5作业(二)-----扑克牌拖放小游戏
该实验旨在理解元素拖放、CSS定位和DOM操作,任务是创建一个扑克牌拖放游戏。用户需将A框内13张随机扑克牌(背面朝上)按顺序拖至B框,最多存5张。当B框内形成顺子时游戏结束,显示拖动次数。实验提供HTML结构及部分JavaScript代码,包括创建和乱序扑克牌、处理拖放事件等。
457 0