4-1 你们项目是如何使用XXL-JOB的
1.部署调度中心:创建定时任务或分布式任务,并设置任务的执行方式、参数、调度策略等。
2.加注解:在要执行的方法上加上@XxlJob注解,并给方法起一个名称。
3.加配置:在配置文件中添加调度中心的配置项,包括注册中心地址、执行器名称等。
4.配置执行器:在调度中心中配置一个执行器,与微服务建立连接。通常,一个执行器与一个微服务配对使用。
5.配置任务:在执行器下配置任务,即定义任务的执行时间策略。一个执行器下可以配置多个任务。
6.查看任务执行结果:配置完成后,可以执行或启动任务。随后,在调度日志中可以查看任务的执行记录、日志和报警信息,及时处理任务执行过程中的异常和错误。
4-2 说一说你的评论点赞功能是如何完成(reids版本)
评论点赞功能在我的项目中是一个独立的通用的微服务。
首先,先判断是点赞还是取消点赞。
如果是点赞,就用向redis(set类型)中保存业务id(key)和用户id(value),返回的结果是redis中数据变更的数量,如果数量为null或0,就说明给用户点过了,不能再点了,结束流程,大于0,说明没点过,点赞成功。
如果是取消点赞,直接根据业务id和用户id删除即可。返回的结果是redis中数据变更的数量,如果数量为null或0,删除失败,结束流程。大于0则删除成功。
然后,根据业务id获取redis中点赞的数量,如果这个数量是null就设置成0,然后把业务类型做key,业务id做value,数量为score向redis(zset)中保存。
最后通过XXL-JOB定时任务,向MQ投递消息(业务id,点赞数量)。哪个微服务需要用到,就用程序监听MQ,消费消息。
4-3 项目过程有没有难题(业绩)
起初,我们的评论点赞数据存储在MySQL中。每次前端发送点赞请求时,需要对数据库读写操作。由于点赞存在高并发的情况,且访问时间过长,性能更差,导致数据库压力过大的问题。因此,我们考虑添加Redis缓存来优化这个过程,具体操作如下:
将点赞记录和点赞统计信息保存在Redis缓存中。
将同步写改为异步写,并合并写请求。这意味着,当多个用户同时发送点赞请求时,这些请求会被合并成一个写请求,然后异步地写入MySQL数据库。
设置定期任务,定期将Redis中的点赞数量统计通过MQ更新到MySQL数据库中。
通过以上步骤,我们成功地利用Redis缓存来优化了评论点赞数据的存储和查询,从而更好地应对了高并发场景下的性能问题。