# UT-APP **Repository Path**: fork-gitee/UT-APP ## Basic Information - **Project Name**: UT-APP - **Description**: 校园组队平台 后端代码(开发阶段) - **Primary Language**: Java - **License**: GPL-3.0 - **Default Branch**: ut-rebuild - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 6 - **Created**: 2020-11-26 - **Last Updated**: 2022-06-24 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # UT-APP
#### 特别说明 - 由于开发者是学生&都在实习&都在准备春秋招(目前就我一个闲人了),加上最近要学一些前端知识,所以进度会比较随缘。 - 考虑到该版本比较吃硬件,SpringBoot单体版本可见master分支 #### 介绍 & 各种杂图 - 参考我的博客链接:[介绍文档](https://wenjie.store/archives/ut%E7%9A%84%E4%BB%8B%E7%BB%8D%E5%92%8C%E6%9D%82%E5%9B%BE) #### 实现选型 - 考虑到数据的量级只是一个学校,同时为了降低软件部署的成本,目前仅打算使用MySQL、redis实现后端,最终目标是希望一台2G的服务器+七牛cdn就能流畅运行应用(之后会考虑兼容其它cdn,如阿里oss等) - 日后等熟悉更多开源组件的原理后,会增加不同的框架,开不同的分支来学习。 #### 开发者须知 - 统一使用Gitee:https://gitee.com/wenjie2018/UT-APP (集成了CI/CD) - 代码风格:风格约束配置请参考 -> https://halo.run/archives/code-style 不懂的也可以问我。 - 提交PR: 提交的PR后都会经过jenkins的编译、打包测试,通过了会自动在PR下留言测试结果, **请务必保证测试结果通过** (现阶段PR里面一个失败一个成功,可以参考下)。 - 自定义环境:如果你因为某种原因,需要更改`bootstrap.yml`的一些配置,比如开启debug,那么你完全可以在本地的`{user.home}/.ut-xxx(对应模块名称)`目录下创建`bootstrap.yml`文件,它可以有选择性地覆盖项目中默认的配置项。 #### 预期架构图  #### 服务结构 ``` ut ├── ut-common -- 一些公共类 ├── ut-bbs-service -- 提供给前端的接口 ├── ut-chat-service -- 推送、聊天(未完成)服务,核心就是Netty搭建的websocke服务,目前只支持启动单例,等以后支持分布式部署才可支持多实例启动 ├── ut-service-center -- mysql、redis相关的服务都在这里 ├── ut-gateway -- 主要是用于负载ut-bbs-service、ut-chat-service,其中如何负载websocket是目前的难点之一。 ``` #### 计划实现 - websocket实时推送消息(Netty实现)...✔ - 组队...✔ - bbs...✔ - 校园活动发布/订阅...✔ - 用户个人信息的完善(绑定邮箱等)...✔ - 后台管理可动态修改一些配置,如oss配置等...✔ - 将mysql中指定表的数据同步到es,不依赖canal等中间件...✔ - es漏同步的补偿方案...✔ - 以nacos+dubbo+gateway为辅助,将消息推送拆出来(50%)...ing - es替代部分sql查询(50%)...ing - 增加邮箱验证码自动注册、登录,目的是为其它端登录做准备(0%)...ing - 完善简易权限框架(10%)...ing (到此再稳定下现有的功能后就相当于第一个Release版本了,大概~) --- - 聊天...ing(研究方案中,在上面的介绍文档中补充了IM服务架构和时序图) - 校园活动内容支持markdown...ing(待讨论) - 上传的图片支持存到本地磁盘...ing(待讨论) - 举报机制..ing(计划中,因为客服功能的存在,有可能不需要) - 活动开始前一天或一段时间,发送邮件推送提醒...ing(待讨论) - ...更多 以上功能优先级从上至下递减 #### 问题清单 - 推送模块问题 - 因为负载均衡的原因,用户的websocket长连接会连到不同的ut-chat-service实例上,那么推送的时候如何找到用户连接的实例? - 保存用户所在的实例要用什么保存? - 找到用户所在实例后,如何定位到要调用的接口,要通过什么协议调用? - 如果推送 or 接受的消息是聊天消息(不可丢),要怎么保证消息一定送达 or 一定被处理? - 数据库模块问题 - es暂时未整合。 - ~~同步组件暂时不知道选哪个~~ - 放弃使用canal中间件同步,改用自己监听binlog增量同步。 #### 参与贡献 1. Fork 本仓库 2. 新建 UT_APP_XXX 分支 3. 提交代码 4. 新建 Pull Request #### 鸣谢 - 特别感谢[@施晓权](https://gitee.com/sxq2017)提供的服务器,用于部署jenkins等应用。