XXX大学校园论坛,不仅实现了基本的注册、登录、发帖、评论、回复、私信等功能,同时使用前缀树实现敏感词过滤;使用 Redis 实现点赞与关注;使用 Kafka 处理发送评论、点赞和关注等系统通知;使用 Elasticsearch 实现全文搜索,关键词高亮显示;使用 wkhtmltopdf 生成长图和 PDF;实现网站 UV 和 DAU 统计;并将项目部署到云服务器。
用户类型 | 用户名 | 密码 | 权限 |
---|---|---|---|
普通用户 | aaa | aaa | 无权限 |
版主 | nowcoder21 | 123456 | 置顶、加精权限 |
管理员 | nowcoder11 | 123456 | 置顶、加精、删帖权限 |
技术 | 链接 | 版本 |
---|---|---|
Spring Boot | https://spring.io/projects/spring-boot | 2.4.3 |
Spring | https://spring.io/projects/spring-framework | 5.3.4 |
Spring MVC | https://docs.spring.io/spring-framework/docs/current/reference/html/web.html#spring-web | 5.3.4 |
MyBatis | http://www.mybatis.org/mybatis-3 | 3.5.1 |
Redis | https://redis.io/ | 5.0.3 |
Kafka | http://kafka.apache.org/ | 2.7.0 |
Elasticsearch | https://www.elastic.co/cn/elasticsearch/ | 7.9.3 |
Spring Security | https://spring.io/projects/spring-security | 5.4.5 |
Spring Quartz | https://www.baeldung.com/spring-quartz-schedule | 2.3.2 |
wkhtmltopdf | https://wkhtmltopdf.org | 0.12.6 |
kaptcha | https://github.com/penggle/kaptcha | 2.3.2 |
Thymeleaf | https://www.thymeleaf.org/ | 3.0.12.RELEASE |
MySQL | https://www.mysql.com/ | 5.7.17 |
JDK | https://www.oracle.com/java/technologies/javase-downloads.html | 1.8 |
- 注册
- 邮件发送
- 验证码
- 登录
- 修改密码
- 敏感词过滤
- 发布帖子
- 我的帖子
- 帖子详情
- 评论
- 私信
- 统一异常处理
- 统一日志处理
- 点赞
- 关注
- 系统通知
- 搜索
- 权限控制
- 置顶、加精、删除
- 网站统计
- 定时执行任务计算热门帖子
- 生成长图
- 单元测试
- 监控
- 使用 Redis 的 set 实现点赞,zset 实现关注,并使用 Redis 存储登录ticket和验证码,解决分布式 Session 问题,使用 Redis 的高级数据类型 HyperLogLog 统计 UV (Unique Visitor),使用 Bitmap 统计 DAU (Daily Active User)。
- 使用Redis Cell模块对用户发帖进行限流,防止恶意灌水。
- 使用 Kafka 处理发送评论、点赞、关注等系统通知、将新发布的帖子异步传输至Elasticsearch服务器,并使用事件进行封装,构建了强大的异步消息系统。
- 使用Elasticsearch做全局搜索,增加关键词高亮显示等功能。
- 热帖排行模块,使用本地缓存 Caffeine作为一级缓存和分布式缓存 Redis作为二级缓存构建多级缓存,避免了缓存雪崩,同时使用使用压测工具测试优化前后性能,将 QPS 提升了4.1倍 (5.5/sec -> 22.5/sec),提升了网站访问速度。
- 使用 Quartz 定时更新热帖排行。
- 使用 Spring Security 做权限控制,替代拦截器的拦截控制,并使用自己的认证方案替代 Security 认证流程,使权限认证和控制更加方便灵活。