专栏首页腾讯云实践案例一支笔接入云上智慧课堂:企鹅智笔案例的技术架构剖析
原创

一支笔接入云上智慧课堂:企鹅智笔案例的技术架构剖析

教育的最大成本是什么?时间!

改革的常见难点是什么?习惯!

教育体系更希望以“润物细无声”的方式,优化教育平台,赋与学生更大的成长空间。于是产品经理和工程师们提出了一个基于腾讯云的智慧教育解决方案。

它不改变学生的作答习惯,它收集丰富的过程性数据,它使用AI和大数据助力个性化教学,它是如何在一支点阵笔的身后,建立起云上的深度服务体系呢?

本文将聚焦技术维度,分享整体技术架构的设计与实现。

业务背景

“企鹅智笔课堂系统”的设计目标是能够同时服务教师和学生,并将自己融入已有的教育体系,并提升教育能力。从整体架构设计上,按照低耦合、高可用、可独立服务的设计原则,我们设计了3个相对独立的子系统,分别是课前的“选题组卷”模块、课中的“互动教学和随堂测验”模块以及课后的“在线批改与个性化报告”模块;首先,我们期望每个子系统有自己独立的用户体系,可以独立服务,但需要解决账户打通问题,如何识别不同系统的用户是不是同一个实体用户呢?其次,为了每个系统都会产生自己的数据,如何将这些数据同步汇总到一起,同时又能够保证数据关系的准确性呢?

在这样的服务诉求下,两个不可绕过的难点出现了:1、用户拉通;2、数据交互。为了实现这两个重要的基本需求,我们设计并开发了“企鹅智笔课堂基础核心服务”,一个可远程调用的数据处理服务。

技术选型

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

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

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

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

l 云服务器(CVM)

l 云文件存储(CFS)

l 大数据检索(ElasticSearch)

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

l 云消息队列(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微服务集群搭建的基础核心服务正好充当这个“管理员”的角色。每个系统产生的数据由基础核心服务进行汇总,其他系统需要数据则从基础核心服务中获取。

总结

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

架构上的实践其实涉及多个角度的解析,本文暂就核心架构,进行了关键设计的分享,后续将结合本方案针对大数据检索及AI应用等维度,进行专项分享。

更多咨询或合作,请联系ecological_product@tencent.com邮箱

相关文章:

欢迎订阅【腾讯云实践案例】专栏,以便接收更新提醒

原创声明,本文系作者授权云+社区发表,未经许可,不得转载。

如有侵权,请联系 yunjia_community@tencent.com 删除。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 一支笔接入云上智慧课堂:企鹅智笔案例的AI智能批改技术解析

    英文作文的批改,以往完全依赖于教师的主观判断,既需要教师做大量重复性的工作,又难以规避批量批改中对细节错误的忽视。如何用机器又准又快的批改作文,给老师减负,就成...

    李志豪
  • 【思考】什么样的大数据才是有意义的?

    ? 腾讯科技讯 7月9日,美国《连线》杂志近日刊登了一篇关于大数据的评论文章。作者认为,如果缺乏对人们现实生活的实地调查,大数据没有什么意义。 在短短的几十...

    小莹莹
  • 顶尖数据分析师需要掌握的7大技能!

    通过教育和学习可以培养一些数据分析的技巧和能力,与此同时你还需要通过实践和不断的经验总结持续修炼你的数据分析素养。

    观远数据智能分析
  • 数据的简洁与复杂

    最近在优化人力资源招聘渠道模块数据的时候,想到了这个问题,数据的简洁与复杂,很多时候我们在做数据分析的时候有时候鉴于数据缺少,所以在做前期的原始数据的时候...

    王佩军
  • 如何在一周内摸清一个行业?

    在和咨询、投行、投资、猎头这些行业的人聊天的时候,我反复听到“一周”这个时间,于是我也开始好奇:你们是在什么情况下需要在一个星期之内了解一个行业?你们都是如何做...

    用户1756920
  • 云计算与企业自身安全策略结合到一起

    云计算、大数据及移动化是大势所趋,也的确能大大降低企业的成本和提高企业的效率,改变企业的运营方式和思维方式,所以,很多企业在考虑向云计算迁移,但又顾虑重重,考虑...

    静一
  • 云计算背景下的安与不安

    在企业IT网络通信领域中,安全一直是用户非常关注的话题。云计算、大数据及移动化让企业的安全形势变得更加复杂和严峻。然而,云计算、大数据及移动化是大势所趋,也的确...

    静一
  • ORA-12560 问题的分析

    近日公司软件应用客户端连接数据库时不时出现ORA-12560错误,通过PL/SQL工具、NetManager工具测试连接数据服务器都正常,上网查找ORA-125...

    jeanron100
  • MIT开发新型加密方法,使基于云的机器学习更具安全性

    麻省理工学院研究人员设计的一种新型加密方法可以保护在线神经网络中使用的数据,而不会减慢其运行时间。这种方法有望在基于云的神经网络进行医学图像分析和其他使用敏感数...

    AiTechYun
  • 大数据的应用统计之殇

    大数据文摘

扫码关注云+社区

领取腾讯云代金券