凌美君,辛 婧
(南京信息工程大学,江苏 南京 210044)
当前,随着大数据、智能技术的革新性发展和深化应用,信息技术的形态正在从数字化、网络化逐步化向智慧化、智能化迭代转变。人们所体会到的智慧形态,主要是指综合使用5G、云计算、区块链、智能网联、大数据分析等技术,在丰富的知识存储基础上进行更高层次的知识再造,即创新能力的形成过程。近年来,国内数十所高校规划实施了智慧校园建设。在智慧校园中,知识中心将转变为智慧中心[1-2]。高校教育云的发展是将云计算技术落地于教育领域典型应用,也是线上教育的未来发展方向,教育云的落地运用将大大推动中国的教育普惠化建设,对解决教育均等化具有深远意义。教育云将各种教育资源和应用服务带到云上。用户只需使用一个安全且经过身份验证的账户即可享受云中的所有应用程序和服务。网络服务的快速发展和各种移动终端设备的普及,加速了教育云信息化在移动学习中的应用。
中国从2003年开始引入云计算,随着教育信息化的推进,中国第一个云计算中心于2008年2月在无锡落地应用。同年12月,李家厚教授在中国教育技术协会年会上提出了“云计算辅助教学”和“云计算辅助教育”的概念。随后,由中国教育技术协会牵头,全国教育领域先后开展了“云计算辅助教学”的一系列选拔活动,活动的开展有效地促进了教育云的应用发展。中国在近年来先后颁布了《教育信息化十年发展规划(2011-2020年)》、《国家中长期教育改革和发展规划纲要(2010-2020年)》、《2030年中国教育现代化规划》、《加快教育现代化实施方案(2018-2022年)》和《中国教育现代化2035年规划》等规划文件,文件阐述了未来教育的远景,对教育现代化的目标进行了明确,指明了任务和实施路径,促进了教育信息化的远期建设,先后在无锡、深圳、绵竹等地开展应用试点。随后,“教育云”建设开始蓬勃发展,一大批教育云平台开始服务于课堂教学和教育管理[3-4]。
微服务的概念由来已久,起先人们并没有为它定义一个更专业的名称。自服务体系架构(service-oriented architecture)概念诞生以来,各大企业都遵循SOA软件体系结构的思想,在很长一段时间内走上了面向服务的治理之路。微服务在服务体系结构中是一个重要的应用方向。微服务的名称与之前的服务化理念和实践相对应。在最先服务概念出现时,其设计和实现的思想是将多个功能封装至大的服务单元中,从而支撑功能的开发和交付,即单个应用程序(通常称为“整体”)。然而,微服务的理念强调了功能的朴素化,也就是服务单元的微型化。所以从设计的理念上来看,微服务技术的本质是着眼于将复杂的业务/技术功能进行细粒度的拆分,从而对服务进行力度的小型化改造,经过封装后的服务能够独立提供对外服务,采用这种思路设计和改造的软件服务就可以称之为“微服务”[5-8]。
Dubbo模型具备较为简化的体系结构。在Dubbo的整个体系架构中有两个核心角色,分别是服务的提供者和消费者。Dubbo服务模型可以提供分布式服务的横向扩展。此外,扩展后的服务可采用独立划分为多个子模块的模式运行,从而可以有效地防止部分服务器停机而导致的整体服务瘫痪。Dubbo的架构如图1所示。
图1中,Dubbo的基本流程如下:
(1)服务提供者负责对服务的协议、接口和具体服务内容进行明确,通过服务注册中心完成服务的在线发布,服务的核心内容主要包括了服务的接口名称、ID、版本情况、超时处理策略以及负载均衡策略等。
(2)服务消费者通过访问服务注册中心,实现对服务的专属化订阅,在进行服务订阅时,需要明确服务的接口名称、ID以及版本号等关键信息。
(3)当服务可用时,服务使用者可通过访问注册中心的服务列表获取可用的服务信息,并采用异步调用方式进行服务使用。
(4)服务使用者在采用合适的负载均衡策略的基础上,对服务中心提供的服务调用地址进行访问,并将服务处理的结果进行返回。
(5)监控中心负责对服务提供者和消费者的全部活动进行监控与状态统计。
Dubbo采用了服务注册与发现的动态机制,实现了服务集群无感知的升级与更新,有效提升了服务的可扩展能力。此外,Dubbo还提供了全面的负载均衡和容错能力,较好地解决了对硬件负载均衡器的强依赖,提升了系统的可靠性。在通信协议部分, Dubbo对传统的通信服务进行了针对性优化,降低了传统服务对数据的需求数量和并发量[9-10]。
在Java中构建微服务的典型框架就是Spring Boot。Spring Boot是Spring框架中实践“约定优先于配置”的最具代表性的一种架构[11-13]。Spring Boot的程序虽然总体上来说是基于Spring框架,但是其在Spring框架基础上进行了简易性的升级改造,消除了Spring框架中固有的复杂与繁琐内容。Spring Boot新增的鲜明特征相对于Spring来说让人耳目一新,主要提供了以下4个主要功能:
(1)Spring Boot启动器:采用Maven或Gradle的依赖构造方式,将项目中常用的依赖项目进行整合管理。
(2)自动配置:在Spring4对条件配置的支持的基础之上,理性分析与推断程序对Bean的依赖程度,并实现动态配置。
(3)命令行接口(command-line interface,CLI):基于Groovy编程语言,结合自动配置手段,简化Spring程序的开发和命令行控制。
(4)Actuator:强化Spring Boot的监控功能,为其提供一系列简易、强大的监控与管理功能。
Spring Boot在上述功能的基础上,采用Rest方式,可有效获取线程在运行期的关键性能参数。同时,Spring Application为Spring Boot的启动提供了自动化的解决流程和方案,实现了对Spring Boot应用的“标准化”启动和“模板化”开发,开发者在进行微服务设计和编排过程中将更加方便和高效[14]。
高校教育云平台架构如图2所示。图中,高校教育云平台划分为基础设施层、应用支撑层、业务应用层和终端显示层,分层的设计方式有效保证了平台建设的规范性和可扩展性[15]。
图2 高校教育云平台架构
在该层中主要利用具有高性能计算能力的硬件系统来搭建稳定、可靠、扩展性强的底层基础设施环境,从而满足高校教育云平台上的信息化管理、使用和计算所需的硬件资源。该层主要部署有VMware、Citrix等主流的云计算平台,平台可将现有服务器和存储进行有序整合和集成,对外提供标准化的共享资源池。采用虚拟化技术完成了云计算、云存储等应用服务的搭建,能够对用户需求进行灵活的按需分配、动态响应和灵活优化。同时,对与智能化的教室、培训室和感知设备产生的大量数据通过不同类型的互联网络传输至数据中心,实现对在线教育环境的数据透明感知,并有效实现了异构环境下不同设备间的信息互通[16-17]。
应用支撑层主要完成了对统一身份信息、用户管理信息、数据接口信息、业务监控信息、报表管理信息、信息门户信息等的统一化认证。该层提供对平台中各类信息系统的状态与服务监控,对平台中涉及到的教学、科研、管理等核心数据资源进行深度的整合分析,并为上层业务应用的教改、创新、管理和决策提供基础支持。
(1)统一身份认证:以认证和授权的方式对云平台中的不同应用提供统一管理。采用单点登录方式控制用户的安全性和合法性。在统一认证技术规范的基础之上,为用户提供统一的管理界面,实现应用系统在用户认证层面的一致性管理。通过认证、授权控制和管理工具,对数据的访问和使用进行全面、多层次的允许、控制和管理,确保数据安全。
(2)用户管理中心:以树状目录方式实现基本组织机构模式下的用户管理,提供对用户信息、权限、认证、授权等多层面的信息管理。
(3)服务监控中心:提供平台内运行的各类服务的在线监管,满足平台对系统健康度、数据吞吐量、性能与压力负载、日志管理等多维度监控与管理的实际需求。
(4)报表管理中心:完成报表的定制化工作和日常管理维护,实现将数据以图、表、文等多种形式的报表输出,为用户提供丰富多样的报表展现。
(5)统一数据中心:构建海量的数据存储,完善平台中各类实体的数据模型,在进行数据深层次分析与挖掘的基础上,发现教学、科研和管理等领域的潜在价值数据,对教育教学活动开展智能化的分析,实现为教育管理决策部门的数据支撑。
业务应用层分别包含有面向教学、科研和管理类的三大典型应用体系。业务应用层基于面向服务的体系架构为用户提供交互度好的系统界面,采用图形化方式对用户数据、状态和行为等信息进行图形化展现,三大典型应用体系的描述如下:
(1)群智教学体系:分别从教学中的理论学习、实践运用、开放学习、研讨应用这四个维度,致力于打造出“共享开放、文理结合、虚实一体、智能反馈”的群智教学体系,实现线上、线下的教学资源、数据、信息、系统的互联互通。
(2)实践科研体系:实践科研体系突出实践的科研导向,构建包含项目实践、科研协作、成果交流、专家咨询决策等功能于一体的实践科研体系,从根本上解决科研工作的精细化管理,加快科研成果向实际生产力的落地对接和效益变现。
(3)全过程管理体系:针对办公行政、教学资产、教务管理、学生管理这四个重点方面进行全过程管理,关注在校师生的全活动过程,推进教育过程中的人员、事件、实物等的智能化管理,提升管理的科学化、合理化和规范化水平。
终端展现层是整个平台的门面,该层以图形化方式为用户提供多种形式的内容展现,支持移动App、Web浏览器、客户端软件等形式的接入,通过对使用用户的身份识别,进行个性化信息的在线定制和推送。
近年来,随着大数据分析与挖掘技术的发展,内容推荐中的统计主题模型逐渐成为当前学术研究的重要内容并受到广泛关注。统计推荐模型能够在对文本信息部分理解的情况下分析出易于理解和稳定的信息结构。潜在的狄利克雷分布(latent Dirichlet allocation,LDA)模型采用服从Dirichlet分布的隐含随机变量来对文本主题内容进行表达,达到了模型结构的完整与清晰化,同时,采用概率计算的方式推断处理文本,大幅降低文本表达维度,有效避免了维度过大导致的灾难。LDA模型作为一种自动的主题提取算法,主要是基于BOW模型,在实践过程中,LDA模型对信息分析、知识挖掘和分类有不错的处理效果[18-20]。
LDA模型对课程属性表征划分为课程题目、授课人、授课院校、所属专业、类别和课程介绍等信息,构建课程的特征属性描述。在课程的特征属性描述进行LDA主题模型建模后,生成课程的分类主题概率分布指标,其处理过程类似于文档的主体分类。如:给定特定的课程集合L={l1,l2,…,ln},设置当前的主题个数为C, 从而得到主题特征序列F={f1,f2,…,fn}和课程-主题概率分布矩阵J,如式(1)所示:
(1)
在进行用户兴趣度判断时,重点关注用户的历史、行为和内容兴趣这三个子模型。
用户对课程的评论可以和课程的主题概率模型分布矩阵J进行计算,得出的结果即为用户的历史兴趣模型即UHIM,其数据表达式为UHIM={wb1,wb2,…,wbi,…,wbc}。其中,主题词fi在UHIM中的权值为wbi。用户u在UHIM中的主题词fi体现了用户的现实兴趣分布,其具体的权值计算公式如式(2)所示,该数值能够较为客观地反映用户的历史偏好。
(2)
其中,Lu是用户u参与评论的课程集合。
用户的课程评论可以分析出用户的行为间相似程度,可对类似的用户群体采用协同过滤方式进行信息推送,其F权值称为用户行为模型UAIM,即User Actor Interest Model。UAIM的具体数学表述为UAIM={wh1,wh2,…,whi…,whc},其中whi为UAIM中主题词fi的权重数值。在进行类似用户群选择时只选取相似程度最前的h个用户,每个用户在UAIM中的主题词权值计算如式(3)所示:
(3)
其中,Uact为用户u的行为相似用户群。
用户的课程内容信息可用于分析出用户的内容间相似度,得到的权值向量即为用户的内容兴趣模型UCIM,即User Content Interest Model。UCIM的数学式为UCIM={wc1,wc2,…,wci,…,wcc},其中wci是在UCIM中主题词的权重数值,在进行类似用户群选择时只选取相似程度最前的h个用户。用户u的课程评论集设定为Lu={lu1,lu2,…,lus},用户u的历史兴趣模型设定为UHIMu={w1u1,w1u2,…,w1uc}。用户v的课程评论集设定为Lv={lv1,lv2,…,lvt},用户v的历史兴趣模型设定为UHIMv={w1v1,w1v2,…,w1vc}。用户u与v的内容相似度数值如式(4):
(4)
用户u在内容兴趣模型中的主题词权值计算如式(5):
(5)
其中,Ucon为用户u的内容相似用户群。
随着业务的发展和用户的增长,系统数量不断增加,服务依赖性变得越来越复杂。为了保证系统的高可用性和高并发性,分布式系统架构是必不可少的[21-22]。将高校教育云平台的各个功能模块划分为N个功能单元。各功能单元以微服务的形式提供外部服务,具有以下优势:
(1)服务业务单一化:每种服务都相对简单,只关注一个业务功能,高校教育云平台上的每一个查询都是一个微服务。
(2)服务业务松耦合:微服务架构是松散耦合的,可以提供更大的灵活性。高校教育云平台的不同模块只能通过微服务调用。
(3)服务开发差异化:微服务可以通过最好和最合适的编程语言和工具来开发,并且可以解决有针对性的问题。
Dubbo是一个面向服务治理方案的分布式服务框架,它提供了高性能、透明的RPC远程服务调用方案和SOA服务治理方案。通过Dubbo、透明的远程方法调用、软负载平衡和容错机制,可以实现服务的自动注册和发现。基于Dubbo框架构建分布式服务,使应用程序能够通过高性能的RPC实现服务的输出和输入功能。具体如图3所示。
图3 Dubbo调用示意图
ZooKeeper是一个开源的分布式协调服务,由雅虎创建,是Google Chubby的开源实现。分布式应用程序可以基于ZooKeeper实现诸如数据发布/订阅、负载均衡、命名服务、分布式协调/通知、集群管理、Master选举、分布式锁和分布式队列等功能,集群部署结构如图4所示。
图4 ZooKeeper集群部署结构
ZooKeeper集群部署通过消息分发、重置和主节点选择等方式保证了其可靠性、一致性、实时性、原子性等特点,特别适用于大型分布式系统。在一般的分布式应用中,由于工程师不能很好地使用锁机制和基于消息的协调机制(不适合某些应用),需要一种可靠的、可扩展的、分布式的、可配置的协调机制来统一系统的状态。这就是使用ZooKeeper的目的。
在ZooKeeper整个集群体系中,其包含的节点数量一般为大于3个的奇数个,如果集群体系中的主服务器出现宕机的情况,其他集群中的剩余从服务器如果在半数以上,可以对新的主服务器节点进行推选,推选成功后即可以主服务器方式继续对外提供相应的业务服务。ZooKeeper以树型结构的方式来使用数据结构,其根节点以反斜杠进行定义,在整个集群体系中,各节点按照其类型不同划分为三种类型,分别为领导者、随从者、观察者。其中,领导者负责相应客户端写的相关请求;随从者负责处理客户端读的相关请求;观察者是一类特殊的随从者,其主要接收客户端读的请求,但是不参与主服务器的推选,观察者主要用于提升系统的读取数据,扩充系统的业务支撑能力。
ZooKeeper作为采用观察者设计模式开发的一种分布式服务体系框架,在接收观察者注册的前提下,满足了对数据存储和管理的需求。当系统中的数据状态出现了变更时,ZooKeeper即可动态感知,并将数据的变化信息推送到ZooKeeper集群中关注数据的相关对象[23-24]。
MySQL具有的内建复制能力是保证其构建大规模、高效、可用应用系统与数据架构的底层基础。为了将MySQL的数据高效分布至多个系统上,可采用其复制机制,将MySQL主服务器上的数据复制到其他从属的设备上。整个复制过程需要指定一台服务器为主服务器,其他机器充当从属设备。主服务器上维护了相关工作日志,便于维护和后期的索引。
在MySQL复制过程中,主要的类型包括3类,分别为:
(1)基于SQL语句的复制:采用先后顺序分别在主服务器、从服务器上执行相同的SQL语句。MySQL默认情况下是采用基于SQL语句的复制策略,其执行效率较高。但是,如出现无法精确复制的情况,MySQL将会自动改为选择基于行的复制。
(2)基于行的复制:采用变更内容的复制方式,避免了SQL执行语句的重复执行。但是其对版本有一定要求,需要MySQL 5.0以上。
(3)混合类型的数据复制:该策略为混合策略,可设定默认和备用策略,典型混合策略为默认采用基于语句的复制,备用采用基于行的复制。
MySQL的复制技术具有高可用、负载均衡、数据分布、循环备份、高容错等鲜明特点。复制技术的主要过程为:首先通过主服务器将需要变更的记录信息存储到二进制的日志中;然后利用从设备将主服务器中的二进制日志内容拷贝至从设备的中继日志;在从设备上对中继日志进行重做之后,实现对数据的复制。
Redis部署在用户内存数据库集群中。Redis作为一种高性能的键值数据库,在很大程度上弥补了memcached等键值存储的不足,在关系数据库中起到了很好的补充作用。同时,Redis定期将更新后的数据写入磁盘,不仅可以实现主从同步,而且保证了数据的持久性和安全性。
Redis集群模式主要有2种:主从集群、分布式集群。前者主要是为了高可用或是读写分离,后者为了更好地存储数据,负载均衡。
Redis集群提供了以下两个好处:
(1)将数据自动切分(split)到多个节点。
(2)当集群中的某一个节点故障时,Redis还可以继续处理客户端的请求。
一个Redis集群包含16 384个哈希槽(hash slot),数据库中的每个数据都属于这16 384个哈希槽中的一个。集群使用公式 CRC16(key)%16 384来计算键key属于哪个槽。集群中的每一个节点负责处理一部分哈希槽。集群中的主从复制集群中的每个节点都有1个至N个复制品,其中一个为主节点,其余的为从节点,如果主节点下线了,集群就会把这个主节点的一个从节点设置为新的主节点,继续工作。这样集群就不会因为一个主节点的下线而无法正常工作。
当前,人们生活的方方面面都在转型升级中,如智慧城市、智慧医疗、智慧交通等,教育的智慧转型也顺应了时代潮流。智慧教育从教育理念、学习环境、教学方法、评价体系、管理模式等方面进行了创新,但在智慧教育的发展过程中,必然会出现一些问题和障碍,因为这是现代教育体制的改革,这就需要多部门、多层次、多途径的协调配合。2020年的“新冠疫情”为在线智能教育提供了前所未有的机遇。在国家全面建设智慧校园的背景下,以网络教育为切入点,积极推进教育形式向智慧教育转变,让学习者真正探索和收获“智慧”。