介绍一下的你实习做的项目吧?
主要就是服务于考研学生培训的微服务C端项目,主要分前台和后台,其中的黄金链路就是从用户登录到购买课程再到课程观看的流程。那在这个过程中还存在一些辅助模块来提高用户的使用体验,包括问答,点赞,热门榜,积分及优惠劵模块,我只要就是负责对辅助模块的开发。
介绍一下课程模块
课程模块我印象最深的就是用户购买课程加入课表的业务,课表表只要就是关联用户和课程的关系,并且是个一对多的关系。在用户就完成付款后就会调用回调函数发送购买课程的消息,消息的主要数据就是订单号,课程集合,用户id,我们的学习服务就会监听对应的消息,在得到消息后做批量插入的操作,因为在一个订单中可能会购买多个课程,在这个过程中难点就是我们需要消息消费的幂等性问题,我们需要关闭了消费者自动确认机制,在我们消费完消息后再发送消费者确认标识最终移除消息。
哦对了,在课程模块中因为有大量的即可会使用到课程的消息,最开始的时候我们主要就是重复的去远程调用获取课程的信息但是呢效率很低,就使用了redis做缓存效果还是很好的,但是呢,每次去访问redis需要网络开销效率还是跟不上,所以我们最终就搭建了二级缓存,主要就是基于Caffaine实现的,因为Caffaine是基于jvm的就不要考虑网络开销的问题,也正是因为这个特性,所以在做数据一致的时候,我们需要使用redis的发布与订阅模块来通知所有的节点中caffaine缓存的清除操作。
你这个合并写请求的实现介绍一下?(在项目中有没有遇到难点?)
在编写学习模块中,提交观看位置的业务的优化是比较难的。在业务需求上,我们需要保证用户的续播效果且误差要在