基于 Laravel 5.6 重构的新版 Laravel 学院正式发布了!


428d8a6160d0c8f6f199a9ffd5fb8125.png

经过近一个月时间紧锣密鼓的重构开发,基于 Laravel 5.6 内核的新版本 Laravel 学院如期出现在大家面前,虽然正式上线过程中出了一些小意外,但好在有惊无险,这些问题一一被处理掉,这充分说明了一个道理:上线有风险,测试需谨慎!在正式给大家呈现新版本功能之前,先对近两天出现的学院崩溃问题做一个简单的复盘:

  • 7月17号(昨天)学院首页502,不能访问的原因,是负载均衡配置域名有问题导致的;
  • 7月18号(今天)学院访问速度很慢,这是因为为了节省带宽成本,学院选择的是1M带宽,静态资源如CSS、图片很耗带宽,在较大的访问量下,网卡被打满,导致大家无法进入,故而速度很慢,图片CDN处理开发过程中已经想到,没想到后来CSS、JS等静态文件成了瓶颈,所以也一并通过CDN访问,这样下来,学院瞬间恢复正常访问。
  • 搜索功能不可用,原因是新版学院基于迅搜作为搜索引擎,但是异步队列构建索引时由于权限问题,写入不了索引文件,所以查询一直为空,通过排查日志发现问题处理后,搜索功能恢复。
  • GitHub 登录异常问题则完全是代码bug了

现在的 Laravel 学院除了具备之前的功能和性能外(这充分证明了 Laravel 通过优化也能达到等同于静态页面缓存的性能),还新增了如下功能模块:

  • 用户系统:注册、登录、发布主题、提问、评论、积分等
  • 问答模块:将之前的 forum.laravelacademy.org 一并重构整合到新学院里,实现用户体验的一致性

在支持这些上层功能的底层,学院君使用了以下框架&扩展包:

  • Laravel 5.6 最新版作为底层驱动框架
  • Laravel Horizon 作为队列系统实现方案(基于Redis)
  • Laravel Notification 作为通知系统解决方案(数据库+邮件)
  • Laravel Event 系统解耦业务模块
  • Laravel Cache 作为缓存解决方案(基于Redis)
  • Laravel Scout 作为全文搜索解决方案(基于Xunsearch引擎)【讲解教程
  • 通过自带的认证脚手架代码 + Laravel Socialite 作为用户认证解决方案
  • 基于 Laravel 自带的 Policy 机制实现简单的权限管理
  • 通过 Laravel 自带的任务调度管理机制实现定时任务执行
  • 系统架构使用了改良的MVC架构:控制器->服务层->模型->视图 
  • 使用 Laravel Admin 扩展包快速实现管理后台,选择它的原因是对系统侵入性最小,也够用

除此之外还有一些其他的有用的工具包:

前端用到的值得推荐的组件:

除此之外还有一些与语言无关的技术方案分享给大家:

  • 通过CDN加载静态资源可以极大提高网站吞吐,用低配网卡撑起更大访问量
  • 学院目前通过七牛云存储的镜像存储+CDN方案实现静态资源的云储存和访问
  • 学院目前后台通过两台阿里云ECS驱动,通过Nginx实现简单的负载均衡
  • Session 存储在 Redis 里面从而实现两台机子的共享
  • 图片资源通过 NFS 实现共享,解决存储在不同机器的图片在同一域名下的访问问题
  • 相关文章推荐基于余弦定理算法生成

以上,暂时就写这么多吧,以后想起来了再补充一些细节,目前会在这种系统架构下运行一段时间并进行功能迭代。也欢迎大家参与到新学院的建设中来,遇到问题及时向我反馈。


Vote Vote Cancel Collect Collect Cancel

<< 上一篇: 站在新起点上的新规划 —— 写在开学之际

>> 下一篇: Laravel 学院今天凌晨四点到上午十点不能访问问题定位及修复细节通报