Skip to content

An android app built with React Native, Spring Boot and MySQL providing basic functions such as posting goods, searching goods, making orders, chatting and evaluating.

Notifications You must be signed in to change notification settings

WilliamX1/passthemon

Repository files navigation

小学期项目

目录

项目简介

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

技术栈

前端: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 完成性能测试并生成测试报告。

项目成员及导师

  • 成员: 王浩天 陶昱丞 周昱宏 徐惠东
  • 助教: 原帅
  • 老师: 沈备军 任锐

About

An android app built with React Native, Spring Boot and MySQL providing basic functions such as posting goods, searching goods, making orders, chatting and evaluating.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published