# technology-integration **Repository Path**: douglea2/technology-integration ## Basic Information - **Project Name**: technology-integration - **Description**: 此项目技术内容为SpringBoot2+MySQL+Redis+RabbitMQ+Netty,采用前后端分离架构,使用jwt方式进行用户认证授权,已实现完整的Netty聊天功能(结合RabbitMQ),新增系统功能:接口限流及PV统计,后续还会增加其他的业务以及技术,敬请期待!完整介绍请查看项目README文档,后续会补充Wiki技术说明以及整合流程。感兴趣可以Watch、Start持续关注项目最新状态 - **Primary Language**: Java - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 3 - **Created**: 2023-09-15 - **Last Updated**: 2023-09-15 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README 项目完整教程地址: https://www.jianshu.com/c/60afa54c8d22 项目介绍: 此项目作为本人的技术整合使用,仅供参考,项目中的代码都只是简单的整合,并没有涉及到详细的业务逻辑,所以数据库或者代码的设计模式都比较简陋。 项目为纯后端项目,也就是采用前后端分离的架构,使用SpringBoot2框架进行整合(-_- 嫌弃Spring), 1. 认证与授权采用SpringSecurity方案,只提供jwt认证方式 2. 使用了双数据源进行数据读取,采用MySQL数据库 3. 使用Redis缓存数据,Redis为单节点模式,后期可能会添加主从或集群模式 4. 使用RabbitMQ搭建队列,由于没有业务逻辑,只是简单的发送消息到队列,以及实现常见的死信队列和监听等 5. 使用Netty进行客户端通信,已实现完整的聊天功能 6. 使用阿里云短信服务实现短信验证码功能 7. 还有一些杂七杂八的,慢慢阅读代码 项目说明: 由于还有很多不规范的地方,改进过后会把整合的流程以及技术说明补上。 如需咨询也可以加扣扣:1832567800, 聊天功能实现进度: 注意:客户端不要求必须使用Netty框架,传输字符即可 1. 客户端与服务端建立socket连接后需要发送token至服务器进行socket的认证,认证后服务器会返回认证结果的消息 2. 客户端A与发消息至客户端B时,需要验证socket连接是否已认证 3. 客户端认证完成后,系统会读取Rabbit未读消息队列,如果存在未读消息则将消息发送至客户端 4. A发送消息至B时,会先判断B是否在线,如果在线则直接将消息发送到B客户端,否则将消息缓存至未读队列中 5. 消息发送完之后,系统会将消息存储到durable队列中 6. 监听器监听到durable队列中有消息时,则会将该消息缓存至数据库中 短信验证码实现: 注意:短信验证码采用6位纯数字 1. 客户端请求发送短信验证码,服务端会先进行判断该号码上次发送短信时间间隔是否大于2分钟 2. 发送短信验证码成功后,会将短信验证码缓存到Redis中,方便下次验证 3. 短信验证码的有效期为5分钟,利用Redis的过期功能实现 系统功能: 1. 使用Redis进行接口限流,利用zset数据类型解决,具体参照代码 2. 使用Redis统计系统请求PV量