Skip to content

SURA907/koa-blog-backstage

Repository files navigation

  • 论坛系统的后端部分

毕业设计打算做一个前后端分离的论坛
这个仓库放后端部分
readme暂时占坑,日后追加内容
实际入口文件为:bin/server.js


  • 技术选型

web框架:koa

express之后的下一代web框架

数据库:mongodb

文档型nosql

缓存:redis

key value型nosql
对文章和用户数据进行缓存,减少磁盘访问
使用setNX实现分布式锁防止雪崩问题

即时通信:socket.io

面向实时 web 应用的 JavaScript 库,主要使用websocket协议,实现即时通讯十分方便


  • push日志

记录一下开发过程

  • 2019-08-20

FindReourceService中重构缓存策略
之后将移除原本的缓存策略代码

  • 2019-08-04

增加USE_HTTPS配置项
修改初始化流程

  • 2019-06-08

将用户权限鉴定从routes中抽离,放进controller中

  • 2019-04-05

给出config模板示例
note: 最近在实习,这边暂时不加入新的功能

  • 2019-02-15

日志收集改用koa-log4
之前自己实现的日志中间件太过儿戏了
note: 之前一直不怎么注重日志部分,看来得补补了

  • 2019-02-13

前端对接基本完成,放到线上看一看效果吧
部署地址: blog.sura907.com

  • 2019-02-10

使用websocket的简易聊天室完成

原定一篇文章对应一个聊天室,但考虑到SURA手里的服务器应该架不住,故改为全站仅一个
考虑到服务器延迟等问题,聊天信息不存入数据库

note: emmm,前端对接中......

  • 2019-01-31

评论功能完成
note: 评论功能和前端的整合也基本完成,差不多该开始啃即时通讯这块骨头了(希望别太难啃)

  • 2019-01-30

增加comment controller,评论相关功能推进中...
note: 增删改查,没什么需要记录的

  • 2019-01-29

修复文章编辑功能中的一个小bug
这个bug是由于token解析模块的改动引起的,目前已经大体修复完成
note: 没什么需要记录的

追加: 更改目录结构, 规范目录命名, 将中间件(middlewares)和工具(tools)分开放置

  • 2019-01-28

修复了缓存策略中用于解锁并刷新资源的lua脚本
之前的版本使用模板字符串生成脚本,特殊符号会导致程序异常
note: emmm(╯‵□′)╯︵┻━┻

  • 2019-01-27

减少放入token中的信息,缩减token体积
note: 没什么需要记录的

  • 2019-01-23

之前在本地测试的时候,向一篇文章同时发起3000次请求
发现极少部分请求越过了缓存和分布式锁,直接去查询了数据库
分析之后发现问题出在解锁并刷新缓存的lua脚本上
这个lua脚本中先正常解锁,然后刷新缓存数据
解锁完成到数据刷新完成的这一段时间内,请求可以直接上锁之后访问数据库
总体来说锁应该在缓存刷新完成之后解除
略微修改lua脚本
note: 酸爽(╯‵□′)╯︵┻━┻

  • 2019-01-20

处理了邮箱地址大小写不敏感的问题
note: 将邮箱地址全部转换为小写,防止同一邮箱被重复注册;前后端整合过程中确实能发现许多问题

  • 2019-01-18

处理因为model字段重命名导致的一些小问题
note: 今日没什么需要记录的

  • 2019-01-17

稍微修改一下model的命名(之前的命名实在惨不忍睹)
关于 '错误捕获' 模块的修改(/tools/errHandle.js)

之前操作未成功会返回相关错误的http状态码
这种方式会导致前端无法顺利获取错误提示信息
故先修改为即使出错依旧返回200,前端通过返回信息中的code和status判断操作是否成功

略微修改跨域处理模块(/tools/resourceSharing.js)

之前对OPTIONS请求的处理有失妥当,OPTIONS请求会导致koa-jsonwebtoken模块抛出401
修改为检测到OPTIONS请求直接设置相应响应头,并返回200

note: 还好关于'错误处理'和'跨域支持'在早期就完全抽出来了,修改起来比较省力o( ̄▽ ̄)ブ

  • 2019-01-05

缓存策略定型
note: 以后如果没有出现致命错误就不再修改了,当前版本对于毕设来说足够了

  • 2019-01-01

2019年的第一天,依旧在折腾缓存策略
note: 这种挖东墙补西墙的感觉真的是酸爽::>_<::

  • 2018-12-31

配置jsonwebtoken,完成用户登录
又又又又修改redis缓存策略,这次主要针对资源更新部分
note: 看来缓存策略这一部分真的是比较难啃,感觉这个版本依旧有问题,任重道远(╯‵□′)╯︵┻━┻

  • 2018-12-29

完成用户注册功能
note: 今日没什么需要记录的

  • 2018-12-28

配置邮件发送服务

用网易免费邮箱发的邮件几乎都直接被扔进垃圾箱了(╯‵□′)╯︵┻━┻

note: 用户相关功能正在推进

  • 2018-12-27

又又又一次修改redis缓存策略

经过此次修改,提高redis缓存策略泛用性
之前的redis缓存策略与controller耦合较高,且仅针对文章
鉴于使用token机制需要频繁检测用户信息,故决定之后对用户信息也进行缓存

用户相关功能也可以起步了o( ̄▽ ̄)ブ
note: 目前毕设开发进度正常,阿门

  • 2018-12-09

再次对redis锁及缓存策略做出修改::>_<::
将锁的解除和资源数据的刷新用lua脚本封装到一起
防止在解锁成功后由于 GC pause 等原因造成线程阻塞后 再去刷新数据造成缓存和mongo数据不一致
note: emmmmmm,说什么好呢,这次的锁和缓存策略把我 '管脑袋不管屁股' 的一面给彻底暴露出来了(明明之前藏的那么辛苦)(╯‵□′)╯︵┻━┻

  • 2018-12-07

昨天写的哪个缓存策略果然不能用/(ㄒoㄒ)/~~
锁的实现有一些问题
今天可算是把缓存策略完善了
note: 之后会总结一下的

  • 2018-12-06

终于整好文章的redis缓存策略了
得找个时间压力测试一下,验证redis锁是不是在正常干活
note: 我这种'管脑袋不管屁股'的写缓存策略实在是煎熬,功能勉强实现,但代码烂的出奇(╯‵□′)╯︵┻━┻

  • 2018-12-05

增加跨域支持
前后端开始整合,该'双线作战'了

  • 2018-12-01

规范数据库配置(/config.js)
略微修改http错误处理模块
增加access日志模块
note: 后端骨架差不多成型,该开始写前端了

  • 2018-11-29

分离router和controller
note: 之前都是把业务逻辑写在router中的,这次把它分离开来;就目前看来,我写的果然还是'玩具代码'

  • 2018-11-28

嗯,明天开始写


  • 以上,合掌

About

论坛系统的后端部分

Resources

Stars

Watchers

Forks

Packages

No packages published