Skip to content

Viyond/ZBook

 
 

Repository files navigation

前言

本仓库只公开了部分代码。详细项目文档建设中~~~

项目介绍

ZClub是一个为程序员提供交流沟通的社区,旨在为用户提供记录成长,讨论热点时事和技术博客,站内供分享日常记录和技术总结,同时提供即时通讯功能。

主要技术

  • SpringBoot:简化Spring应用的初始搭建以及开发过程
  • SpringCloud&SpringCloudAlibaba:基于Spring Boot实现的云原生应用开发工具
  • MyBatis-Plus:持久层框架,也依赖mybatis
  • Redis:内存做缓存
  • MySQL:关系型数据库
  • RocketMQ:消息中间件;大型分布式项目是标配;分布式事务最终一致性
  • Seata:分布式事务
  • Drools:规则引擎,计算预估费用、取消费用等等
  • XXL-JOB: 分布式定时任务调用中心,这里用来定时备份ES中的数据和进行一些聚合运算。
  • Docker&Docker Compose:容器化技术; 生产环境Redis(运维人员);快速搭建环境
  • MinIO(私有化对象存储集群):分布式文件存储 类似于OSS(公有)
  • ES:搜索引擎,用于关键词搜索文章
  • Canal:监听MySQL搭配MQ将数据增量同步到ES中

项目亮点:

  • 使用CaffeineRedis实现多级缓存预热帖子,优化热榜刷新速度,提高大约20~50QPS,结合XXL-JOB实现定期数据对齐,更新热榜。
  • 系统权限与安全模块:使用Spring Security 实现RBAC权限控制。
  • 使用Gateway配合Redis实现统一鉴权以及分布式会话共享功能,在网关层实现统一的全局异常处理。
  • Canal监听MySQL,搭配RocketMQ实现同步服务,增量往ElasticSearch同步数据,提高数据同步效率。
  • 使用ElasticSearch实现全文搜索功能,基于倒排索引和lk中文分词器,准确匹配搜搜结果。
  • 使用RocketMQ和令牌桶进行特定接口的削峰和限流,保证系统正常运行。
  • 使用布隆过滤器,过滤掉大量非法数据请求,预防缓存穿透问题,使用逻辑过期来预防热点Key访问导致缓存击穿
  • 图片与视频上传:通过策略模式整合文件存储功能,使用大文件分片上传,使得100MB文件从3000ms优化至400ms,设计并实现断点重传秒传功能
  • 即时通讯模块:研究单人与群聊,离线消息拉取方案,通过Netty与MQ实现消息的实时性传输与可靠性,保证后续集群扩展。

About

一个仿小红书的微服务项目

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages

  • Java 70.7%
  • JavaScript 20.5%
  • FreeMarker 8.5%
  • CSS 0.2%
  • Shell 0.1%
  • Dockerfile 0.0%