⽜客论坛的笔记

编程入门 行业动态 更新时间:2024-10-13 04:19:48

⽜客论坛的<a href=https://www.elefans.com/category/jswz/34/1770047.html style=笔记"/>

⽜客论坛的笔记

项目描述:


        一个基本功能完整的论坛项目。项目主要功能有: 基于邮件激活的注册方式,基于MD5加密与加盐的密码存储方式,登录功能加入了随机验证码的验证,实现登陆状态检查、为游客与已登录用户展示不同界面与功能。支持用户上传头像,实现发布帖子、评论帖子、发送私信与过滤敏感词等功能。实现了点赞,关注与系统通知功能。

(主要工作)项目角色:


后端各部分模块开发;数据库表的设计

核心功能具体实现:

1.通过对登录用户颁发登录凭证,记录登录用户登录状态,使用拦截器进行登录状态检查,解决了http无状态带来的缺陷,保护特定需登录使用的资源。
2.对频繁需要访问的数据,如用户基本信息使用Redis作为本地缓存,提高服务器性能。

3.使用Redis的集合数据类型来解决踩赞、相互关注功能,采用事务管理,保证数据的正确,采用“先更新数据库,再删除缓存”策略保证数据库与缓存数据的一致性
4.使用Kafka作为消息队列,在用户被点赞、评论、关注后,放入异步队列,以系统通知的方式推送给用户,对系统进行解耦、削峰。

项目收获:


1.熟悉了在Spring Boot框架下开发项目的操作流程
2.熟悉了Redis的使用场景与应用Redis的好处。
3.了解了Kafka作为消息队列的基本使用,了解了Kafka在项目中的作用

技术栈

Spring Boot、SSM、Redis、Kafka、ElasticSearch、Spring Security、Quatz、Caffeine

项目亮点

1.项⽬构建在Spring Boot+SSM框架之上,并统⼀的进⾏了状态管理、事务管理、异常处理;

2.利⽤Redis实现了点赞和关注功能,单机可达5000TPS;

3.利⽤Kafka实现了异步的站内通知,单机可达7000TPS;

4.利⽤ElasticSearch实现了全⽂搜索功能,可准确匹配搜索结果,并⾼亮显示关键词;

5.利⽤Caffeine+Redis实现了两级缓存,并优化了热⻔帖⼦的访问,单机可达8000QPS。

6.利⽤Spring Security实现了权限控制,实现了多重⻆⾊、URL级别的权限管理;

7.利⽤HyperLogLog、Bitmap分别实现了UV、DAU的统计功能,100万⽤户数据只需*M内存空间;

8.利⽤Quartz实现了任务调度功能,并实现了定时计算帖⼦分数、定时清理垃圾⽂件等功能;

9.利⽤Actuator对应⽤的Bean、缓存、⽇志、路径等多个维度进⾏了监控,并通过⾃定义的端点对数据库连接进 ⾏了监控。

如何记录⽤户的登陆状态?

        ⽤户登录之后,会给⽤户创建⼀个ticket,并放⼊cookie返回给浏览器,下⼀次再访问时,浏览器带上 cookie(ticket),服务端可以根据cookie确定⽤户的登录状态,以及通过ticket查询到⽤户id,通过⽤户id,就 可以知道当前⽤户的具体信息了,把user放⼊model,再由模板引擎渲染后,返回HTML给客户端浏览器。显示⽤户的登录信息,是所有的请求都要⼲的事,因此这个业务逻辑由拦截器实现!!

cookie是什么?和session有什么区别? cookie和session的关系 

为什么⽤Redis

1、Redis是⼀种基于键值对的NoSQL数据库,它⽀持多种数据结构: 字符串(String)、哈希(hashs)、列表(lists)、集合(sets)、有序集合(sorted sets)等

2、Redis将所有的数据都存在内存中,所以它的读写性能⼗分惊⼈。 同时,Redis还可以将内存中的数据以快照或者⽇志的形式保存到硬盘上,以保证数据的安全性。

3、缓存、排⾏榜(热⻔帖⼦)、计数器、社交⽹络(点赞数)、消息队列等。

如何优化登陆模块

1.使用Redis存储验证码
                验证码需要频繁的访问与刷新,对性能要求较高
                验证码不需永久保存,通常在很短的时间后就会失效。
                分布式部署时,存在Session共享的问题

2.使用Redis存储登录凭证
                处理每次请求时,都要查询用户的登录凭证,访问的频率非常高.

3. 使用Redis缓存用户信息
                处理每次请求时,都要根据凭证查询用户信息,访问的频率非常高。

1. 使⽤Redis存储验证码的步骤

        当⽤户点击刷新验证码时,服务端⾸先给当前需要登陆的游客,设置⼀个随机字符串(kaptchaOwner),⽤于标识 当前这个游客,然后将随机字符串存⼊到cookie中,返回给浏览器,然后服务端的redis保存 key:随机字符串, value:验证码 。

        接着⽤户输⼊⽤户名,密码,验证码,再次点击登陆时,服务端会从cookie中拿到kaptchaOwner,通过它,可以从 Redis中得到正确的验证码,然后与⽤户输⼊的验证码做⽐较,看是否⼀致。

如何⽤kafka做系统通知?

更多推荐

⽜客论坛的笔记

本文发布于:2023-12-06 21:27:35,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1668980.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:笔记   论坛

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!