# FdroidRepository ## 主要功能 - 基于邮件激活的注册方式 done - 基于MD5加密与加盐的密码存储方式 done - 登录状态检查,为游客和已登录用户展示不同界面与功能 done - 不同用户的权限控制和网站数据统计(UV、DAU) done - 管理员可以查看网站数据统计和网站监控信息 done - 用户上传头像 - 发布帖子、评论帖子、热帖排行、发送私信与敏感词过滤等功能 done - 点赞、关注与系统通知功能 done - 全局搜索帖子信息的功能 - 上传和下载apk done - 爬取Fdroid的APP图标和信息介绍 done - 提供实时的热门app榜单 done - 构建fdroid app构建流水线 - 开发者配置riscv的app构建文件,实现负载均衡模块,执行构建流水线,实时展示构建日志,kafka异步发送邮件通知构建完成 (这里可以通过继承xxl-job实现) ## 核心功能实现 - 使用无状态的jwt进行鉴权 - 使用Spring Security实现权限控制,解决HTTP无状态的缺陷 - 使用Redis集合数据类型解决踩赞、相互关注功能,保证数据正确性。使用Redis的ZSet保存关注列表 - 使用字典树优化敏感词过滤的时间复杂度 - 使用Kafka作为消息队列,实现系统通知和解耦 ## TODO - 爬取Fdroid的APP图标到oss上 - 完成訂閲apk更新的功能 - 使用布隆过滤器屏蔽拉黑的ip下载应用 - 使用Redis实现一致性哈希算法,使用Redis的ZSet实现用户综合评分 - 使用kafka收集用户下载app量,使用kafka解耦构建流水线,当流水线构建完毕时通过kafka将消息通知到邮箱 - 使用kafka+themeleaf实现订阅app更新功能 - 加快下载速度,断点续传 - Redis的HyperLogLog存储每日UV、Bitmap存储DAU,实现网站数据统计 - 使用Elasticsearch + IK分词插件实现全局搜索功能 - 使用分布式定时任务Quartz定时计算或者XXL-job计算APP热度,实现热门APP排行 - Caffeine本地缓存 + Redis分布式缓存的多级缓存,提高服务器性能 ## 评论点赞设计 - 用Redis的set结构存储点赞情况,key:postId,value:set ## app下载量统计 ### 方案一 使用Redis的hashmap存储 appId->downloads的映射,用户每次下载使用incr命令,使用定时任务,每隔一段时间将下载量同步到数据库 ### 方案二 使用kafka采集下载日志信息,包括[appId][userId][downloadTime]信息