- 面向校园: 仅限交大师生注册使用。
- 自由交易: 用户可以发布商品、需求、查看商品、需求,用户间可以自由聊天。
- 电商化: 包含信誉及评价系统,用户可以相互关注。
前端:React-Native、React
后端:SpringBoot
数据库:MySQL、MongoDB、Redis
中间件:Rabbitmq、scrapy
数据来源:当当网
- 针对问题: 单个Redis服务在服务器宕机时会造成单点故障,可用性低。Redis为单线程操作,无法应对高并发操作。
- 技术方案: 在Cluster和Sentinel两种技术方案中选择去中心化的Cluster模式,多个主节点读写,相对Sentinel模式能够更好地应对高并发。
- 实现效果: 在测试中主动关闭部分Redis节点,Redis仍然能够保证正常运行,实现高可用。
- 针对问题: 商品及需求页面文字及图片由用户上传,若存在非法内容或不良图片可能会导致APP被封停。且上传商品、编辑商品、上传需求、编辑需求需要调用审核API速度慢且并发小。
- 技术方案: 引入 百度云内容审核API ,对用户上传的文字信息和图片信息进行自动审核,并引入rabbitmq消息队列,建立生产者消费者模型,用户发送的待审核的信息被放入对应队列,并在消费者端进行审核。
- 实现效果: 自动审核API会运用自然语言处理和机器学习等模型对文字、图片进行非法内容识别并返回给用户是否通过审核,未通过审核的内容不予显示。
- 针对问题: 项目预期最大并发量为2000并发,服务器压力较大,应优化资源分配、避免过载。
- 技术方案: 采用Nginx负载均衡,对大量前端访问或流量进行分流,保证前端用户访问效率,减少服务器处理压力。
- 实现效果: 在性能测试中,APDEX(应用程序性能指标)得到较大提升,Requests Fail Rate 明显下降。
对于一些频繁访问的信息通过Redis进行缓存。
在定时从Redis写入数据库时保持数据一致性并防止多次写入。
从当当网上爬取全部商品信息约20万条,使用真实数据填满数据库。详见 spider-dangdang。
长连接,实现用户聊天。
通过自定义注解,配合拦截器,实现对接口的细粒度权限认证及安全保障。
通过令牌桶 + 自定义注解实现接口的总限流,通过Redis + 自定义注解实现单个用户对接口的限流。
用React编写管理员界面,配合Spring-boot-admin实现后台监控。
嵌入百度云内容审核(图片审核和文本审核)API。
完成 repository/service/controller 各层单元测试并达到类覆盖率和代码行数覆盖率双 100%。使用 JMeter 完成性能测试并生成测试报告。