在线培训系统平台架构简介
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
在线培训系统平台架构
简介
Corporation standardization office #QS8QHH-HHGX8Q8-GNHHJ8
在线培训系统平台架构简介
一、技术架构
在线培训系统完全基于云架构进行设计、开发、部署。平台部署在Linux操作系统上,采用目前运行稳定,安全性很高的JAVA语言开发,使用开源的MySQL数据库存储数据,可以在平台上部署Redis、Memcache、MangoDB、Node.js、Hadoop等着名的第三方开源软件,支持万人以上规模的用户并发访问。整体上看,这种在线培训平台具有速度快、稳定性强、安全性高、易于扩展的特点。下图是在线培训系统的架构图:
二、架构特点
这种架构具有安全性高、稳定性强、运行速度快的特点,从一台服务器到集群服务器再到分布式部署,这种云计算平台都可以轻松胜任。下面详细介绍下平台架构的特点:
操作系统
操作系统采用Linux作为整个平台的操作系统。Linux操作系统自诞生以来,一直以稳定性、开放性着称。对比Windows操作系统,Linux操作系统拥有相当多的优点,这些优点可以帮助我们更好的对平台进行管理,保证平台能够高效、安全、稳定的运行。
1. 免费并开源
相比Windows操作系统的昂贵费用,Linux操作系统免费的特点非常具有竞争优势。因为免费,所以Linux操作系统在服务器平台上拥有比Windows操作系统更广泛的用户群体。而开源的特性更是让世界范围内的优秀开发人员和着名企业为Linux贡献高质量的代码,保证Linux操作系统能够得到及时改进,从而建立了完善的软件生存环境。对比Windows,作为纯粹的商业软件,Windows不可避免的采用封闭策略,所有Windows的功能只能由微软公司自己开发和维护,这种特性导致了Windows在产品改进的及时性上、新技术应用的有效性上打了折扣。
Linux和Windows平台的横向对比,如下图:
2. 安全性
Linux操作系统因为开源的原因,代码可以被任意修改和查阅。因此,任何Linux 的漏洞都可以被数以万计的研发工程师及时发现并提交补丁进行修正。在这一点上,封闭的Windows操作系统只能靠着微软公司内部的几十名研发人员进行修正。优劣胜负,立见。我们可以用一个表格来对比Windows和Linux操作系统在安全性上的差别。如下图:
3. 性能
Linux的稳定性是由于它没有像其它操作系统一样内核如此庞大、漏洞百出。Linux与其它Unix系统和大型操作系统如VMS、IBM大型机等一样具有相同的可靠性。原因并不难以得到,系统的稳定性主要取决于系统设计的结构。连续向后兼容性使那些编程风格极差的应用软件勉强移植到Windows的最新版本,这种将就的软件开发模式极大地阻碍了系统稳定性的发展。
Linux所共享的Unix设计体系是经过长期实践考验的,Linux吸取了Unix系统近1/4世纪发展的经验,Linux操作系统体现了最先现代化操作系统的设计理念和最经得住时间考验的设计方案。最令人注目的是Linux开发源代码的开发模式,这保证了任何系统的漏洞都能被及时发现和改正。
三、数据库架构
数据库是麦塔在线培训系统运行的基础,随着平台运行时间的增长,数据量的增长也会达到海量级别。因此,一个好的数据库架构设计对于网站未来的发展起到了决定性作用。根据业务的发展,数据库的架构在不同的阶段有不同的侧重点。
第一阶段:MySQL主从架构
这是系统的初级阶段,这个阶段的重点是实现平台的重要功能,数据库架构只要能满足初期应用的需求即可。
第二阶段:按功能分配机器
这一阶段的重点是:优化表结构,索引,查询。不着急加服务器。向外扩展--按功能将数据库分开,提高内存使用率,变相增加了内存
第三阶段:为从库的读取业务增加缓存机制
随着数据量的增长,从库的读压力变的很大,从库io出现问题,增加从库几乎不能解决问题,应该想办法减少io操作。减少io操作可以采用以下办法:
- 增加机器的内存——向上扩展
- 应用层添加缓存——向外扩展
- MySql服务器配置优化——优化跟io有关系的配置信息
第四阶段:增加NoSQL服务,再次扩展。
这一阶段增加Redis作为Session缓存,减轻主库一部分写压力。
第五阶段:按功能分库
这一阶段随着网站运营不断深入,新的板块开始上线,为了减少主库io操作,按业务将数据库分成多个主从结构,将写的压力分散到多个数据库上
第六阶段:水平分表,解决单表数据膨胀的问题
这一阶段会遇到单表数据过大、运维需求增多、业务转换较大,这些问题直接导致从库的io压力直线上升。因此,将单张表拆分到多个数据库中,从而将数据尽量装
入内存,从而减轻从库的io问题。当网站规模达到这一层次的时候,数据安全问题非常突出,这时候,异地备份变得至关重要。
以上这些是在平台运行不同阶段我们会遇到的不同问题所采取的解决方案。多年的运维经验告诉我们,好的架构不是设计出来的,是逐步改进出来的!
四、系统结构
好的运行架构也需要好的平台架构,好的平台架构应该具备低耦合、高内聚的特点,因此,开发并设计一套扩展性极强、效率非常高的平台框架十分重要。如下图:这套架构中,应用层负责实现平台的所有业务逻辑,为了实现更高的运行效率和更好的扩展性,可以把应用层分成Model、View、Control、COM四个部分。
Model层负责数据库的操作,我们把数据库的脚本都写在这里,对日后的快速维护很有帮助。
View层负责将数据展示在Web页面上,采用了HTML和jQuery作为标准的前台开发语言。在View层,开发独立模板技术。将美工的设计和前端工程师开发完成的HTML页面交付产品经理审核,这些HTML页面可以直接在浏览器上运行。产品经理检查无误后,直接交给后端开发人员,开发人员直接将HTML页面复制到Views文件夹中即可,由自行开发的HTML解析引擎将HTML页面中的JSP部分解析出来。这一套模板引擎技术可以极大的增强前端工程师和后端工程师的配合效率,有效的提高了平台功能的开发速度。
Control层负责平台功能的业务逻辑。这些业务逻辑由产品经理负责规划,交给后端的研发工程师实现,最后,美工和前端工程师配合做出HTML页面,由研发工程师整合后发布。
COM层是一个独特的结构。它是平台系统结构非常强大的一种体现,它的目的是实现平台功能的扩展。根据COM接口标准,我们可以开发任意功能并对接到平台上。这种方式极大的增强了平台的扩展性和团队协作能力。让工程师在同一个系统架构下,互相协作,既保证了架构的统一性又保证了架构的灵活性。