个人分享社区
项目描述:
本项目采用 SpringCloud+Vue 前后端分离开发,是一个面向个人用户的分享社区。主要功能包括:登录及退出、活动空间的创建、内容的发布、评论、数据的检索、热点数据的推送、消息的推送、用户实时交流等功能。
技术栈:SpringCloud、SpringMVC、Spring Security、Mybatis-Plus、Mysql、Redis、Rabbitmq、ElasticSearch、Netty、Nginx、JWT、Lua、Vue、WebSocket 等。
服务划分及技术亮点:
认证服务:
采用 Spring Security+JWT 完成用户登录认证以及令牌派发,令牌使用双 Token 机制,提高安全性。
网关服务:
使用 GateWay 进行 Token 认证,根据路由对请求进行转发,并保存用户消息到请求头。
用户服务:
AOP + 自定义注解完成数据的脱敏处理(使用前缀树完成敏感词脱敏的操作)和控制器访问日志的记录(使用线程池对进行日志进行异步记录);使用拦截器对用户进行合法性校验;通过 MQ 对用户服务与积分服务之间的服务调用进行解耦,对于服务调用产生的分布式事务,采用最终一致性方案,发送端采用 MQ 消息确认 Confirm 机制,接收端采用手动 ACK 模式保证消息的可靠传输;使用 Redis+Lua 脚本消除用户上传图片的临时性,避免超时删除;使用 Redis 缓存热点数据,同时通过在过期时间加入随机因子解决缓存雪崩问题,通过设置空值解决缓存穿透问题,通过使用分布式锁 Redission 解决缓存击穿问题;在对数据进行修改后,采用延时双删的策略保证缓存一致性;通过事务同步管理器保证对数据的修改落盘后向搜索服务发送数据的同步消息。
消息服务:
采用 Netty 框架结合 MVC 架构进行开发,向在线用户推送系统消息以及用户消息。
积分服务:
通过监听来自用户服务对积分的操作消息实现对用户积分的修改,同时使用防重表保证操作的幂等性;采用定时任务 Spring Task 对每日积分赠送活动进行上架,同时删除积分活动过时的 key;采用接口隐藏技术,通过对积分地址重写为每个用户提供唯一的接口,可以防止网络爬虫。
搜索服务:
使用 ElasticSearch 进行全文检索,服务启动时通过 OpenFiegn 拉取空间信息和内容信息存储到 ElasticSearch 服务器,同时采用 MQ 监听数据信息的变更。
文件上传服务:
采用 MinIO 作为内容服务器存储用户上传的图片,同时使用 redis 为图片设置过期时间,采用 Redis 的发布订阅机制实现图片相关 key 过期的监听,清除 MinIO 的临时图片。
项目部署:
采用 Nginx 部署前、后端工程,同时采用 Nginx+Lua 对部分非法请求进行拦截。
SpringCloud开发的微服务项目
最新推荐文章于 2024-06-06 00:15:00 发布