在线教育平台、网校搭建、远程教育平台搭建技术选型(268教育)

一直接触网校几年的时间。从技术开发到网校的运营感觉有自己的一套理解。

在线教育平台搭建技术是一方面,对如何运营,如何搭建适合很多公司他们自己的网校这个更重要。不需要多牛逼,需要最适合。

小广告:268教育(268xue):http://www.268xue.com我们专做网校搭建平台,别喷哈。


写在前面的牢骚话:

越来越多的线下机构将目光投向在线教育网校,因为线下发展已经到一个瓶颈,而且越来越多的学员需要在网上学习。

如果线下的培训机构不及时改变观念,将来打败自己的不是别人,是自己。

我以前的老东家做的非常好,线下每年2个亿的流水,趁线下的优势在,大投入迅速的推出网校。

网校跟线下既是竞争又是合作。

宁愿自己的网校把自己的线下吃掉,也不要让别人的网校把自己的线下打垮!

做一个产品方面贴近用户的需求。根据用户的要求二次定制.优势再扩大化.

做技术的我们从技术角度看一下。网站的架构是否能达到市面网校的要求。欢迎各种拍砖。


一、网站架构定位:

 1.针对网校数据,数据量不会很大,用户一般年内达到10W的网校就赚大发了。。

1年内达到千万级别的数据量就算很大了。

 2.针对大公司数据量可能膨胀,做好数据扩展的准备。

二、网站的基本考虑点,以及基本的技术选型

1)Web前端系统

页面的静态化以及图片的托管。

一说静态化,可能都用到模版引擎。freemarker velocity.

针对网校的系统,商品页面不是重点。准备用nginx转发。做伪静态。用vanish缓存。

同时针对网校很多页面靠大图片累加的。图片最好是走CDN的。看公司的财力是否用了。小公司直接走自己的带宽了。


2)负载均衡系统.

只能采用软件了。硬件伤不起,不是政府。选择nginx

在线教育平台、网校搭建、远程教育平台搭建技术选型(268教育)_第1张图片


3)数据库集群系统

数据库采用mysql.压力大时可以增加服务器从库的数量。做好读写分离。

1主多从,从库读取时随机读取,此实现方案一、在musql端做,给应用1个虚拟IP。

可惜这个是运维做的,不了解细节。方案二:代码端实现读写的分离:

实现原理:自己写拦截器。拦截所有service,根据service的name来决定是读库还是写库操作。拦截器的目的是覆盖

获取数据库的key方法,项目连接数据库只要key改变,就是所有的数据库改变了。

伪代码:

if(写操作)return 写库的key

if(读操作)return 读库的list中随机返回1个key.

注意:spring提供了可以覆盖获取数据库key的方法。ibtais.mybatis.hibernate.jdbctemplate都可以用的。目前项目中只用到

ibtais、mybatis、jdbctemplate的实现。都是一样的。hibernate工作了几年一直没机会用到。不会用~

在线教育平台、网校搭建、远程教育平台搭建技术选型(268教育)_第2张图片

4)缓存系统

喜欢memcache。不是大的项目。别人所说的一致性哈希也用不到。

缓存需要多台的话 可以设置多台。自己代码实现这个不麻烦应该。网上很多。

至于ibatis,mybatis自带的缓存,本人感觉不是很实用于web架构的。只有1个应用的项目到时挺适合的,用着也方便。

在线教育平台、网校搭建、远程教育平台搭建技术选型(268教育)_第3张图片

5)针对项目中计数器,微博回复,文章浏览数,好友,粉丝等的实现。

memcache+redis两者配合。


6)代码实际技术选型:


1.MVC Framwork: SpringMVC3.0 Restful的风格越来越风行,试试丢掉复杂的struts2.

2.Layout :以前使用struts2时用tiles.配置太啰嗦了,SiteMesh2简洁方便,首选。

3.Javascript Library:jquery。没什么其他说的。

4.Cache :memcached 客户端Spymemcached,自己加下重试机制。

5.Security Framework: 业务不复杂Apache Shiro,针对用户需要自定义的。自己编写拦截器对URL进行权限拦截

6.JMS:ActiveMQ

7.Json:GSon

8.数据库:mysql.NoSql:redis














你可能感兴趣的:(网络杂谈)