基于微服务理念的社区教育平台设计与实现
2020-12-20张平娟李双喜王婷婷
张平娟, 李双喜, 王婷婷
(1.安徽科技学院,安徽 蚌埠 233030;2.蚌埠学院,安徽 蚌埠 233030)
社区教育平台作为高校“教学一体化”项目的子项目或依托省级教育主管部门由高校或开放大学承办,以社区居民为服务对象,整合区内各级各类教育资源,是开展社区居民终身教育的新型教育平台[1]。以微服务构架方式开展的新型社区教育平台设计突破了传统系统设计理念,运用了成熟的互联网思维,充分发挥了微服务构架在独立性、技术性和较强容错性方面的优势。所开发的新型教育平台系统融合政府、社区院校、社区居民(学员)等参与方,通过丰富的形式与内容使参与方在云平台上相互影响,形成良性的教育生态圈。新型社区教育平台可为社区居民提供各类数字化学习资源、良好的学习条件、便捷的学习途径和完善的支持服务,实现社区居民终身学习的理想,同时促进和谐社区建设及人的全面发展目标的实现。
一、微服务社区教育平台建设必要性与可行性
当前社区教育开展主要是在各级党委、政府领导下进行,一方面相关部门及人员深入社区进行专项培训,另一方面政府或企业借助电大学习中心或工作站开展不同类型的培训。教育渠道主要通过线下开展,需要去固定的学习中心或学习点学习,增加了社区居民学习成本,严重影响居民学习积极性,急需通过信息化手段为社区居民打造随时随地可学习的线上教育平台[2]。
从2016年至今,全国多数省份成立了社区教育指导服务中心,社区教育管理机构和社区教育体系初步建成,并处在高速发展阶段,由于缺乏信息化手段支撑,缺乏数据沉淀和分析,很难动态分析一定区域、一定周期内居民的学习兴趣和需求变化,很难及时对培训课程、教学资源做出动态调整和反应[3]。亟待通过搭建信息化平台记录居民的学习轨迹和学习需求,通过数据动态分析居民学习需求,从而为社区教育管理者提供响应决策。
部分先行省份开放大学或广播电视大学办学实践凝练了“统筹规划、分级办学、分级管理”的办学机制,在教学管理、资源建设等方面形成了成熟的学习支持服务体系,可为社区居民提供先进的学习支持服务。目前全国开放大学已具备以社区大学为网络主线和社区学习点为节点的教育教学网络体系,为社区教育平台的搭建提供了基本保障。
调查显示:70%以上社区居民对社区网络教育平台有所了解,但在这类人群中仅有31%的居民曾经使用过网络教育平台[4]。根据这一结果进一步设计调查问卷,调查结果显示:居民虽对社区网络教育平台较有兴趣,但面对结构较为复杂、内容大而全的社区网络教育平台,他们的计算机使用技能、已有知识文化水平有限,导致多数社区居民使用网络教育平台出现困难,平台使用率较低。
作为一种新型学习模式,网络化的社区教育平台有利于突破传统教育模式的限制,满足社区居民多样化学习需求。以微服务理念开发出的社区教育平台可以将系统从传统的单体构架迁移到微服务构架(MSA)。基于微服务构架系统开发设计一种易操作、形式简单、大众化的平台结构方案已经成为一种新的选择。
二、微服务架构原理
(一)微服务构架概念
在系统开发中,为了避免因系统微小改动而必须变动大量代码的行为,采取将复杂应用功能进行分割,尽最大可能用微小服务去实现单个功能的方法,这些微服务功能之间通过轻量级通讯建立联系。传统的系统开发(如基于SOA构架开发的应用系统)采用模块化编程技术避免代码庞大,但又受困于模块之间界限的界定难度。微服务只关注边界内的功能如何实现,以较小的代码量去实现微功能。通过与SOA相比较的诸多不同之处,有助于对MSA更深层次的理解。如微服务构架作为一种实现方式更加强调其应用性,较少关注体系和指导思想,适用于快速迭代、快速交付的应用。采用分布式构架,服务粒度更细致,功能更加单一。基于HTTP的RESTful轻量级通讯,采用Docker或RESTful实现方式,可在不同的平台实现独立进程等[5]。
(二)微服务构架优势
1.相对独立特性
微服务功能设计中,将每一个微服务功能视为一个相对独立的功能组件,而不是通过隔离或提取的方法构建共享库设计相对隔离的独立运行模块。微服务的功能组件虽是独立部署,但为了相互通信,采用了远程调用或网络请求的方式。程序开发或设计人员寄希望于微服务的独立部署,实现在系统升级或改进时不必整体重新设计或部署,只需对功能变动所涉及的组件进行更替即可实现。
2.技术多元特性
康威定律(Conway's law)指出,系统程序设计中常采用分割的方法去实现大应用的分解,以达到设计开发团队的协调与运作。根据康威的观点,微服务构架设计是通过拆分来实现的,即围绕业务功能的实现去组织组件和分解应用。虽经过拆分形成的系统微服务功能组件数量庞大,但微服务架构更允许设计者忽略服务体系中技术或者语言的一致性,进而对开发语言进行个性选择以适应不同业务领域的特性,这为系统后期因业务变更或服务功能转变预留了生存空间[6]。
3.强容错特性。系统运行时,当某一组件发生故障时,在单一进程的传统架构下,故障可能在进程内扩散,导致应用全局性的不可用。但在微服务架构下,组件发生的故障会被隔离在单个服务中,通过良性设计,其他功能组件的服务可通过重试、平稳退化等机制实现应用层面的容错,从而降低系统维护和再开发的成本和风险。
(三)微服务构架的挑战与应对
1.模块功能界定和拆分
使用微服务构架去开发设计应用系统,有一项需要开发者去做的重要工作就是业务功能的微服务化,即如何界定每一个微服务再进行系统功能的拆分。在实际工作中需要面对微服务功能模块界定过大或过小的问题,功能模块过大体现不了微服务的优势,过小则造成系统的微服务功能模块数量过于庞大,极大增加了系统管理的压力。针对于此项困难,设计者可以采用预设计功能模型的方法,这些模型中的界限定义有助于微服务功能组件的界定参考。
2.系统内通讯与管理
原来的单体应用因为系统拆分工作的存在变成了一系列功能单一的微服务模块。诸多功能的拆分所产生的微服务模块数量巨大,模块之间的通讯和管理就成为一个亟待解决的问题。统筹协调微服务模块之间的联系和系统的运维的复杂度会也会几何级增加。而在原先单体系统应用中所采用的本地调用方法也会因功能模块的拆分变成远程服务调用的需求。诸多人为增加的微服务数量也会降低系统整体性,对硬件环境的要求就会提高,导致系统运行成本增加。一般采用一体化的PaaS服务解决类似问题,通过采用打包的方法将所有此类管理问题交由PaaS,再由PaaS提供集群化处理方案配置、部署或监控。
3.数据一致性与服务可用性
微服务架构除了应用中的挑战本身也面数据一致性(C)、服务可用性(A)和分区容忍性(P)之间权衡问题,根据CAP理论,C、A、P三者之间最多同时保证两者[7]。在具体应用中往往P是需要优先保证满足的,余下的C和A则可以采取部分舍弃的方式,为强调服务可用性降低数据一致性或追求数据一致性舍弃部分服务可用性都是现实备选方案。
三、基于微服务架构的系统设计与实现
本次设计的社区教育服务平台本身就是一个大型互联网开放平台,要求支持主题、功能插件、教学活动插件的开放架构,具备良好的伸缩性和后续业务扩展能力。要求基于统一资源库的建设为学历教育、社区教育、混合式教学平台、学分银行提供良好的应变数据接口能力,质量上运维上敏捷的响应能力。基于以上项目需求建立更细微的功能模块,模块之间建立松耦合的关系,互相独立,又能够自由组合、扩展,以便建立一套高可用性,高可维护性、更好伸缩性的系统,使得业务功能更加开放,可以很好适应当前及未来业务功能的扩展要求,结合当前大型互联网平台微服务架构的特点和优点,本系统采用微服务组件化的思路和可插拔式组件管理模式实现[8]。管理员可以对功能组件模块做精细化的配置,针对主站以及不同的子站设定开放不同的功能,做到主站的按需配置动态配置,子站的差异化按需管理。
(一)微服务功能规划
微服务社区教育平台主要是实现用户登录、资源管理、信息查询、在线交流等功能。对系统每一个功能可进一步分解,用微服务功能组件去表达。在不同服务器上进行不同的资源配置,使得这种主功能的细化分解更易于实现负载均衡分配。
(二)微服务拆分
微服务拆分基本原则是按照粒度、责任、隔离性、业务无关性。根据业务功能划分服务粒度,总的原则是服务内部高内聚,服务之间低耦合。追求任务单一性,每个微服务相对独立,互不影响,且只负责一项工作。拆分时优先考虑电子邮件和短信通知功能等与具体业务无关的组件,实现最基础的功能,这样安排拆分更容易实现。社区教育平台微服务功能拆分时主要基于基础、业务和定制三个方向。在基础微服务中主要涉及权限、报表、备份和元数据微服务等。业务微服务包括计划学习项目下达、监管、统计数据微服务等。定制微服务包括资源库配置、信息互动微服务、服务发现微服务等。每一个微服务都用独立的服务接口去定义,这样拆分后的微服务所组成的新系统维护难度系数也会相对降低。
(三)微服务数据库设计
每个微服务都有自己独立的数据库,数据联合引用处理是微服务面临的挑战,严格按照微服务的划分来做,微服务相互独立,各微服务数据库也独立,将业务高度相关的表放到一个库中,将业务关系不是很紧密的表严格按照微服务模式来拆分,这样既可以使用微服务,也避免了数据库分散导致后台系统统计功能难以实现。
(四)微服务仓储式框架技术管理
通过SVN(即subversion,一种开放源代码的版本控制系统),可以实现对服务版本的科学有限管理。系统设计理念是通过建立每一个单独运行的微服务功能程序去解决系统上复杂的功能,但这会导致服务版本的急剧增长,加大管理难度,而SVN可以单独对这些版本进行管理[9]。系统设计采取组件产品仓库管理机制,打破传统,创造C2B模式的产品研发,建立“搭积木”式的快速开发、快速组装模式,借鉴商店超市的管理方法,创建的商超会为系统提供零件、小产品等,由客户决定购买,进而采用灵活主动的组装方式,生产自己预设计的产品。
1.客户提出需求
由客户提供较为详细的业务内容及流程说明,撰写需求文档描述待开发系统的业务需求、用户需求和功能需求等三个层级的需求,再由系统开发分析人员进行需求分析,用专业的语言归纳出需求描述或需求模型。系统开发人员根据此需求描述或需求模型进一步将具体功能细化为若干具备较单一功能的应用子系统建设方案。在将需求提升到功能需求时,业务需求就已经通过功能需求表达为专业的计算机语言进行描述,体现为可以通过计算机程序设计实现的功能模块或子系统。
2.订购抽取产品或组件
大量单一功能的产品或组件,被放置在产品商店(仓库)以被系统设计所需,有如一个产品或组件商店,诸多“商品”一一陈列。面对用户需求时设计人员在现有产品或组件基础上,最大限度对这些产品或组件加以利用进行设计组装以实现系统功能。这种直接订购或从商店抽取具备所需功能的产品或组件的方式,极大提高了降低了系统开发成本,提高了开发效率。
3.产品派单生产
在已有产品的基础上进行设计研发时仍会有部分系统功能无法在现有产品或组件中实现,对系统设计人员而言需要将此类信息统计汇总,用专业的计算机语言进行功能性描述以后交与系统程序研发部门进行指定的产品或组件生产,具备指定功能的产品或组件一旦被生产出即可用来设计系统,同时也将用来对产品商店(仓库)进产补充。
4.产品管理与集成
系统设计人员生产部门新研发的产品或组件统计组装、编号和发布,对一些功能升级的产品或组件进行更新,保持产品商店(仓库)的数据的即时性,为系统设计人员提供优越的产品或组件保障。系统设计人员在全部所需产品或组件的均已具备的情况下,依据预先设计的集成策略开展系统集成,最终完成具备全部客户需求功能的软件系统。
以上步骤仅为微服务仓储式框架设计主要步骤,实际开发过程中有较多细节程序或步骤需要完成,且系统在集成完毕仍需要进行功能测试。
(五)微服务应用总体架构设计
本系统平台项目建设将搭建省级社区教育门户框架,初步实现地市级开展社区教育管理及社区活动,主要包括基础的访问、学习(含过程记录)、管理、交流、提供部分学习资源等,建立活动园区、培训园区。同时支持未来终身教育业务功能扩展,形成开放式的、可灵活扩展的业务功能架构。为达成本次项目建设需求及未来扩展要求和系统总体设计核心目标,系统功能按照教学平台、资源库平台、应用支撑与管理平台三个层次功能进行建设。教学平台功能包含社区教育PC端门户网站(前台)、社区教育移动端门户网站(前台)、后台管理平台(后台)三部分内容。资源库平台功能包含资源库管理平台功能、资源库展示平台功能。应用支撑与管理平台主要包含应用基础组件支撑与接口服务功能。
1.系统教学功能平台
教学平台功能分为前台功能和后台功能,前台功能通过PC端门户网站或移动端门户网站与用户之间实现数据交流。PC端门户网站集社区教育平台的统一访问、登录、注册、管理、新闻发布、站点跳转等功能于一体的综合性门户,包含平台介绍(了解我们、组织机构介绍、社区教育试验点介绍)、资讯中心(政策法规、市县动态、理论研究等)、资源中心、专题学习、活动园区、培训园区、社区学习论坛、帮助中心。教学平台系统、社区交流模块、后台管理、资源库管理等系统均由此连接和跳转。通过移动端门户网站,社区教育平台可通过微信等移动方式开展访问与学习,为社区教育平台用户提供便捷的新闻动态、发现、课程门户、一健智能搜索、新消息通知、课程门户、注册登录等服务功能。
2.资源库功能平台
基于“一库多平台”实现的统一教学资源库(技术架构采用“一库多平台”方式实现),对各种音视频、图形、动画、文本文档各类教学资源的汇集、管理、服务,为各学习平台提供权限清晰、控制准确的资源服务与管理功能。资源库平台主要包含资源平台功能和资源展示平台功能两大块内容,通过资源存储、资源管理、资源服务首先实现资源存储、资源管理、资源服务的精准同步,为实现不同权限的划分和资源访问控制构建基于地域、机构、角色的立体化权限体系功能。结合资源库平台项目建设需求及规划思路,资源库平台主要包含三大功能,资源管理平台、资源展示平台、共享与监控平台三大组成部分,共享与监控平台从“一库多平台”体系架构出发考虑为资源管理平台、资源展示平台提供共享与监控的功能支撑,为资源管理平台、资源展示平台提供底层的数据资源保障服务。通过资源管理平台的使用,能够实现一级管理用户与二级管理用户的协作与共享。资源展示平台是为将资源库的所有资源充分展示出来,以方便广大师生备课或学习使用而设计,该平台以视频资源展示为主,页面设计要求简洁、美观,同时按一定规则分类、分栏目(项目实施时由双方协调,比如可按教育模式、按学科、按资源类型等方式)展示。
3.应用支撑与管理功能平台
基于微服务架构体系应用支撑中心为业务应用统一的应用支撑服务,使得业务应用系统在进行业务扩展和业务开发时,把重点可放在业务实现上,提升业务系统的开发和构建效率。应用支撑平台从整个社区教育平台稳定长效运行出发,为教学平台、资源库平台的功能实现提供统一的应用支撑服务及外部集成服务,提供基础组件功能和外部接口服务。基础组件支撑功能主要包括统一登录中心、通知消息中心、解码服务中心、直播服务中心、信任授权中心、统一待办中心、加密服务中心、集成服务中心。外部接口服务功能主要包括单点登录集成、待办任务接口、资源开放接口、资源采集接口等。系统基于大型互联网、微服务架构、“一库多平台”设计,考虑后续终身教育业务的扩展,结合资源库发布目录体系及共享规范预留结构化数据、音视频文档非结构数据的数据接口服务。
(六)系统功能结构设计
“社区教育平台”主要核心功能分为以下四块,分别是资源汇集、管理、服务功能,二级管理服务功能,统一门户服务功能和应用支撑服务功能。
1.资源汇集、管理、服务功能
以教学资源归集、服务的统一教育资源库及资源库展示与管理平台,为全省终身教育业务资源汇集、资源管理、资源服务提供功能支撑。
2.二级管理服务功能
搭建统分结合的省市二级后台管理平台,实现省级统一管理和市级特色、个性化需求,为达成省级平台和地市平台数据互推、一站式共享、业务协同管理提供功能支撑。
3.统一门户服务功能
搭建PC端与移动端一体化的综合性门户社区教育云平台框架(门户),为信息发布、成果展示、在线学习为核心,集学习、存储、成果转换为主的学习服务能力提供PC端和移动端服务。同时为社区教育平台对外服务提供统一的统一访问、登录、注册、管理与站点服务功能。
4.应用支撑服务功能
建设为数据资源平台与教学平台的基础支撑平台,为数据资源平台与教学平台的稳定高效运行提供统一的基础组件服务功能,同时为大集成平台等外部系统集成资源服务、提供接口服务。通过云管理系统为整个系统中通用的服务管理模式,如配置管理、服务发现、智能路由、微代理、消息队列、一次性令牌、全局锁、群集状态、资源管理等;私有云管理系统统一管理起服务器各项业务的生命周期,并起到任务调度、负载分配、信息收集等作用。生产中心搭建生产环境和生产应用,备份中心对数据和应用进行安全备份。
四、总结与展望
社区网络教育发展推动了远程教育平台的兴起,本文以社区教育平台建设为例提出了以微服务为构架的设计方案和实现途径,对微服务的特点进行了分析,规划了总体方案,提出了具体设计路径。微服务为构架的社区教育平台建设方案克服了社区人员学时时间和空间上的限制性,引领传统教育模式的改革和创新,弥补了现场教学的不足,有利于降低社会教育成本,扩大受教育面,提高学习效率。微服务构架为系统开发的简便性提供了保障,用户体验好,但在安全性的解决上仍需要落实“同步设计、同步建设、同步运行”的信息安全建设原则,保障平台信息安全,整体形成统一的总体安全保障体系。