/passthemon

2021年暑期小学期项目-二手交易平台

Primary LanguageJavaScript

小学期项目

目录

项目简介

  • 面向校园: 仅限交大师生注册使用。
  • 自由交易: 用户可以发布商品、需求、查看商品、需求,用户间可以自由聊天。
  • 电商化: 包含信誉及评价系统,用户可以相互关注。

技术栈

前端:React-Native、React

后端:SpringBoot

数据库:MySQL、MongoDB、Redis

中间件:Rabbitmq、scrapy

数据来源:当当网

技术亮点

Redis-Cluster

  • 针对问题: 单个Redis服务在服务器宕机时会造成单点故障,可用性低。Redis为单线程操作,无法应对高并发操作。
  • 技术方案: 在Cluster和Sentinel两种技术方案中选择去中心化的Cluster模式,多个主节点读写,相对Sentinel模式能够更好地应对高并发。
  • 实现效果: 在测试中主动关闭部分Redis节点,Redis仍然能够保证正常运行,实现高可用。

内容自动审核 rabbitmq消息队列

  • 针对问题: 商品及需求页面文字及图片由用户上传,若存在非法内容或不良图片可能会导致APP被封停。且上传商品、编辑商品、上传需求、编辑需求需要调用审核API速度慢且并发小。
  • 技术方案: 引入 百度云内容审核API ,对用户上传的文字信息和图片信息进行自动审核,并引入rabbitmq消息队列,建立生产者消费者模型,用户发送的待审核的信息被放入对应队列,并在消费者端进行审核。
  • 实现效果: 自动审核API会运用自然语言处理和机器学习等模型对文字、图片进行非法内容识别并返回给用户是否通过审核,未通过审核的内容不予显示。

Nginx负载均衡

  • 针对问题: 项目预期最大并发量为2000并发,服务器压力较大,应优化资源分配、避免过载。
  • 技术方案: 采用Nginx负载均衡,对大量前端访问或流量进行分流,保证前端用户访问效率,减少服务器处理压力。
  • 实现效果: 在性能测试中,APDEX(应用程序性能指标)得到较大提升,Requests Fail Rate 明显下降。

Cache缓存

对于一些频繁访问的信息通过Redis进行缓存。

分布式锁

在定时从Redis写入数据库时保持数据一致性并防止多次写入。

当当网真实数据

从当当网上爬取全部商品信息约20万条,使用真实数据填满数据库。详见 spider-dangdang

WebSocket

长连接,实现用户聊天。

权限认证

通过自定义注解,配合拦截器,实现对接口的细粒度权限认证及安全保障。

两种限流

通过令牌桶 + 自定义注解实现接口的总限流,通过Redis + 自定义注解实现单个用户对接口的限流。

管理员界面

用React编写管理员界面,配合Spring-boot-admin实现后台监控。

图片审核和文本审核

嵌入百度云内容审核(图片审核和文本审核)API。

完善的单元测试,集成测试和性能测试

完成 repository/service/controller 各层单元测试并达到类覆盖率和代码行数覆盖率双 100%。使用 JMeter 完成性能测试并生成测试报告。

项目成员及导师