返回 登录
0

EduSoho 教育云在好知网的应用

声明:本文来自「又拍云主办的Open Talk——在线教育:技术让知识触手可及」的演讲内容整理。PPT、速记和现场演讲视频等参见“UPYUN Open Talk”官网。
嘉宾:杨帅,EduSoho好知网架构师,多年架构经验,拥有集群、负载均衡的系统架构及部署管理的经验,拥有敏捷管理,团队化建设等相关经验;对产品的版本控制、发布流程建设拥有成功的实践经验。
责编:钱曙光,关注架构和算法领域,寻求报道或者投稿请发邮件qianshg@csdn.net,另有「CSDN 高级架构师群」,内有诸多知名互联网公司的大牛架构师,欢迎架构师加微信qshuguang2008申请入群,备注姓名+公司+职位。

随着信息技术在生活中的逐步渗透,再加之“互联网+”的推动,在线教育已成发展之势。较之传统教育,在线教育支持碎片化学习,具有高效、低门槛、教学资源丰富的特点。全球范围内的在线学习都正处于寻求有效发展的阶段。本文为EduSoho架构师杨帅此前的分享整理,围绕该话题,结合好知网的发展历程,介绍了其技术、平台和业务等方面的内容。

公司简介

阔知简史

2011年,杭州阔知网络有限公司的创始团队创建了“好知网”这个在线教育分享的学习平台。在这个平台上,用户既可以分享自己的知识,也可以通过别人分享的知识来进行学习。后于2012年5月成为四大学习社区之一。

2013年,很多线下教育机构发现在线教育的趋势,所以想做一个类似系统的平台,将线下教育业务移至线上。接着,阔知团队就在“好知网”的基础上进行重构,做出首版EduSoho ,并于2013年10月正式发布。

2014年9月,EduSoho用户已接近8000家。同年,其又推出教育云服务。截至2016年3月,EduSoho 的客户已经超22000家。

选择开源

EduSoho 网校是开源的,论及选择开源的原因,其创始人Kent在接受采访时说到两个事情:一是开源可以让教育机构以最小的成本建立自主掌控的网校系统,二是开源可以让教育机构在 EduSoho 主系统的功能基础上,通过自由安装不同的教育应用,来适应自身不断发展的教育需求。

同时,EduSoho团队还提出了一个设想,希望在其开源网络课堂的基础上,聚集网络基础设施提供商,比如服务器、视频托管、域名等,还有软件开发商、视频制作公司、运营推广服务商等,然后搭建一个完整的在线教育平台,为教育机构提供各种功能或者插件,让教育网站的建立就像搭积木一样简单。

敏捷开发,快速迭代

EduSoho的开发方式遵循敏捷开发和快速迭代的原则。在过去一年中,基于客户应用或系统上的问题,其系统共更新113次,新增23项大功能,进行了 198 次优化,总计修复197 次,平均 3.23 天更新一个版本,迭代速度很快。

持续集成

图片描述

EduSoho在快速更新的同时,也会通过持续集成来对代码进行保护。其在这一块的工作形式比较多样,比如每日例会、敏捷任务板,还有每周一和周三的知识分享会,以及黑客马拉松这样的技术交流活动。

关于“好知网”

好知网简介

图片描述

Edusoho最早发源于“好知网”,而“好知网”是一个专注于兴趣和生活领域的在线学习平台。众所周知,在线教育有很多领域。而“好知网”目前已涵盖很多课程,包括创意、设计、音乐、运动健身、互联网、语言学习、公开课等,基本上偏重于兴趣和生活领域。

好知网发展历程

图片描述

2011年5月,“好知网”正式上线,后于2015年7月全新改版,开始基于 Edusoho 进行开发定制,而在此之前都是独立开发。

Edusoho网校系统和EduSoho教育云

图片描述

在线学习或在线教育的形式都是多样化的,比如课程、笔记、问答、数据分析,和各种 APP 的客户端等,这些只是一个前端的展现,而后端提供服务的都是 Edusoho 教育云,比如EduSoho的开发云平台,用户可以在该平台上选择需要的插件、功能,还有云视频、云直播和云文档等。

架构特点

EduSoho整个系统全部是用 PHP 写的,同时也使用了一些 swoole、yar、phalcon 这样的高性能框架。此外,由于自身的开源特性,EduSoho采用开源技术,多选用开源框架。而技术服务方面,EduSoho则基于第三方的基础云,比如云存储、云直播等。

架构要点

图片描述

首先,在分层体系上,EduSoho的架构按照三层来做,分别为表现层、服务层、数据库持久层。

响应式界面设计

图片描述

其次,是响应式界面设计,“好知网”的 Web 页面会根据访客的设备自动调整布局,为访客提供最佳的用户体验。如上图所示,在 PC 端的话它可以显示成竖排三栏或四栏,而在手机端的话,它就会自动调整成一栏或两栏。因为如果忽视用户体验,则很容易流失这一部分的用户。

插件设计

图片描述

接下来,是插件设计,这是扩展机制中的一项。“好知网”系统可针对用户的不同需求,让用户在云平台中选择一些插件来使用。这里简单介绍一下菜单插件的功能,如果要在导航里面显示一个新的菜单,那么就需要在后台增加一个新模块,而这时候就能用EduSoho的插件来自动配置,动态添加功能。

同时,“好知网”系统还有一个菜单的 MenuBuilder,会读取指定的菜单文件,然后把菜单拉出,当新的功能推出后,就需要调用注册服务,把新开发的功能加载至Plugin Installed.php。

“好知网”网校还拥有定制功能,比如语言学习对音频的处理和识别需求比较高,但是其它学习,比如设计学习,对音频的需求就没有那么强,对此,“好知网”提供差异机制。

主题机制

关于主题机制,“好知网”网站的大部分头部都是统一的,底部也是统一的,如果全部重复写代码的话,非常不可取。其使用的引擎支持页面继承,也就是说,在父页面定义好以后,不同的子页面可直接实现不同的东西。

下面介绍模板的优先级:比如 A 页面在根目录下面,现在根据需求,需要重新写,重新展现,这也写在 A 页面上,然后放在主题文件夹下,之后当需要找这个页面时,就会根据优先级先在主题文件夹下搜索,一旦搜索到就展现出来,搜索不到就再转去系统默认路径。此外,重写页面的话,可能就要调取不同的数据,这里EduSoho会提供数据标签,你可以通过数据标签把页面需要的数据直接渲染出来。

二次开发、定制

图片描述

在架构要点这一部分,最后就是二次开发、定制,和相应的扩展。

对于一些核心业务的扩展,EduSoho提供了Service和Dao的定制重写机制,具体来说就是,在需要调动Service时,需要用Service kernel返回一个具体实例,或者由用户根据自身业务重写的一个Service实例,然后EduSoho就会通过Service kernel来获取,由于Service kernel有一个缓存的概念,所以如果把每个Service实例都放进去,就能够降低Service kernel的开销,而EduSoho也能够通过Service代理的方式,对Service和Dao实例进行包装,非常方便地对服务进行扩展。

架构的扩展机制可以分为横向扩展和纵向扩展。关于横向扩展,首先EduSoho有一个web的负载均衡,主要解决的问题是高并发的性能问题,它可以通过一种算法把用户的请求分摊到不同的web集群,然后对用户访问进行响应,对数据缓存进行集群,对数据库进行切片。其次是分布式文件存储系统,众所周知,文件如果存在一个服务器上,只有一个服务器响应会慢,所以EduSoho团队会调动Master访问,告诉用户请求在哪里,如何去读。再次是备份的Metalogger Server服务,当Master遇到问题的时候,它自己就可以处理 Master 的工作,解决当中的问题。最后是堡垒机,因为在集群的环境下,要维护的服务器非常多,所以如果每个都自己登陆,应用起来非常不便,安全也很成问题,但是如果有堡垒机,所有远程网络登录都会通过堡垒机进行服务,既方便,也相对安全。

教育云

“好知网”的后台是通过教育云来支撑的,EduSoho提供针对教育应用技术的云,里面有云视频、云点播、云文档、PPT、DOC,由于这里的 PPT 和 DOC 不能在浏览器打开,所以EduSoho就通过云代码等直接解决,下面还有云直播、云短信,比如用户要进行交流,可以通过云来互动,发送云短信等,此外,云搜索、云分析也可以帮助用户更好地学习,这些都是由教育云提供的。

图片描述

如上图所示,在EduSoho的平台上,各网校通过Restful API的统一接口进行访问,通过RPC的方式对外提供服务,比如说短信服务、文档服务,还有视频服务,可以对视频进行切片。同时,会有监控,一旦发现某个服务节点有问题,会自动报警或者自动刷新,为用户提供正常的服务响应。

RPC的实现

在 RPC 的实现方式上,EduSoho采用了YAR的框架,它基于 HTTP ,开发起来效率很高,也很简单。然后,负载均衡的是 RPC 客户端轮询,它会对每个服务器节点进行轮询,如果服务器 N 次连接超时,服务就会自动下线,并且报警。最后,EduSoho通过 PHP 实时实现了所有的 RPC 服务,并且对服务器状态进行实时监控。

垃圾用户防范

图片描述

EduSoho服务器上线后也遭遇了一些问题,其中包括垃圾用户,这是一个很多互联网应用都会遇到的问题。

简单来说,当用户请求注册服务的时候,需要会进行验证,如果通过就允许启动注册,否则就告知用户请求非法。这里使用的是关键词过滤,但这个验证其实非常滞后,因为不知道用户会选择哪些关键词来注册,无法跟上用户的节奏,所以商业用户批量刷系统的情况时有发生。

对此,EduSoho做了一些调整,首先是Iptables的频率限制,比如说其规定了某个IP地址在一段时间内只能注册几个用户,然后还通过敏感词过滤来扫描用户信息,扫描通过才允许注册,最后就是用户行为判定,因为垃圾用户都是相似的、批量的,并带有电话等联系信息,一旦判定为垃圾用户,EduSoho就会通知管理人员,对用户进行封禁。此外,在整个过程中,EduSoho都会通过事件来监听用户行为,并进行判定,主要是关键词过滤,包括很多人可能会用的一些特殊符号,比如不可见字符,或者用Q来表示9,用O来表示等。

让知识变得性感

图片描述

知识有一个过程,所以需要使其更加具象化、可视化。此外,知识点的及时反馈是很重要的,对于加深知识点的理解有非常大的帮助,针对这个问题,“好知网”提供视频弹题,会显示一个小白点,在老师讲解知识点的时候,可以在这个点上把题目放出来,当学员在看的时候,也可以弹出来这个题目,能够有实时的反馈。

2016年8月12日-13日,由CSDN重磅打造的互联网应用架构实战峰会运维技术与实战峰会将在成都举行,目前18位讲师和议题已全部确认。两场峰会大牛讲师来自阿里、腾讯、百度、京东、小米、乐视、聚美优品、YY互娱、华为、360等知名互联网公司,一线深度的实践,共同探讨高可用/高并发/高性能系统架构设计、电商架构、分布式架构、运维工具研发与实践、运维自动化系统的构建、DevOps、云上的运维案例分析、虚拟化技术、应用性能检测与管理、游戏行业的运维实践等,将和与会嘉宾共同探讨「构建更安全、更高性能、更稳定的架构和运维体系」等领域的话题与技术。【八折优惠中,点击这里抢票,欲购从速。】

评论