跳至主要內容
ikun伙伴匹配系统优化

ikun伙伴匹配系统优化

以下优化均是在用户量为100万的情况下进行:

分布式Session登录

⽤户登录:使⽤ Redis 实现分布式 Session,解决集群间登录态同步问题;并使⽤ Hash 代替
String 来存储⽤户信息,节约了 xx% 的内存并便于单字段的修改。

节省内存的原因是不⽤保存序列化对象信息或者 JSON 的⼀些额外字符串

使⽤ Easy Excel 读取收集来的基础⽤户信息,并通过⾃定义线程池 + CompletableFuture 并
发编程提⾼批量导⼊数据库的性能。实测导⼊ 100 万⾏的时间从 xx 秒缩短⾄ xx 秒。(需要
⾃⼰实际测试对⽐数据)


全民制作人ikun大约 5 分钟项目实战ikun伙伴匹配系统项目实战ikun伙伴匹配系统
ikun伙伴匹配系统5

ikun伙伴匹配系统

组队功能

需求分析

理想场景:

和别人一起参加竞赛,做项目,可以发起队伍或者加入别人的队伍

用户可以创建一个队伍,设置队伍的人数,队伍名称(标题),描述,超时时间

队长,剩余人数

聊天?

公开 or 加密

不展示过期的队伍

修改队伍信息

用户可以加入队伍(其他人,未满,未过期)

是否需要队长同意


全民制作人ikun大约 11 分钟项目实战ikun伙伴匹配系统项目实战ikun伙伴匹配系统
ikun伙伴匹配系统4

ikun伙伴匹配系统

mysql数据查询慢怎么办?

用缓存:提前把数据取出来保存好,利于存在内存里

缓存的实现:

  • redis 分布式
  • memcached 分布式
  • ehcache 单机
  • 本地缓存 Java Map
  • caffeine Java内存缓存,性能高
  • Google guava

Redis缓存预热

Spirng Data Redis

设计缓存Key:

不同用户看到的数据不同


全民制作人ikun大约 5 分钟项目实战ikun伙伴匹配系统项目实战ikun伙伴匹配系统
ikun伙伴匹配系统3

ikun伙伴匹配系统

前端开发

前端页面跳转传值

  1. Query =>url 附加参数,传递的值长度有限

搜索页传递参数:

const doSearchResult = () => {
    router.push({
        path: '/user/list',
        query: {
            tags: activeIds.value
        }
    })
}

全民制作人ikun大约 4 分钟项目实战ikun伙伴匹配系统项目实战ikun伙伴匹配系统
ikun伙伴匹配系统1

ikun伙伴匹配系统

介绍:帮助大家找到志同道合的ikun

需求分析

  1. 用户去添加标签,标签的分类(要有哪些标签,怎么把标签进行分类) 学习方向 java/c++,工作/大学
  2. 主动搜索,允许用户根据标签去搜索其他用户
    1. Redis缓存
  3. 组队
    1. 创建队伍
    2. 加入队伍
    3. 根据标签查询队伍
    4. 邀请其他人
  4. 允许用户去修改标签
  5. 推荐
    1. 相似度计算算法+本地式分布式计算

全民制作人ikun大约 5 分钟项目实战ikun伙伴匹配系统项目实战ikun伙伴匹配系统