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

简介: 我对自建“停课不停学”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最适合用来做这个静态页面了。​

目录
相关文章
|
机器学习/深度学习 自然语言处理 算法
跨模态学习能力再升级,EasyNLP电商文图检索效果刷新SOTA
本⽂简要介绍我们在电商下对CLIP模型的优化,以及上述模型在公开数据集上的评测结果。最后,我们介绍如何在EasyNLP框架中调用上述电商CLIP模型。
|
缓存 负载均衡 监控
微服务架构下的电商API接口设计:策略、方法与实战案例
本文探讨了微服务架构下的电商API接口设计,旨在打造高效、灵活与可扩展的电商系统。通过服务拆分(如商品、订单、支付等模块)和标准化设计(RESTful或GraphQL风格),确保接口一致性与易用性。同时,采用缓存策略、负载均衡及限流技术优化性能,并借助Prometheus等工具实现监控与日志管理。微服务架构的优势在于支持敏捷开发、高并发处理和独立部署,满足电商业务快速迭代需求。未来,电商API设计将向智能化与安全化方向发展。
695 102
|
9月前
|
弹性计算 负载均衡 数据库
阿里云服务器最便宜多少钱一年?38元轻量和99元ECS机型对比,哪台更优惠?
阿里云最便宜云服务器:新用户38元/年轻量应用服务器(2核2G/200M峰值带宽/40G ESSD),老用户99元/年ECS经济型e实例(2核2G/3M固定带宽/40G ESSD Entry)。配置相近,轻量限新用户,ECS新老用户皆可,续费同价。单机应用首选轻量,需高可用架构选ECS。
1703 2
|
11月前
|
存储 弹性计算 应用服务中间件
阿里云服务器武汉地域收费价格:CPU内存、带宽和存储费用标准
阿里云武汉地域(华中1)提供本地节点,含ECS云服务器、按量及包月计费模式。1M带宽23元/月,流量0.8元/GB。支持ESSD多种存储,推荐就近选杭州、上海等地享受爆款优惠,如2核2G低至38元/年。价格仅供参考,具体以官网为准。
1154 3
|
12月前
|
Java API 数据处理
掌握Java Stream API:告别繁琐循环,拥抱高效集合处理
掌握Java Stream API:告别繁琐循环,拥抱高效集合处理
621 113
|
8月前
|
人工智能 弹性计算 自然语言处理
2026年企业如何建设数据系统:从架构规划到落地实施全流程指南2026年企业如何建设数据系统:从架构规划到落地实施全流程指南
2026年,企业数据建设面临“建而不用、用而不准、准而不快”困局。本文提出从“自建造轮子”转向“范式复用”,以瓴羊Dataphin为核心,依托OneData方法论,实现顶层设计、资产沉淀、全链路治理与智能服务四阶段闭环,助力企业快速构建标准化、智能化、服务化的现代数据底座。(239字)
|
10月前
|
人工智能
因为一套西装,开除了操作系统核心研发?这不是管理,这是技术灾难
统信软件一名核心内核研发因质疑年会穿西装被辞退,引发技术圈热议。事件暴露企业“形式压倒技术”的管理弊病,凸显技术人职业安全感缺失。真正竞争力,在于持续成长与选择权。
|
10月前
|
负载均衡 容灾 JavaScript
Nginx反向代理容灾备份(手把手教你搭建高可用Web服务)
本文介绍如何通过Nginx反向代理实现容灾备份与高可用架构。利用upstream模块配置主备服务器,结合健康检查与自动故障转移,确保主服务宕机时无缝切换至备用服务器。图文详解参数设置、配置步骤及测试方法,并提供Keepalived、HTTPS等进阶优化建议,助小白快速搭建稳定可靠的Web系统。
|
安全 Java Android开发
Android 14适配Google play截止时间临近,适配注意点和经验
本文介绍了Android 14带来的关键更新,包括性能优化、定制化体验、多语言支持、多媒体与图形增强等功能。此外,还强调了适配时的重要事项,如targetSdkVersion升级、前台服务类型声明、蓝牙权限变更等,以及安全性与用户体验方面的改进。开发者需按官方指南更新应用,以充分利用新特性并确保兼容性和安全性。
1272 0
|
运维 资源调度 调度
阿里巴巴任务调度SchedulerX兼容XXL-JOB
阿里巴巴任务调度SchedulerX2.0兼容XXL-JOB任务接口,支持@XxlJob新注解和@JobHandler老注解方式,用户不需要修改一行代码,即可以将XXL-JOB任务在SchedulerX2.0平台上托管。
5038 0