转载

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

关于“好知网”

好知网简介

EduSoho 教育云在好知网的应用

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

好知网发展历程

EduSoho 教育云在好知网的应用

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

Edusoho网校系统和EduSoho教育云

EduSoho 教育云在好知网的应用

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

架构特点

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

架构要点

EduSoho 教育云在好知网的应用

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

响应式界面设计

EduSoho 教育云在好知网的应用

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

插件设计

EduSoho 教育云在好知网的应用

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

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

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

主题机制

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

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

二次开发、定制

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 教育云在好知网的应用

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

RPC的实现

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

垃圾用户防范

EduSoho 教育云在好知网的应用

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

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

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

让知识变得性感

EduSoho 教育云在好知网的应用

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

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

原文  http://geek.csdn.net/news/detail/90043
正文到此结束
Loading...