在线培训系统平台架构简介
一、技术架构
在线培训系统完全基于云架构进行设计、开发、部署。平台部署在Linux 操作系统上,采用目前运行稳定,安全性很高的JAVA语言开发,使用开源的MySQL数据库存储数据,可以在平台上部署Redis 、Memcache、MangoDB、Node.js 、Hadoop等著名的第三方开源软件,支持万人以上规模的用户并发访问。整体上看,这种在线培训平台具有速度快、稳定性强、安全性高、易于扩展的特点。下图是在线培训系统的架构图:
二、架构特点这种架构具有安全性高、稳定性强、运行速度快的特点,从一台服务器到集群服务器再到分布式部署,这种云计算平台都可以轻松胜任。下面详细介绍下平台架构的特点:
操作系统
操作系统采用Linux 作为整个平台的操作系统。Linux 操作系统自诞生以来,一直以稳定性、开放性著称。对比Windows 操作系统,Linux 操作系统拥有相当多的优点,这些优点可以帮助我们更好的对平台进行管理,保证平台能够高效、安全、稳定的运行。
1.免费并开源
相比Windows 操作系统的昂贵费用,Linux 操作系统免费的特点非常具有竞争优势。因为免费,所以Linux 操作系统在服务器平台上拥有比Windows 操作系统更广泛的用户群体。而开源的特性更是让世界范围内的优秀开发人员和著名企业为Linux 贡献高质量的代码,保证Linux 操作系统能够得到及时改进,从而建立了完善的软件生存环境。对比Windows,作为纯粹的商业软件,Windows 不可避免的采用封闭策略,所有Windows 的功能只能由微软公司自己开发和维护,这种特性导致了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 操作可以采用以下办法:
- 增加机器的内存——向上扩展 - 应用层添加缓存——向外扩展
- MySql 服务器配置优化——优化跟 io 有关系的配置信息
第四阶段:增加 NoSQL 服务,再次扩展。
应该想办法减少 io
这一阶段增加Redis 作为Session 缓存,减轻主库一部分写压力。第五阶段:按功能分库
按功能分库
这一阶段随着网站运营不断深入, 新的板块开始上线,
为了减少主库 io 操作, 按业务将数据库分成多个主从结构,
将写的压力分散到多个数据库上
第六阶段:水平分表,解决单表数据膨胀的问题
水平分表…扩展读操作
「QUery PaSer
ReSUSt SOrt
I QUery router
ReSUIt merge IOad blancer COnneCtiOn management
HA management ?
??
PrOtOCOl
业务 1 DB SOUrCe Iayer
I ∣r ?
pk:0-50000
pk :50000-100000
Write 2
水平分表…扩展写操作
O
O
Λ
I
ιr?ιι
pk:0- 50000 : pk 50000-100000 pk:AWi的
这一阶段会遇到单表数据过大、 运维需求增多、 业务转换较大, 这些问题直接导致从库的 io 压力直线上升。 因此, 将单张表拆分到多个数据库中, 从而将数据尽量装入内存, 从而减轻从库的 io 问题。 当网站规模达到这一层次的时候, 数据安全问题非常突出,这时
候,异地备份变得至关重要。
双主结构(对称)
选择性同步
A地前台业务1
双主
§
B地前台业务
1
主键偶数递增
246...
以上这些是在平台运行不同阶段我们会遇到的不同问题所采取的解决方案。多年的运维经验告诉我们,好的架构不是设计出来的,是逐步改进出来的!
四、系统结构
好的运行架构也需要好的平台架构,好的平台架构应该具备低耦合、高内聚的特点,因此,开发并设计一套扩展性极强、效率非常高的平台框架十分重要。如下图:
这套架构中,应用层负责实现平台的所有业务逻辑,为了实现更高的运行效率和更好的扩展性,可以把应用层分成Model 、View、Control 、COM四个部分。
Model 层负责数据库的操作,我们把数据库的脚本都写在这里,对日后的快速维护很有帮助。
View 层负责将数据展示在Web页面上,采用了HTML和jQuery 作为标准的前台开发语言。在View 层,开发独立模
板技术。将美工的设计和前端工程师开发完成的HTML页面交付产品经理审核,这些HTML页面可以直接在浏览器上运
行。产品经理检查无误后,直接交给后端开发人员,开发人员直接将HTML页面复制到Views 文件夹中即可,由自行开