AI和大数据结合,智能运维平台助力流利说提升核心竞争力
简介: 简介:本文整理自数智创新行——智能运维专场(上海站),流利说最佳实践演讲:《基于SLS千万级在线教育平台统一监控运营实践》
作者:
孙文杰 流利说运维总监
元乙 阿里云智能技术专家
优质的内容与定制化服务,提升企业核心竞争力
2020年受疫情影响,在“停课不停学”的口号下,在线教育市场规模快速增加,市场规模达4858亿元。在线教育行业经过前几年的快速奔跑后,市场已相对成熟,用户对于各家不同类型的在线教育机构,也提出了不同需求,因此单靠流量已无法换来忠实用户。但对于教育行业来说,核心竞争力仍然是优质的内容和服务。只有高质量的课程内容、根据客户学习习惯和基础制定个性化计划、优质产品体验与稳定性,结合更高业务运营效率,企业才能赢得长远的发展。纵观整个在线教育行业,在不断调整中,最终存活下来的企业也必然要回归教育本质,以优质产品、内容与服务等赢得长远发展。
结合人工智能,特色教学独树一帜
在行业近一步调整之后,在线教育赛道中的企业也逐渐将由注重增量回归内容建设。但在整体大环境下,教学大纲千篇一律,教学方式也大相径庭。虽课程有差异,但仍无惊艳可言,大部分企业无法依靠内容来突出重围。
但流利说却不同,在这个人工智能时代,流利说凭借特色的智能教学课程,依托人工智能AI等创新技术,为用户提供个性化教学课程,帮助更多用户提升英语水平。截止2021年3月31日,流利说累计注册用户超2亿,而其拥有的巨型“中国人英语语音数据库”,可以根据每一位学员的实际情况进行评测,学员在流利说发音学习的过程中,可以通过智能口型识别纠音系统动态去捕捉学员嘴部关键点,从而以先进技术进行比对,找到学员发音的问题所在。这样就可以提出针对性的指导意见来解决口语表达方面的问题,从根本上帮助学员提升口语水平。
产品体验是关键,如何提升系统稳定成难题
流利说业务的快速发展,用户数大幅度增长,从最初的几百万用户,已经增长过2亿业务的高低峰期的数据流量变化、业务复杂度和分析难度都给运维工作来了巨大的挑战。在整体互联网大环境中,体验是最关键的竞争力之一,根据统计结果,每1秒的延迟,平均会带来7%的用户流失。
作为一个没有单独运维部门的公司,流利说基础平台的运维系统主要由cloud-infra团队的研发来完成,而团队的核心诉求也不仅仅是SLA、性能的监控、告警和提供问题定位的相关数据,还包括cloud-infra的技术价值运营,例如利用率、成本节约、业务关系网络等。
在这些核心诉求下,对于智能化运维平台的要求:
1.采集、监控各种异构数据源,包括K8s、ECS上的机器指标、利用率、Istio相关的调用日志、自建中间件相关指标、云服务提供的指标、业务的Trace数据等,此外还要包括各类成本数据的实时采集。
2.各类资源的动态发现与动态采集,包括组织关系等部门相关的数据也需要实时更新,以便能够实时反馈出最准确的相关指标和归属关系。
3.大规模的数据存储与分析,由于流利说的业务规模大,使用的各类云资源以及业务产生的数据量非常巨大,每天在数十TB,方案需要满足在此规模上的实时分析和展现的能力。
4.监控平台负责的是稳定性问题,本身的稳定性也需要做好,因此需要消除各个部分的单点问题,并且具备异常快速恢复的能力。
一站式智能运维解决方案,打通数据收集到计算全链路
流利说构建的智能运维平台,需要处理的不仅仅是时序相关的数据,其中非常核心的业务可用性数据也需要通过各类日志进行计算和分析,因此整体上需要选择Logs和Metrics两种数据方案。对于这两类数据都分别有不同的社区方案或商业方案,例如ES、Loki、SLS、Prometheus、OpenTSDB、InfluxDB等。最终日志方案选择了阿里云SLS,时序方案选择了Prometheus+SLS,主要的原因如下:
1.SLS具备各类数据统一存储、分析的能力,能够在SLS上去关联到Metrics、Logs数据,这是其他平台所不具备的
2.SLS平台能够适应非常大的数据规模,相比ES来说性能要好很多,也是免运维的服务,省去了自己维护ES高可靠的问题
3.时序方案以Prometheus为主,Prometheus的生态非常完善,而且PromQL使用起来也简洁。SLS的时序库可以作为Prometheus的远端高可靠存储,能够解决Prometheus的可靠性问题
4.SLS的方案中有数据加工的功能,可以和外部的数据源去做Join分析和加工,能够更好的来处理各种复杂的日志,把日志加上catalog相关的信息
同时为了最大程度实现自动化,阿里云日志服务SLS开发了一套适用于云上场景的IaaS、PaaS资源动态发现的机制,能够实时将新购买、创建的资源加入到监控、采集中,避免大部分的人工操作。
并且在每个数据场景下,阿里云日志服务SLS也针对流利说的需求做了特殊化的定制:
1、日志方面
- 不同业务的日志直接通过SLS的Logtail采集到不同的日志库中
- 并不是所有的日志都需要长时间存储和索引,因此我们对于日志进行归类,对于其中需要有审计需求的,会投递到OSS上做长期存储;业务排查问题的日志只保存2周,并开启全文索引;AccessLog只开启部分字段的索引,可以节省很多的索引费用。
- 对于需要计算SLA、PXX指标的NGINX访问日志,会使用数据加工,配合已经在RDS中存储的一些映射规则、部门、应用等Catalog信息,将NGINX访问日志中的URL映射成对应的部门、应用、方法等。
2、数据监控方面
- 监控方案选择了Prometheus,针对于流利说的场景,我们开发了一些Exporter用于从各类云上产品、自建组件中获取Metrics
- 同时为了更好的使用Prometheus,和内部的CICD系统集成,我们在Prometheus上增加了一个Sidecar,监听Git仓库的变更,并根据变更动态的Reload Prometheus配置
- Prometheus上为了提高查询速度,配置了各类Recording Rule,这些都统一使用Git管理
- AlertManager的告警直接对接内部的告警中心,可以做排版、升级等高级功能
- 为了解决Prometheus单点的问题以及后面和Catalog进行关联分析的问题,我们使用SLS的时序库,直接让Prometheus Remote Write到SLS的时序库中
3、指标计算方面
- 核心指标的计算一部分来源于NGINX的AccessLog,从入口就可以拿到各个业务的QPS、错误率、Latency(平均、PXX等),对于业务没有任何的侵入性
- 资源利用率、中间件、基础设施等指标来源于Prometheus写入的时序库,基于Catalog可以聚合计算出每个部门、业务的相关指标
- 计算完成后的指标信息,由于数据量非常小,可以很容易的存储在MySQL、ES中,并且投递一份到OSS上备份
构建统一的智能运维平台,从成本中心变为创新生产力工具
目前这套智能运维平台系统几乎承载了公司所有的核心运维,在上线后一直稳定运行,并且在各类活动期间也能够非常轻松的应对数据量的突增。整体的业务价值主要体现在:
- 监控:监控的第一价值是做各类的监控和告警,尤其是SLA相关,由于将数据已经关联到了具体的部门和业务应用,可以很容易的得到每个部门、应用的SLA,并进行公司范围内统一的推进和改进
- 问题排查与故障隔离:基于Istio的访问日志,配合Catalog信息,可以计算出每个应用的调用关系,因此可以实时的生成业务关系网格,并能够知道每个关系(边)的质量情况。了解到业务的关系后,在出现问题的时候也可以快速的定位根源和故障隔离
- FinOps:在Cloud Infra部门,被挑战最多的就是开销问题。因此成本优化也是我们的一个核心工作,主要的做法是:计算每个部门、团队的资源利用率,包括平均利用率以及各类PXX的利用率(入下表格所示),以此能够判断每个部门的资源使用情况,推进各部门优化成本。
写到最后
在云原生时代,数字化正在各行业推动业务创新。只有提升用户体验、加速创新、更新基础设施与架构、利用好多样化的数据,才能在整体大环境中脱颖而出。阿里云推出的智能运维平台,不仅仅是要帮助工程师减少工作量,更多的是希望让运维工程师们从各种机械化的工作中解脱。我们将会包揽所有的“脏活累活”,让故障的时间大幅缩小,让运维人将更多创造力,放在数字创新以及企业业务创新上,为企业提供提供更优的竞争力。
本文为阿里云原创内容,未经允许不得转载。
AI和大数据结合,智能运维平台助力流利说提升核心竞争力的更多相关文章
- AI,大数据,复杂系统 最精 40本大书单
AI,大数据,复杂系统 最精 40本大书单 原创 2017-10-30 Peter 混沌巡洋舰 如果这篇文的题目变成最全书单,那么这篇文会变得又臭又长,这个年代,关于人工智能和大数据的书,没有一万本也 ...
- 实战:阿里巴巴 DevOps 转型后的运维平台建设
导读:阿里巴巴DevOps转型之后,运维平台是如何建设的?阿里巴巴高级技术专家陈喻结合运维自身的理解,业务场景的分析和业界方法论的一些思考,得出来一些最佳实践分享给大家. 前言 “我是这个应用 ...
- 阿里巴巴 DevOps 转型后的运维平台建设
原文:http://www.sohu.com/a/156724220_262549 本文转载自公众号「DevOps 时代」,高效运维社区致力于陪伴您的职业生涯,与您一起愉快的成长. 作者简介: 陈喻( ...
- 【I·M·U_Ops】------Ⅰ------ IMU自动化运维平台设想
说明本脚本仅作为学习使用,请勿用于任何商业用途.本文为原创,遵循CC 4.0 by-sa版权协议,转载请附上原文出处链接和本声明. #A 搞这个平台的初心 由于之前呆的单位所有IT相关硬件资源都要我们 ...
- 用友iuap云运维平台支持基于K8s的微服务架构
什么是微服务架构? 微服务(MicroServices)架构是当前互联网业界的一个技术热点,业内各公司也都纷纷开展微服务化体系建设.微服务架构的本质,是用一些功能比较明确.业务比较精练的服务去解决更大 ...
- OMS自动化运维平台部署
OMS自动化运维平台部署 一.基础环境安装 yum -y install mariadb mariadb-devel mariadb-server wget epel-release python-d ...
- (1)Linux常用的运维平台和工具
运维工程师使用的运维平台和工具包括: Web服务器:apache.tomcat.nginx.lighttpd 监控:nagios.ganglia.cacti.zabbix 自动部署:ansible.s ...
- devops 运维平台相关知识
1.https://choerodon.io/zh/community/ (代码 https://github.com/choerodon/choerodon) 猪齿鱼 2.https://www.o ...
- (4)Linux常用的运维平台和工具
运维工程师使用的运维平台和工具包括: Web服务器:apache.tomcat.nginx.lighttpd 监控:nagios.ganglia.cacti.zabbix 自动部署:ansible.s ...
- 搭乘“AI大数据”快车,肌肤管家,助力美业数字化发展
经过疫情的发酵,加速推动各行各业进入数据时代的步伐.美业,一个通过自身技术.产品让用户变美的行业,在AI大数据的加持下表现尤为突出. 对于美妆护肤企业来说,一边是进入存量市场,一边是疫后的复苏期,一边 ...
随机推荐
- shell实现简单的数组排序
c++代码 int nums[8]={1,2,1,3,4,2,5,6}; int length=8; for(int i=0;i<length;i++){ for(int j=i+1;j< ...
- View事件机制分析
目录介绍 01.Android中事件分发顺序 1.1 事件分发的对象是谁 1.2 事件分发的本质 1.3 事件在哪些对象间进行传递 1.4 事件分发过程涉及方法 1.5 Android中事件分发顺序 ...
- 记录--页面使用 scale 缩放实践
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 最近接到一个任务,需要把页面放大1.5倍显示.这里使用 css 里的 transform: scale(1.5) 来实现. documen ...
- 记录--一行代码修复100vh bug
这里给大家分享我在网上总结出来的一些知识,希望对大家有所帮助 你知道奇怪的移动视口错误(也称为100vh bug)吗?或者如何以正确的方式创建全屏块? 一.100vh bug 什么是移动视口错误? 你 ...
- linux安装/切换不同版本c/c++
查看ubuntu系统上g++的版本: ls /usr/bin/g++* 安装指定版本gcc和g++ # 以version == 4.9为例 sudo apt-get install gcc-4.9 g ...
- HashMap对key或value进行排序--Java--小白必懂2
HashMap对key进行排序 public static void main (String[]args){ HashMap<String, Integer> map = new Has ...
- #dp#CodeChef Little Elephant and Mouses
LEMOUSE 分析 由于被单只老鼠吓到只能算一次,所以前两次走的位置也可能会被老鼠吓到. 设 \(dp[n][m][o][p]\) 表示走到 \((n,m)\) 上一步走的是 \(o\) 这种方式, ...
- #轮廓线dp#洛谷 1879 [USACO06NOV]Corn Fields G
题目 分析 考虑状压dp在\(n\leq 21\)的情况下会TLE, 设\(dp[n][m][S]\)表示当前正在处理\((n,m)\)这个格子 并且轮廓线状态为\(S\)的方案数, 考虑可行状态最多 ...
- #矩阵乘法#洛谷 5343 【XR-1】分块
题目 分析 考虑dp,\(dp[i]=\sum dp[i-j]\) 既然\(j\)很小,那么这显然可以用矩阵乘法优化 代码 #include <cstdio> #include <c ...
- Agent内存马分析
什么是Java Agent 我们知道Java是一种强类型语言,在运行之前必须将其编译成.class字节码,然后再交给JVM处理运行.Java Agent就是一种能在不影响正常编译的前提下,修改Java ...