写点什么

一支笔撑起黑科技课堂?背后的技术秘密原来是这样的

2019 年 10 月 31 日

一支笔撑起黑科技课堂?背后的技术秘密原来是这样的

一支笔撑起的黑科技课堂

还记得曾经的高中数学老师,曾讲过她的判卷经历:她儿子判选择题,她判大题,她老公核算总分——全家总动员,最后还需要数学课代表登成绩。


但是!在腾讯的智慧教育解决方案里,借助一款“神笔”,打造了“企鹅智笔课堂”,使得批改作业可以智慧化,把老师们从繁重的试卷批改工作中解放出来,更加专注地投身到创新教学形式中。除此之外还有很多神奇功能,可谓一支笔撑起了黑科技课堂,可以戳下方视频直观感受一下。


企鹅智笔课堂的大功臣是智能点阵笔。



智能点阵笔是一款基于计算机视觉识别辅助技术的智能硬件产品。在它的笔尖隐藏着一只“摄像机”—— 微型感应器。基于点阵笔的数据采集功能,腾讯教育利用大数据、AI、云等相关技术打造了企鹅智笔课堂,涵盖了备课、授课、互动、测验、批改、学情分析等多种教学环节,不仅是将老师们从繁重教务工作中解放出来的”超能小助手“,也是所有学生课堂学习的“记录官”,助力师生进行个性化教学。



企鹅智笔课堂背后的技术架构揭秘

企鹅智笔课堂是如何在一支点阵笔的身后,建立起云上的深度服务体系呢?


业务背景分析

“企鹅智笔课堂系统”的设计目标是能够同时服务教师和学生,并将自己融入已有的教育体系,并提升教育能力。从整体架构设计上,按照低耦合、高可用、可独立服务的设计原则,我们设计了 3 个相对独立的子系统:


  • 课前的“选题组卷”模块。

  • 课中的“互动教学和随堂测验”模块。

  • 课后的“在线批改与个性化报告”模块。


首先,我们期望每个子系统有自己独立的用户体系,可以独立服务,但需要解决账户打通问题,如何识别不同系统的用户是不是同一个实体用户呢?其次,为了每个系统都会产生自己的数据,如何将这些数据同步汇总到一起,同时又能够保证数据关系的准确性呢? 在这样的服务诉求下,两个不可绕过的难点出现了:


  • 用户拉通。

  • 数据交互。


为了实现这两个重要的基本需求,我们设计并开发了“企鹅智笔课堂基础核心服务”,一个可远程调用的数据处理服务。


技术选型

我们对比了常用的应用层网络通信,http 与 grpc 协议,如下图所示。



虽然 http 协议有浏览器支持,但是在传输效率和安全性等方面都不及 grpc 协议,而基础核心服务是提供接口服务的,无需浏览器支持,因此在协议选型中采用 grpc 协议。


接下来,以必备的服务器为核心,我们对比了使用自建服务器与腾讯云服务器,在架构上带来的差异,如下图所示。



腾讯云提供了一系列方便开发者使用的组件,高可用、低维护、定向服务(关系型数据库/NoSql 数据库)等方面全面优于自建服务,因此选用腾讯云进行服务部署,具体涉及的云服务:


  • 云服务器(CVM)

  • 云文件存储(CFS)

  • 大数据检索(ElasticSearch)

  • 云数据库(CDB:redis/mysql/sqlserver)

  • 云消息队列(CMQ)


架构设计

1. “企鹅智笔课堂”的总体架构

“企鹅智笔课堂”的总体架构如下图所示。



从上图可以看出基础核心服务(GRPC 微服务集群)在中间起到了承上启下的作用。业务层与基础组件的交互,以及业务层之间的数据交互都要通过基础核心服务,基础核心服务承担着一个重要的数据存储于调度功能。下文将展示数个基于核心服务的逻辑架构设计。


2. 基础核心服务的架构

基于核心服务的逻辑架构设计如下图所示。



grpc 云服务集群通过 ETCD 注册到服务组中,同时基础核心服务 grpc 云服务集群也可以通过 ETCD 发现登录组件服务,从而获取登录用户信息;grpc 服务接收到调用方发送的请求之后,进行相应的处理,存入 CDB、CFS 或者 ES,当一个业务层的数据流程结束后,基础核心服务会向 CMQ 写入一个消息,通知其下游的业务层进行相应的业务处理。


技术难点

1. 用户数据拉通

回到最初的“神之疑问”,不同的子用户系统中的账号,到底对应的是不是同一个实体用户呢?一个用户在 3 个子系统中可能有 3 个不同的 id,3 个不同的用户名称,3 个不同的账号密码,更可怕的是,不同的用户在不同的系统中,用户名都很有可能是重复的,这种问题,交给个大活人来判断都有难度,更何况是程序处理,OMG!难道除了上帝真的没有人知道了吗?当然还有,那就是“智慧校园开放平台”的“登录组件”。


首先,子系统 1 用户在登录时使用登录组件,微信扫描二维码后返回用户识别码,以及在浏览器中种一个登录态 cookie,当用户在当前浏览器切换到子系统 2 时,子系统 2 在取到登录态 cookie 后,通过 grpc 服务向登录组件发起校验,校验通过后则准许用户登录,同时子系统 2 可以通过 grpc 服务向登录组件获取用户信息,从而确定用户在子系统 2 内的角色和权限,这样用户就不用重复登陆了,从而实现了子系统之间的无缝切换。


具体流程可参见如下流程示意图。



2. 数据结构的反向映射

根据业务的不同,每张表的结构都不同,而 grpc 则对传入传出参数有着强数据结构的校验,每次对数据库内数据的调整都要每个字段逐一赋值吗?如果真的这么做,代码冗余就会非常严重,可维护性也会严重下降,这里,我们是用“反向映射”的方法来解决问题。所谓“反向映射”,就是程序在运行时确定数据的类型和标签,并可以对数据进行动态修改。


处理这个问题流程如下图所示。



3. 数据交互

正如“巴别塔”的建造,带来巨大的语言沟通障碍一样,多用户体系系统的架构也面临着巨大的数据交互的压力。每个系统产生的数据都不是独立的,都需要其他的系统继续处理,而其他系统如何跨系统取数据呢?最简单暴力的方法就是子系统直接开放 http api 接口,这种做法简单粗暴,虽然立竿见影,但是问题也很明显,首先就是暴露在公网的接口需要进行身份校验,其次,随着参与交互的子系统数量的增加,沟通成本会呈指数上升,虽然目前只有 3 个子系统,但是随着产品特性的增加引入新的子系统不可避免。


那么最好的处理方法就是设立一个“仓库管理员”,子系统 1 产生的数据,可以通过“仓库管理员”存入“仓库”,子系统 2 需要什么数据可以跟“仓库管理员”要,如果“仓库”里有就给你,没有就告诉你没有。使用 grpc 微服务集群搭建的基础核心服务正好充当这个“管理员”的角色。每个系统产生的数据由基础核心服务进行汇总,其他系统需要数据则从基础核心服务中获取。



课堂效果

1. 课前:下载资源,手写教案

教师可以通过优质的资源库进行资源下载和课前备课,通过使用点阵笔,还可以将老师们在纸上书写的教案生成课件,并支持多平台录课工具,通过腾讯云上传到网络上分享微课资源。



2. 课中:掌上黑板,随心所欲

点阵笔可以实时记录老师的板书内容,并进行投屏。老师只需拿着一支笔一张纸,即可在教室里边走边板书,摆脱讲台束缚,实现“移动式教学”,与学生进行深层互动。


3. 课后:作业批改,省时省力

点阵笔搭配 AI 智能识别与智能题库系统,就可以做到对学生作业的实时批改:自动给选择题、填空题和部分主观题评判,帮助老师节省大量的批阅时间。



4. 考试:试卷批改,AI 阅卷

和写作业一样,用点阵笔答题相当于大型考试录播现场。每一个同学的答题过程和答题结果都实时上传云端。



客观题自动判分,主观题不仅可以识别字迹,还支持老师回看学生作答过程。像作者数学老师那种“全家总动员”的批改景象就不复存在了。


5. 个性化错题本

“企鹅智笔课堂”支持与腾讯云端数据结合,形成完整的集体答题“错题本”for teachers、个人“错题本”for students,通过学生笔尖的停顿时间、涂改情况等数据来分析学生的思考过程,对学生作业和考试结果进行数据化分析,作为老师教学的参照,可以极大地提高教学效率。



落地效果:全国 6000+所学校

腾讯“企鹅智笔课堂”是与生态合作伙伴拓思德、学科网等战略合作共研,已经陆续在北京、深圳、天津等 40 多个教育局落地,覆盖了超过 6000 所学校。


“ ‘企鹅智笔课堂’技术实现了低成本、高效率的笔迹实时记录,可以进一步收集学生的过程信息,帮助老师了解学生的整个答题思维过程。”

——南外高中校长冯大学


总结

“世上无难事只怕有心人”,任何一个业务都有其业务难点,任何一个业务难点都会带来对应的技术难点,但这些难点都是可以被解决的,只要思路清晰,方向正确,会使我们解决问题的难度降低很多。“智笔课堂”这个项目,我们充分利用了腾讯云提供的丰富的基础组件服务,极大地降低了开发成本与后期运维成本,将一个原本复杂的系统大大的简化了。


本文转载自公众号云加社区(ID:QcloudCommunity)。


原文链接:


https://mp.weixin.qq.com/s/YrFkkIjiZLEpjqJMjC9lqw


2019 年 10 月 31 日 18:58584

评论

发布
暂无评论
发现更多内容

架构师训练营—第十一周学习总结

Geek_shu1988

Week7-作业

lggl

作业

架构师训练营 - 第十一周 - 作业一

行者

第七周学习总结

晴空万里

十一周总结

orchid9

你真的理解什么是创新么?|技术人应知的创新思维模型 (1)

Alan

创新 思维模型 技术人应知的创新思维模型 28天写作

【第11周】安全稳定

云龙

架构师训练营 3 期 第二周作业

ihiming

架构师训练营 2 期 - 第 6 周命题作业

Geek_no_one

极客大学架构师训练营

第十一周总结

fmouse

极客大学架构师训练营

软件设计的设计模式

简简单单

第7周作业

Rocky·Chen

压力测试

回溯解决电话拨号字母组合,swift:Subscripts下标的花式玩法,swift5 Auto Layout入门,John 易筋 ARTS 打卡 Week 29

John(易筋)

ARTS 打卡计划 回溯算法 autolayout swift5 xcode 快捷键

第十一周作业

fmouse

极客大学架构师训练营

架構師訓練營 week11 作業

ilake

架构师训练营第一期第十一周总结

Leo乐

极客大学架构师训练营

Gson 中的一个坑

Rayjun

Gson

第二周学习总结

简简单单

架构师训练营 1 期第 11 周:安全稳定 - 总结

piercebn

极客大学架构师训练营

架构2期-第七周作业(1)

浮生一梦

极客大学架构师训练营 第七周 2组

性能优化总结

幸福小子

性能优化

架構師訓練營 week11 總結

ilake

架构师训练营 2 期 - 第六周总结

Geek_no_one

极客大学架构师训练营

架构师训练营 2 期 - 第 7 周命题作业

Geek_no_one

极客大学架构师训练营

性能压测的时候,随着并发压力的增加,系统响应时间和吞吐量如何变化

幸福小子

性能分析

软件开发人员的软实力之一:精细度

boshi

职业 随笔

架构师训练营第十一周作业

月殇

极客大学架构师训练营

架构师训练营—第十一周作业

Geek_shu1988

Week7总结

lggl

总结

架构师训练营 2 期 - 第七周总结

Geek_no_one

极客大学架构师训练营

架构师训练营1期 -- 第十一周作业

曾彪彪

极客大学架构师训练营

演讲经验交流会|ArchSummit 上海站

演讲经验交流会|ArchSummit 上海站

一支笔撑起黑科技课堂?背后的技术秘密原来是这样的-InfoQ