自建“停课不停学”系统的一些建议

简介: 我对自建“停课不停学”IT系统的一些建议

我们若已接受最坏的,就再没有什么损失。
—— 戴尔·卡耐基

因为“停课不停学”,钉钉火了,以至于“火”到了求饶的地步,不明觉厉的请看MV:《钉钉本钉,在线求饶》。
钉钉尚且如此,假如是自建“停课不停学”系统的话……
以下,就是我对自建“停课不停学”IT系统的一些建议:

使用云服务

为了应对“在线复工”洪流的冲击,钉钉临时从阿里云扩容了十万台服务器,这样的弹性扩容规模已经不亚于“双十一”。云计算已经成为整个社会的基础设施,我们在自建“停课不停学”系统的时候没有理由不去使用。

当然,云计算不等于服务器,在构建“停课不停学”IT系统时除了云服务器,还有以下这些服务用的上:

  • 视频点播、播放提前录制好的课程,在提供近乎无限的并发点播能力的同时还提供防盗链、健权、加密这些功能。
  • 视频直播、通过专业直播机、PC、甚至手机实时推送视频流到云端,再通过云端分发实时视频。视频直播支持连麦功能,可以进行小规模的互动。
  • 音视频通信 RTC(Real-Time Communication)、提供小范围(20人左右)的低时延互动视频和音频通讯功能,通过就近接入和遍布全球的运营商支持,可以保证全球范围内的高品质互动教学的流畅性。
  • PolarDB云原生数据库、作为一个云原生数据库,PolarDB每个节点最大支持88个vCPU,710G内存,能横向扩展到16个节点,最大可提供1408核的计算能力,单个数据库可扩容到100TB,并可以结合DRDS实现多个数据库的“捆绑”。PolarDB具备5分钟增加节点的快速弹性扩容能力、可以在几十秒内完成10TB级别数据库的备份。PolarDB提供MySQL以及PostgreSQL的100%兼容能力、Oracle数据库的90%以上的高兼容能力,已经开发好的应用基本不用做修改就能使用。

压力测试

为了避免系统在万众瞩目下崩溃、出丑、有必要在上线前就对“停课不停学”系统进行压力测试,以做到心中有数。
压力测试的工具有开源的AB和JMeter、也有商业软件LoadRunner,这些都可以用,但要想更接近实际的应用场景还是建议使用阿里云PTS。
阿里云PTS通过分布在全国的CDN边缘节点可以更好的仿真实际的大并发访问场景,并支持导入开源的JMeter测试脚本。

和PTS配合使用的是ARMS,可以在进行压测的过程中对系统的运行状态进行细粒度的监控。
1.png

(上图来自阿里云官网)

ARMS是一款APM产品,支持对Java和PHP开发的服务器端应用进行接口级别的细粒度监控。通过PTS和ARMS的结合一方面可以了解高压下的系统整体性能水平,另一方面通过ARMS还可以收集应用内部的各接口之间的调用和响应数据,及时发现系统的性能瓶颈点。

优化应用架构

一旦发现系统无法满足性能指标,要进一步提高系统的并发处理能力,通常的做法有五个:

  • 加缓存、为了尽可能避免数据库操作成为系统的瓶颈,可以在应用系统和数据库之间增加缓存服务,将经常需要访问的数据在缓存中保存和直接调用,降低数据库系统的压力。目前最常见的缓存服务就是Redis,在阿里云上的Redis服务有标准版、读写分离版、集群版三种,分别可以提供1万、6万、50万的最大连接。
  • 异步化、假如代码之间采用直接调用耦合的方式,上游模块突然增加的流量,如果下游模块处理不及时就会将系统整个给“拖死”。可以将这样的地方改用消息中间件耦合的方式,上游模块将请求直接丢入消息队列后就直接返回以开足马力处理后续的请求,下游模块从消息队列中获取数据和指令进行后续处理,即便下游模块的处理能力跟不上新增的请求,指令和数据也只会在消息队列里堆积而不会造成系统的崩溃。阿里云的消息队列服务是经过双十一检验过的,能够承受万亿级数据流转、千万级并发、亿级消息的堆积而不影响集群的正常服务。阿里云消息队列服务MQ目前提供RocketMQ版(双十一采用)、AMPQ(RabbitMQ)、微消息队列MQTT版(物联网、活动直播),可以根据需要选择。
  • 限流、假如通过压力测试可以探查出系统的最大处理能力(TPS)来,就可以依据这个数值对系统的进入流量进行限流。阿里云用于流量限流的服务叫做AHAS,可以在突发的流量洪峰到来的时候限制能够进入系统的流量,保护后端的数据库等系统免受冲击,并为系统的扩容争取时间。阿里云AHAS的接入方式有三种:不需要修改代码的Agent方式、通过Kubernetes接入、通过AHAS 的SDK接入。其中支持Agent方式的框架和应用服务器包括但不限于:Dubbo、Spring Boot、Spring MVC、String Cloud Gateway、Zull、Jetty、Tomcat、WebLogic等。
  • 降级、当面临无法应对的流量时可以舍弃部分非重要功能来保障关键功能的运行正常。通过阿里云AHAS可以对不影响整体流程的第三方应用的调用应用降级规则,在异常比例超过一定的阀值时,在降级窗口时间内对第三方服务的所有请求都会快速失败。
  • 隔离、有些对第三方组件或服务的调用会影响系统的整体处理流程,这时就不能对这个服务的调用进行快速失败,这时就可以使用隔离功能,阻止更多的请求进入本服务,直到堆积的请求线程处理完成。在阻止请求进入时可以根据上游应用的重要程度设置不同的资源阀值,保证核心系统能够获得更多的资源。通过AHAS的隔离规则功能可以设置当自身的线程数达到一定的阀值以后从指定应用来的请求都会快速失败。

备用的系统

无论如何,总有一些意外会发生,总有一些你没想到的原因会让系统崩溃,因此事先准备一个静态页面呈现给用户要比将系统的报错信息显示出来要好的多。对于一个“停机不停学”的IT系统,这个静态页面甚至还可以再提供一些视频的静态链接。

阿里云的OSS最适合用来做这个静态页面了。​

目录
相关文章
|
SQL 关系型数据库 MySQL
mysql 简单的sql语句,入门级增删改查
介绍MySQL中的基本SQL语句,包括数据的增删改查操作,使用示例和简单的数据表进行演示。
mysql 简单的sql语句,入门级增删改查
|
机器学习/深度学习 监控 安全
网络安全产品之认识入侵防御系统
由于网络安全威胁的不断演变和增长。随着网络技术的不断发展和普及,网络攻击的种类和数量也在不断增加,给企业和个人带来了巨大的安全风险。传统的防火墙、入侵检测防护体系等安全产品在面对这些威胁时,存在一定的局限性和不足,无法满足当前网络安全的需求。入侵防御系统(IPS)作为一种主动防御的解决方案应运而生。它可以实时检测和防御网络流量中的恶意攻击和威胁,通过串接的方式部署在网络中,对入侵行为进行实时阻断,从而极大地降低了入侵的危害。
1306 1
|
编解码 算法 5G
信息论与编码期末复习——概念论述简答题(一)
信息论与编码期末复习——概念论述简答题(一)
822 0
信息论与编码期末复习——概念论述简答题(一)
|
缓存 负载均衡 监控
微服务架构下的电商API接口设计:策略、方法与实战案例
本文探讨了微服务架构下的电商API接口设计,旨在打造高效、灵活与可扩展的电商系统。通过服务拆分(如商品、订单、支付等模块)和标准化设计(RESTful或GraphQL风格),确保接口一致性与易用性。同时,采用缓存策略、负载均衡及限流技术优化性能,并借助Prometheus等工具实现监控与日志管理。微服务架构的优势在于支持敏捷开发、高并发处理和独立部署,满足电商业务快速迭代需求。未来,电商API设计将向智能化与安全化方向发展。
653 102
|
安全 Python
详解module ‘yaml‘ has no attribute ‘FullLoader‘
遇到“module 'yaml' has no attribute 'FullLoader'”错误时,首先应该确认你正在使用的PyYAML库的版本至少是5.1,并确保已经正确地导入了PyYAML。紧随其后,考虑使用 `safe_load()`作为读取YAML文件的更安全方式。通过采取这些解决措施,你应该能够有效地解决这个问题,使你的代码能够顺利地读取YAML文件。
665 2
|
算法 Java 编译器
升级指南之JDK 11+ 新特性和AJDK
本文详细介绍了JDK个版本之间的特性、区别以及JDK版本更迭时优化了哪些地方,对JDK的版本选择给出了建议,以及升级教程。
|
存储 测试技术 计算机视觉
栈和队列经典练习题
栈和队列经典练习题
|
安全 Java Android开发
Android 14适配Google play截止时间临近,适配注意点和经验
本文介绍了Android 14带来的关键更新,包括性能优化、定制化体验、多语言支持、多媒体与图形增强等功能。此外,还强调了适配时的重要事项,如targetSdkVersion升级、前台服务类型声明、蓝牙权限变更等,以及安全性与用户体验方面的改进。开发者需按官方指南更新应用,以充分利用新特性并确保兼容性和安全性。
1226 0
|
数据可视化 关系型数据库 MySQL
Docker可视化工具-Portainer
Docker可视化工具-Portainer
752 1
|
缓存 算法 网络协议
盘点腾讯后台开发各级工程师(T1-T9)需要具备哪些能力
盘点腾讯后台开发各级工程师(T1-T9)需要具备哪些能力
盘点腾讯后台开发各级工程师(T1-T9)需要具备哪些能力

热门文章

最新文章